Skip to content
This repository was archived by the owner on Jul 19, 2025. It is now read-only.

Commit 7cf975c

Browse files
CjsahSkyDynamic
andauthored
perimission命令中选中的player功能实现 (#79)
* fix command * change EntityArgumentType to GameProfileArgumentType --------- Co-authored-by: SkyDynamic <tcplxw@outlook.com>
1 parent cdbc056 commit 7cf975c

2 files changed

Lines changed: 37 additions & 27 deletions

File tree

src/main/java/io/github/skydynamic/quickbackupmulti/command/PermissionCommand.java

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.github.skydynamic.quickbackupmulti.command;
22

3+
import com.mojang.authlib.GameProfile;
34
import com.mojang.brigadier.arguments.IntegerArgumentType;
45
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
56
import io.github.skydynamic.quickbackupmulti.command.permission.PermissionManager;
@@ -8,11 +9,11 @@
89
import net.minecraft.command.argument.GameProfileArgumentType;
910
import net.minecraft.server.command.CommandManager;
1011
import net.minecraft.server.command.ServerCommandSource;
11-
import net.minecraft.server.network.ServerPlayerEntity;
12+
13+
import java.util.Collection;
1214

1315
import static io.github.skydynamic.quickbackupmulti.QbmConstant.permissionManager;
1416
import static io.github.skydynamic.quickbackupmulti.i18n.Translate.tr;
15-
import static io.github.skydynamic.quickbackupmulti.utils.QbmManager.getPlayerFromCommandSource;
1617
import static net.minecraft.server.command.CommandManager.literal;
1718

1819
public class PermissionCommand {
@@ -21,39 +22,48 @@ public class PermissionCommand {
2122
.then(literal("set")
2223
.then(CommandManager.argument("player", GameProfileArgumentType.gameProfile())
2324
.then(CommandManager.argument("level", IntegerArgumentType.integer(0, 2))
24-
.executes(it -> setPermission(it.getSource(), IntegerArgumentType.getInteger(it, "level")))
25+
.executes(it -> setPermission(
26+
it.getSource(),
27+
GameProfileArgumentType.getProfileArgument(it, "player"),
28+
IntegerArgumentType.getInteger(it, "level")
29+
))
2530
)
2631
)
2732
)
2833
.then(literal("get")
2934
.then(CommandManager.argument("player", GameProfileArgumentType.gameProfile())
30-
.executes(it -> getPermission(it.getSource()))
35+
.executes(it -> getPermission(
36+
it.getSource(),
37+
GameProfileArgumentType.getProfileArgument(it, "player")
38+
))
3139
)
3240
)
3341
.then(literal("reload")
3442
.executes(it -> reloadPermission(it.getSource()))
3543
);
3644

37-
private static int setPermission(ServerCommandSource commandSource, int level) {
38-
ServerPlayerEntity player = getPlayerFromCommandSource(commandSource);
39-
permissionManager.setPermissionByPermissionLevelInt(level, player);
40-
Messenger.sendMessage(commandSource,
45+
private static int setPermission(ServerCommandSource commandSource, Collection<GameProfile> players, int level) {
46+
players.forEach(player -> {
47+
permissionManager.setPermissionByPermissionLevelInt(level, player.getName());
48+
Messenger.sendMessage(commandSource,
4149
Messenger.literal(
4250
tr("quickbackupmulti.permission.set",
43-
player.getName().getString(),
51+
player.getName(),
4452
PermissionType.getByLevelInt(level).name()))
4553
);
54+
});
4655
return 1;
4756
}
4857

49-
private static int getPermission(ServerCommandSource commandSource) {
50-
ServerPlayerEntity player = getPlayerFromCommandSource(commandSource);
51-
Messenger.sendMessage(commandSource,
52-
Messenger.literal(
53-
tr("quickbackupmulti.permission.get",
54-
player.getName().getString(),
55-
permissionManager.getPlayerPermission(player).name()))
56-
);
58+
private static int getPermission(ServerCommandSource commandSource, Collection<GameProfile> players) {
59+
players.forEach(player -> {
60+
Messenger.sendMessage(commandSource,
61+
Messenger.literal(
62+
tr("quickbackupmulti.permission.get",
63+
player.getName(),
64+
permissionManager.getPlayerPermission(player.getName()).name()))
65+
);
66+
});
5767
return 1;
5868
}
5969

src/main/java/io/github/skydynamic/quickbackupmulti/command/permission/PermissionManager.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,19 @@ public PermissionManager() {
3232
}
3333
}
3434

35-
public void setPermissionByPermissionLevelInt(int level, ServerPlayerEntity player) {
36-
this.permissionConfig.setByPermissionType(PermissionType.getByLevelInt(level), player);
35+
public void setPermissionByPermissionLevelInt(int level, String playerName) {
36+
this.permissionConfig.setByPermissionType(PermissionType.getByLevelInt(level), playerName);
3737
}
3838

39-
public void setPermissionByPermissionType(PermissionType permission, ServerPlayerEntity player) {
40-
this.permissionConfig.setByPermissionType(permission, player);
39+
public void setPermissionByPermissionType(PermissionType permission, String playerName) {
40+
this.permissionConfig.setByPermissionType(permission, playerName);
4141
}
4242

43-
public PermissionType getPlayerPermission(ServerPlayerEntity player) {
44-
return permissionConfig.perm.getOrDefault(player.getName().getString(), PermissionType.USER);
43+
public PermissionType getPlayerPermission(String name) {
44+
return permissionConfig.perm.getOrDefault(name, PermissionType.USER);
4545
}
4646

47-
public int getPlayerPermissionLevel(ServerPlayerEntity player) {
47+
public int getPlayerPermissionLevel(String player) {
4848
return getPlayerPermission(player).level;
4949
}
5050

@@ -97,7 +97,7 @@ public static boolean hasPermission(
9797
return true;
9898
} else {
9999
return source.hasPermissionLevel(mcPermission)
100-
|| permissionManager.getPlayerPermissionLevel(player) >= modPermission.level;
100+
|| permissionManager.getPlayerPermissionLevel(player.getName().getString()) >= modPermission.level;
101101
}
102102
}
103103
return true;
@@ -123,8 +123,8 @@ private static boolean getPermission(ServerCommandSource source) throws CommandS
123123

124124
static class PermissionConfig {
125125
private final Map<String, PermissionType> perm = new HashMap<>();
126-
public void setByPermissionType(PermissionType type, ServerPlayerEntity player) {
127-
perm.put(player.getName().getString(), type);
126+
public void setByPermissionType(PermissionType type, String name) {
127+
perm.put(name, type);
128128
permissionManager.savePermissionToFile();
129129
}
130130
}

0 commit comments

Comments
 (0)