From 2fc2474f896c9e6ad6828dd5dee119badebdb13f Mon Sep 17 00:00:00 2001 From: Carm Date: Sun, 2 Oct 2022 15:44:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(cmd):=20=E4=BD=BF=E7=94=A8=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E4=B8=BA=E7=8E=A9=E5=AE=B6=E6=9B=B4=E6=8D=A2=E7=A7=B0?= =?UTF-8?q?=E5=8F=B7=20(#37)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(cmd): 使用命令为玩家更换称号 #35 --- pom.xml | 4 +- .../userprefix/command/AdminCommand.java | 7 +-- .../command/{sub => admin}/ListCommand.java | 2 +- .../command/{sub => admin}/ReloadCommand.java | 2 +- .../userprefix/command/admin/SetCommand.java | 54 +++++++++++++++++++ .../userprefix/conf/PluginMessages.java | 23 ++++++++ 6 files changed, 85 insertions(+), 7 deletions(-) rename src/main/java/cc/carm/plugin/userprefix/command/{sub => admin}/ListCommand.java (95%) rename src/main/java/cc/carm/plugin/userprefix/command/{sub => admin}/ReloadCommand.java (97%) create mode 100644 src/main/java/cc/carm/plugin/userprefix/command/admin/SetCommand.java 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 {