From 092a1127aa996fa477cd14152e7480f89e96b133 Mon Sep 17 00:00:00 2001 From: CarmJos Date: Sun, 13 Mar 2022 14:14:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 7 +++ .../java/cc/carm/plugin/commanditem/Main.java | 13 +++- .../commanditem/command/CMDItemsCommand.java | 61 ++++++++++--------- .../command/ItemSettingsAdapter.java | 14 +++++ .../command/ItemSettingsCompleter.java | 18 ++++++ .../plugin/commanditem/item/ItemSettings.java | 2 +- 6 files changed, 82 insertions(+), 33 deletions(-) create mode 100644 src/main/java/cc/carm/plugin/commanditem/command/ItemSettingsAdapter.java create mode 100644 src/main/java/cc/carm/plugin/commanditem/command/ItemSettingsCompleter.java diff --git a/pom.xml b/pom.xml index 66dfc32..13ad780 100644 --- a/pom.xml +++ b/pom.xml @@ -111,6 +111,13 @@ true + + com.github.SaiintBrisson.command-framework + bukkit + 1.3.0 + compile + + org.spigotmc spigot-api diff --git a/src/main/java/cc/carm/plugin/commanditem/Main.java b/src/main/java/cc/carm/plugin/commanditem/Main.java index efbbdf7..3516582 100644 --- a/src/main/java/cc/carm/plugin/commanditem/Main.java +++ b/src/main/java/cc/carm/plugin/commanditem/Main.java @@ -3,12 +3,17 @@ package cc.carm.plugin.commanditem; import cc.carm.lib.easyplugin.EasyPlugin; import cc.carm.lib.easyplugin.i18n.EasyPluginMessageProvider; import cc.carm.plugin.commanditem.command.CMDItemsCommand; +import cc.carm.plugin.commanditem.command.ItemSettingsAdapter; +import cc.carm.plugin.commanditem.command.ItemSettingsCompleter; import cc.carm.plugin.commanditem.configuration.PluginConfig; import cc.carm.plugin.commanditem.hooker.GHUpdateChecker; +import cc.carm.plugin.commanditem.item.ItemSettings; import cc.carm.plugin.commanditem.listener.ItemListener; import cc.carm.plugin.commanditem.manager.ConfigManager; import cc.carm.plugin.commanditem.manager.ItemsManager; import cc.carm.plugin.commanditem.util.JarResourceUtils; +import me.saiintbrisson.bukkit.command.BukkitFrame; +import me.saiintbrisson.bukkit.command.executor.BukkitSchedulerExecutor; import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; @@ -44,14 +49,18 @@ public class Main extends EasyPlugin { this.itemsManager.initialize(); info("注册指令..."); - registerCommand("CommandItem", new CMDItemsCommand()); + BukkitFrame frame = new BukkitFrame(this); + frame.setExecutor(new BukkitSchedulerExecutor(this)); + frame.registerAdapter(ItemSettings.class, new ItemSettingsAdapter()); + frame.registerCompleter("settings", new ItemSettingsCompleter()); + frame.registerCommands(new CMDItemsCommand()); info("注册监听器..."); regListener(new ItemListener()); if (PluginConfig.METRICS.get()) { info("启用统计数据..."); - new Metrics(this, 14459); + new Metrics(this, 14560); } if (PluginConfig.CHECK_UPDATE.get()) { diff --git a/src/main/java/cc/carm/plugin/commanditem/command/CMDItemsCommand.java b/src/main/java/cc/carm/plugin/commanditem/command/CMDItemsCommand.java index e95a830..e0cee8e 100644 --- a/src/main/java/cc/carm/plugin/commanditem/command/CMDItemsCommand.java +++ b/src/main/java/cc/carm/plugin/commanditem/command/CMDItemsCommand.java @@ -1,43 +1,44 @@ package cc.carm.plugin.commanditem.command; -import cc.carm.plugin.commanditem.CommandItemAPI; import cc.carm.plugin.commanditem.item.ItemSettings; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; +import me.saiintbrisson.minecraft.command.annotation.Command; +import me.saiintbrisson.minecraft.command.annotation.Completer; +import me.saiintbrisson.minecraft.command.command.Context; +import me.saiintbrisson.minecraft.command.target.CommandTarget; +import org.bukkit.Material; import org.bukkit.command.CommandSender; -import org.bukkit.command.TabCompleter; import org.bukkit.entity.Player; -import org.bukkit.util.StringUtil; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.bukkit.inventory.ItemStack; -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; -public class CMDItemsCommand implements CommandExecutor, TabCompleter { +public class CMDItemsCommand { - @Override - public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, - @NotNull String alias, @NotNull String[] args) { - if (sender instanceof Player) { - Player player = (Player) sender; - ItemSettings settings = CommandItemAPI.getItemsManager().listItemSettings().values().stream().findFirst().orElse(null); - if (settings != null) { - player.getInventory().addItem(settings.generateItem(1)); - } + @Command( + name = "CommandItem", aliases = "cmdItem", + description = "CommandItem的主要指令。", + usage = "/CommandItem help", + permission = "CommandItem.admin" + ) + public void main(Context sender) { + help(sender); + } + + @Command(name = "CommandItem.help") + public void help(Context sender) { + sender.getSender().sendMessage("§a§lCommandItem §f§l指令帮助"); + } + + @Command(name = "CommandItem.apply", target = CommandTarget.PLAYER) + @Completer(name = "settings") + public void apply(Context sender, + ItemSettings settings) { + Player player = sender.getSender(); + if (player.getInventory().getItemInMainHand().getType() != Material.AIR) { + ItemStack applied = settings.applyItem(player.getInventory().getItemInMainHand()); + player.getInventory().setItemInMainHand(applied); } - return true; + player.sendMessage("应用成功"); } - @Nullable - @Override - public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, - @NotNull String alias, @NotNull String[] args) { - List allCompletes = new ArrayList<>(); - return allCompletes.stream() - .filter(s -> StringUtil.startsWithIgnoreCase(s, args[args.length - 1])) - .limit(10).collect(Collectors.toList()); - } } diff --git a/src/main/java/cc/carm/plugin/commanditem/command/ItemSettingsAdapter.java b/src/main/java/cc/carm/plugin/commanditem/command/ItemSettingsAdapter.java new file mode 100644 index 0000000..6ebbf65 --- /dev/null +++ b/src/main/java/cc/carm/plugin/commanditem/command/ItemSettingsAdapter.java @@ -0,0 +1,14 @@ +package cc.carm.plugin.commanditem.command; + +import cc.carm.plugin.commanditem.CommandItemAPI; +import cc.carm.plugin.commanditem.item.ItemSettings; +import me.saiintbrisson.minecraft.command.argument.TypeAdapter; + +public class ItemSettingsAdapter implements TypeAdapter { + + @Override + public ItemSettings convert(String s) { + return CommandItemAPI.getItemsManager().getItemSettings(s); + } + +} diff --git a/src/main/java/cc/carm/plugin/commanditem/command/ItemSettingsCompleter.java b/src/main/java/cc/carm/plugin/commanditem/command/ItemSettingsCompleter.java new file mode 100644 index 0000000..fa6fc76 --- /dev/null +++ b/src/main/java/cc/carm/plugin/commanditem/command/ItemSettingsCompleter.java @@ -0,0 +1,18 @@ +package cc.carm.plugin.commanditem.command; + +import cc.carm.plugin.commanditem.CommandItemAPI; +import me.saiintbrisson.minecraft.command.command.Context; +import me.saiintbrisson.minecraft.command.executor.CompleterExecutor; +import org.bukkit.command.CommandSender; + +import java.util.ArrayList; +import java.util.List; + +public class ItemSettingsCompleter implements CompleterExecutor { + + @Override + public List execute(Context context) { + return new ArrayList<>(CommandItemAPI.getItemsManager().listItemSettings().keySet()); + } + +} diff --git a/src/main/java/cc/carm/plugin/commanditem/item/ItemSettings.java b/src/main/java/cc/carm/plugin/commanditem/item/ItemSettings.java index d0848df..e5bf6be 100644 --- a/src/main/java/cc/carm/plugin/commanditem/item/ItemSettings.java +++ b/src/main/java/cc/carm/plugin/commanditem/item/ItemSettings.java @@ -2,6 +2,7 @@ package cc.carm.plugin.commanditem.item; import cc.carm.plugin.commanditem.CommandItemAPI; import cc.carm.plugin.commanditem.manager.ConfigManager; +import me.saiintbrisson.minecraft.command.argument.TypeAdapter; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; @@ -109,5 +110,4 @@ public class ItemSettings { ConfigManager.readListMap(config.getConfigurationSection("actions"), ItemActionGroup::read) ); } - }