From 64ced6b91c1be0c01478c6414c4955d88d732400 Mon Sep 17 00:00:00 2001 From: MiniDay <372403923@qq.com> Date: Sun, 1 Jan 2023 14:07:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(bukkit):=20=E4=B8=80=E4=BA=9B=E6=96=B0?= =?UTF-8?q?=E7=9A=84=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../command/core/ParentCoreCommand.java | 1 + .../bukkit/command/core/ReloadCommand.java | 49 ++++++++++ .../bukkit/command/lore/LoreFlagCommand.java | 91 +++++++++++++++++++ .../command/lore/ParentLoreCommand.java | 1 + .../core/bukkit/constant/CoreMessage.java | 3 + .../plugin/core/bukkit/page/PageManager.java | 2 +- 6 files changed, 146 insertions(+), 1 deletion(-) create mode 100644 hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/ReloadCommand.java create mode 100644 hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreFlagCommand.java diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/ParentCoreCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/ParentCoreCommand.java index 655cf3d..dc87e2f 100644 --- a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/ParentCoreCommand.java +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/ParentCoreCommand.java @@ -12,5 +12,6 @@ public class ParentCoreCommand extends ParentCommand { addChildCommand(GCCommand.INSTANCE); addChildCommand(YamlCommand.INSTANCE); addChildCommand(InfoModeCommand.INSTANCE); + addChildCommand(ReloadCommand.INSTANCE); } } diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/ReloadCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/ReloadCommand.java new file mode 100644 index 0000000..9d1a602 --- /dev/null +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/ReloadCommand.java @@ -0,0 +1,49 @@ +package cn.hamster3.mc.plugin.core.bukkit.command.core; + +import cn.hamster3.mc.plugin.core.bukkit.command.ChildCommand; +import cn.hamster3.mc.plugin.core.bukkit.page.PageManager; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.jetbrains.annotations.NotNull; + +import java.util.Collections; +import java.util.List; + +public class ReloadCommand extends ChildCommand { + public static final ReloadCommand INSTANCE = new ReloadCommand(); + + private ReloadCommand() { + } + + @Override + public @NotNull String getName() { + return "reload"; + } + + @Override + public @NotNull String getUsage() { + return "reload"; + } + + @Override + public boolean hasPermission(@NotNull CommandSender sender) { + return true; + } + + @Override + public @NotNull String getDescription() { + return "重载页面配置文件"; + } + + @Override + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + PageManager.PAGE_CONFIG.clear(); + sender.sendMessage("§a已重载页面配置文件."); + return true; + } + + @Override + public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) { + return Collections.emptyList(); + } +} diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreFlagCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreFlagCommand.java new file mode 100644 index 0000000..73b195b --- /dev/null +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreFlagCommand.java @@ -0,0 +1,91 @@ +package cn.hamster3.mc.plugin.core.bukkit.command.lore; + +import cn.hamster3.mc.plugin.core.bukkit.command.ChildCommand; +import cn.hamster3.mc.plugin.core.bukkit.constant.CoreMessage; +import cn.hamster3.mc.plugin.core.bukkit.util.BukkitUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.NotNull; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +public class LoreFlagCommand extends ChildCommand { + public static final LoreFlagCommand INSTANCE = new LoreFlagCommand(); + + private LoreFlagCommand() { + } + + @Override + public @NotNull String getName() { + return "flag"; + } + + @Override + public @NotNull String getUsage() { + return "flag "; + } + + @Override + public boolean hasPermission(@NotNull CommandSender sender) { + return true; + } + + @Override + public @NotNull String getDescription() { + return "为手持物品添加一条 lore"; + } + + @SuppressWarnings("deprecation") + @Override + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + if (args.length < 1) { + CoreMessage.COMMAND_LORE_EMPTY_INPUT.show(sender); + return true; + } + if (!(sender instanceof Player)) { + CoreMessage.COMMAND_MUST_USED_BY_PLAYER.show(sender); + return true; + } + Player player = (Player) sender; + ItemStack stack = player.getItemInHand(); + if (BukkitUtils.isEmptyItemStack(stack)) { + CoreMessage.COMMAND_LORE_HAND_EMPTY.show(player); + return true; + } + ItemFlag flag; + try { + flag = ItemFlag.valueOf(args[0]); + } catch (IllegalArgumentException e) { + CoreMessage.COMMAND_LORE_FLAG_SET_INPUT_ERROR.show(player); + return true; + } + + ItemMeta meta = stack.getItemMeta(); + if (meta != null) { + if (meta.hasItemFlag(flag)) { + meta.removeItemFlags(flag); + CoreMessage.COMMAND_LORE_FLAG_REMOVE_SUCCESS.show(player); + } else { + meta.addItemFlags(flag); + CoreMessage.COMMAND_LORE_FLAG_SET_SUCCESS.show(player); + } + } + stack.setItemMeta(meta); + + return true; + } + + @Override + public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) { + return Arrays.stream(ItemFlag.values()) + .map(Enum::name) + .filter(o -> o.startsWith(args[0].toUpperCase())) + .collect(Collectors.toList()); + } +} diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/ParentLoreCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/ParentLoreCommand.java index e40ba99..1f36e48 100644 --- a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/ParentLoreCommand.java +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/ParentLoreCommand.java @@ -18,6 +18,7 @@ public final class ParentLoreCommand extends ParentCommand { addChildCommand(LoreClearCommand.INSTANCE); addChildCommand(LoreNameCommand.INSTANCE); addChildCommand(LoreCustomModelDataCommand.INSTANCE); + addChildCommand(LoreFlagCommand.INSTANCE); } @Override diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/constant/CoreMessage.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/constant/CoreMessage.java index bbf28e7..23c0719 100644 --- a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/constant/CoreMessage.java +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/constant/CoreMessage.java @@ -24,6 +24,9 @@ public enum CoreMessage { COMMAND_LORE_CMD_CLEAR_SUCCESS, COMMAND_LORE_CMD_SET_SUCCESS, COMMAND_LORE_CMD_SET_INPUT_ERROR, + COMMAND_LORE_FLAG_SET_SUCCESS, + COMMAND_LORE_FLAG_REMOVE_SUCCESS, + COMMAND_LORE_FLAG_SET_INPUT_ERROR, COMMAND_LORE_NAME_SUCCESS, COMMAND_LORE_REMOVE_NOT_INPUT_NUMBER, COMMAND_LORE_REMOVE_INPUT_NUMBER_ERROR, diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/PageManager.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/PageManager.java index ec899e7..db50001 100644 --- a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/PageManager.java +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/PageManager.java @@ -14,7 +14,7 @@ import java.nio.file.StandardCopyOption; import java.util.HashMap; public class PageManager { - private static final HashMap PAGE_CONFIG = new HashMap<>(); + public static final HashMap PAGE_CONFIG = new HashMap<>(); @NotNull public static PageConfig getPageConfig(@NotNull Class clazz) {