diff --git a/pom.xml b/pom.xml index 4ebe23b..95618ad 100644 --- a/pom.xml +++ b/pom.xml @@ -13,13 +13,13 @@ UTF-8 UTF-8 - 1.4.14 + 1.4.15 2.1.0 cc.carm.plugin userprefix - 3.0.2 + 3.0.3 UserPrefix 轻便、高效、实时的用户前缀系统。 diff --git a/src/main/java/cc/carm/plugin/userprefix/command/AdminCommand.java b/src/main/java/cc/carm/plugin/userprefix/command/AdminCommand.java index c245ae1..7c7ad2c 100644 --- a/src/main/java/cc/carm/plugin/userprefix/command/AdminCommand.java +++ b/src/main/java/cc/carm/plugin/userprefix/command/AdminCommand.java @@ -1,8 +1,9 @@ package cc.carm.plugin.userprefix.command; import cc.carm.lib.easyplugin.command.CommandHandler; -import cc.carm.plugin.userprefix.command.sub.ListCommand; -import cc.carm.plugin.userprefix.command.sub.ReloadCommand; +import cc.carm.plugin.userprefix.command.admin.ListCommand; +import cc.carm.plugin.userprefix.command.admin.ReloadCommand; +import cc.carm.plugin.userprefix.command.admin.SetCommand; import cc.carm.plugin.userprefix.conf.PluginMessages; import org.bukkit.command.CommandSender; import org.bukkit.plugin.java.JavaPlugin; @@ -14,8 +15,8 @@ public class AdminCommand extends CommandHandler { public AdminCommand(@NotNull JavaPlugin plugin) { super(plugin); registerSubCommand(new ListCommand(this, "list", "l")); + registerSubCommand(new SetCommand(this, "set")); registerSubCommand(new ReloadCommand(this, "reload")); - } @Override diff --git a/src/main/java/cc/carm/plugin/userprefix/command/sub/ListCommand.java b/src/main/java/cc/carm/plugin/userprefix/command/admin/ListCommand.java similarity index 95% rename from src/main/java/cc/carm/plugin/userprefix/command/sub/ListCommand.java rename to src/main/java/cc/carm/plugin/userprefix/command/admin/ListCommand.java index 96092e8..c614639 100644 --- a/src/main/java/cc/carm/plugin/userprefix/command/sub/ListCommand.java +++ b/src/main/java/cc/carm/plugin/userprefix/command/admin/ListCommand.java @@ -1,4 +1,4 @@ -package cc.carm.plugin.userprefix.command.sub; +package cc.carm.plugin.userprefix.command.admin; import cc.carm.lib.easyplugin.command.SubCommand; import cc.carm.plugin.userprefix.UserPrefixAPI; diff --git a/src/main/java/cc/carm/plugin/userprefix/command/sub/ReloadCommand.java b/src/main/java/cc/carm/plugin/userprefix/command/admin/ReloadCommand.java similarity index 97% rename from src/main/java/cc/carm/plugin/userprefix/command/sub/ReloadCommand.java rename to src/main/java/cc/carm/plugin/userprefix/command/admin/ReloadCommand.java index 3ef9d07..2ec1407 100644 --- a/src/main/java/cc/carm/plugin/userprefix/command/sub/ReloadCommand.java +++ b/src/main/java/cc/carm/plugin/userprefix/command/admin/ReloadCommand.java @@ -1,4 +1,4 @@ -package cc.carm.plugin.userprefix.command.sub; +package cc.carm.plugin.userprefix.command.admin; import cc.carm.lib.easyplugin.command.SubCommand; import cc.carm.plugin.userprefix.UserPrefixAPI; diff --git a/src/main/java/cc/carm/plugin/userprefix/command/admin/SetCommand.java b/src/main/java/cc/carm/plugin/userprefix/command/admin/SetCommand.java new file mode 100644 index 0000000..a68da77 --- /dev/null +++ b/src/main/java/cc/carm/plugin/userprefix/command/admin/SetCommand.java @@ -0,0 +1,54 @@ +package cc.carm.plugin.userprefix.command.admin; + +import cc.carm.lib.easyplugin.command.SubCommand; +import cc.carm.plugin.userprefix.UserPrefixAPI; +import cc.carm.plugin.userprefix.command.AdminCommand; +import cc.carm.plugin.userprefix.conf.PluginMessages; +import cc.carm.plugin.userprefix.conf.prefix.PrefixConfig; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.jetbrains.annotations.NotNull; + +public class SetCommand extends SubCommand { + + public SetCommand(@NotNull AdminCommand parent, String name, String... aliases) { + super(parent, name, aliases); + } + + @Override + public Void execute(JavaPlugin plugin, CommandSender sender, String[] args) { + if (args.length < 2) return getParent().noArgs(sender); + + Player target = Bukkit.getPlayer(args[0]); + if (target == null) { + PluginMessages.NOT_ONLINE.send(sender, args[0]); + return null; + } + + + PrefixConfig prefixConfig; + String prefixInput = args[1]; + if (prefixInput.equalsIgnoreCase("default")) { + prefixConfig = UserPrefixAPI.getDefaultPrefix(); + } else { + prefixConfig = UserPrefixAPI.getPrefixManager().getPrefix(prefixInput); + } + + if (prefixConfig == null) { + PluginMessages.SET.PREFIX_NOT_FOUND.send(sender, prefixInput); + return null; + } + + if (!prefixConfig.checkPermission(target)) { + PluginMessages.SET.NO_PERM.send(sender, target.getName(), prefixConfig.getName()); + return null; + } + + UserPrefixAPI.getUserManager().setPrefix(target, prefixConfig, true); + PluginMessages.SET.SUCCESS.send(sender, target.getName(), prefixConfig.getName()); + return null; + } + +} diff --git a/src/main/java/cc/carm/plugin/userprefix/conf/PluginMessages.java b/src/main/java/cc/carm/plugin/userprefix/conf/PluginMessages.java index 6533dce..7a22b3a 100644 --- a/src/main/java/cc/carm/plugin/userprefix/conf/PluginMessages.java +++ b/src/main/java/cc/carm/plugin/userprefix/conf/PluginMessages.java @@ -16,6 +16,9 @@ public class PluginMessages extends ConfigurationRoot { "&3&l用户前缀系统 &f帮助", "&8# &f/upa list", "&8- &7查看当前前缀列表。", + "&8# &f/upa set &b<玩家ID> &b<前缀ID>", + "&8- &7为玩家设定指定前缀。", + "&8- &7&o注意:玩家必须拥有指定前缀的权限。", "&8# &f/upa reload", "&8- &7重载前缀配置。" ).build(); @@ -26,6 +29,9 @@ public class PluginMessages extends ConfigurationRoot { } + public static ConfiguredMessageList NOT_ONLINE = ConfiguredMessageList.asStrings() + .defaults("&7玩家 &b%(player) &7并不在线。") + .params("player").build(); public static ConfiguredMessageList SELECTED = ConfiguredMessageList.asStrings() .defaults("&7您选择了 &f%(name) &7作为当前显示的前缀。") @@ -52,6 +58,23 @@ public class PluginMessages extends ConfigurationRoot { .params("error").build(); } + public static final class SET { + + public static ConfiguredMessageList SUCCESS = ConfiguredMessageList.asStrings() + .defaults("&a&l设置成功!&7成功设定玩家 &b%(player) &f的前缀为 &r%(prefix) &f。") + .params("player", "prefix").build(); + + public static ConfiguredMessageList PREFIX_NOT_FOUND = ConfiguredMessageList.asStrings() + .defaults("&c&l无法设置!&7不存在ID为 &b%(prefix) &7的前缀。") + .params("prefix").build(); + + public static ConfiguredMessageList NO_PERM = ConfiguredMessageList.asStrings() + .defaults("&c&l无法设置!&7玩家 &b%(player) &7并没有前缀 &r%(prefix) &7的前缀。") + .params("player", "prefix") + .build(); + + } + @HeaderComment("管理员使用的 “/upa list” 指令的格式") public static final class LIST {