diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/HamsterCorePlugin.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/HamsterCorePlugin.java index 22595e8..af06493 100644 --- a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/HamsterCorePlugin.java +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/HamsterCorePlugin.java @@ -4,6 +4,7 @@ import cn.hamster3.mc.plugin.core.bukkit.api.CoreBukkitAPI; import cn.hamster3.mc.plugin.core.bukkit.command.ParentCommand; import cn.hamster3.mc.plugin.core.bukkit.command.debug.BlockInfoCommand; import cn.hamster3.mc.plugin.core.bukkit.command.debug.YamlCommand; +import cn.hamster3.mc.plugin.core.bukkit.command.lore.ParentLoreCommand; import cn.hamster3.mc.plugin.core.bukkit.hook.PointAPI; import cn.hamster3.mc.plugin.core.bukkit.hook.VaultAPI; import cn.hamster3.mc.plugin.core.bukkit.listener.CallbackListener; @@ -19,7 +20,7 @@ import java.util.List; import java.util.logging.Logger; public class HamsterCorePlugin extends JavaPlugin { - private static final ParentCommand COMMAND_EXECUTOR = new ParentCommand("core"); + public static final ParentCommand COMMAND_EXECUTOR = new ParentCommand("core"); private static HamsterCorePlugin instance; public static HamsterCorePlugin getInstance() { @@ -56,6 +57,9 @@ public class HamsterCorePlugin extends JavaPlugin { logger.info("已添加指令: " + BlockInfoCommand.INSTANCE.getName() + " ."); COMMAND_EXECUTOR.addChildCommand(YamlCommand.INSTANCE); logger.info("已添加指令: " + YamlCommand.INSTANCE.getName() + " ."); + COMMAND_EXECUTOR.addChildCommand(ParentLoreCommand.INSTANCE); + logger.info("已添加指令: " + ParentLoreCommand.INSTANCE.getName() + " ."); + long time = System.currentTimeMillis() - start; logger.info("仓鼠核心已启动,总计耗时 " + time + " ms."); } diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/ChildCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/ChildCommand.java index abf56c0..816fdec 100644 --- a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/ChildCommand.java +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/ChildCommand.java @@ -1,8 +1,8 @@ package cn.hamster3.mc.plugin.core.bukkit.command; +import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public abstract class ChildCommand implements TabExecutor { @NotNull @@ -11,8 +11,7 @@ public abstract class ChildCommand implements TabExecutor { @NotNull public abstract String getUsage(); - @Nullable - public abstract String getPermission(); + public abstract boolean hasPermission(@NotNull CommandSender sender); @NotNull public abstract String getDescription(); diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/ParentCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/ParentCommand.java index a4b4f16..e833154 100644 --- a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/ParentCommand.java +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/ParentCommand.java @@ -3,17 +3,14 @@ package cn.hamster3.mc.plugin.core.bukkit.command; import cn.hamster3.mc.plugin.core.bukkit.constant.CoreMessage; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.bukkit.command.TabExecutor; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; @SuppressWarnings("unused") -public class ParentCommand implements TabExecutor { +public class ParentCommand extends ChildCommand { @NotNull private final String name; @Nullable @@ -33,6 +30,11 @@ public class ParentCommand implements TabExecutor { childCommands = new ArrayList<>(); } + @Override + public @NotNull String getName() { + return name; + } + @NotNull public String getUsage() { if (parent == null) { @@ -41,30 +43,67 @@ public class ParentCommand implements TabExecutor { return parent.getUsage() + " " + name; } + @Override + public boolean hasPermission(@NotNull CommandSender sender) { + return true; + } + + @Override + public @NotNull String getDescription() { + return ""; + } + @NotNull public List getChildCommands() { return childCommands; } + @NotNull + public List getEndChildCommands() { + ArrayList list = new ArrayList<>(); + for (ChildCommand command : childCommands) { + if (command instanceof ParentCommand) { + list.addAll(((ParentCommand) command).getEndChildCommands()); + } else { + list.add(command); + } + } + return list; + } + public void addChildCommand(@NotNull ChildCommand command) { childCommands.add(command); } + public Map getCommandHelp(CommandSender sender) { + HashMap map = new HashMap<>(); + for (ChildCommand child : childCommands) { + if (!child.hasPermission(sender)) { + continue; + } + if (child instanceof ParentCommand) { + Map childMap = ((ParentCommand) child).getCommandHelp(sender); + map.putAll(childMap); + continue; + } + map.put(getUsage() + " " + child.getUsage(), child.getDescription()); + } + return map; + } + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args.length == 0) { sender.sendMessage("§e==================== [" + name + "使用帮助] ===================="); - int maxLength = childCommands.stream() - .filter(o -> o.getPermission() == null || sender.hasPermission(o.getPermission())) - .map(o -> o.getUsage().length()) + Map helpMap = getCommandHelp(sender); + int maxLength = helpMap.keySet().stream() + .map(String::length) .max(Integer::compareTo) .orElse(-1); - for (ChildCommand child : childCommands) { - String permission = child.getPermission(); - if (permission != null && !sender.hasPermission(permission)) { - continue; - } - sender.sendMessage(String.format("§a%s %-" + maxLength + "s - %s", getUsage(), child.getUsage(), child.getDescription())); + ArrayList> list = new ArrayList<>(helpMap.entrySet()); + list.sort(Map.Entry.comparingByKey()); + for (Map.Entry entry : list) { + sender.sendMessage(String.format("§a%-" + maxLength + "s - %s", entry.getKey(), entry.getValue())); } return true; } @@ -79,6 +118,11 @@ public class ParentCommand implements TabExecutor { @Override public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + if (args.length == 0) { + return childCommands.stream() + .map(ChildCommand::getName) + .collect(Collectors.toList()); + } for (ChildCommand child : childCommands) { if (args[0].equalsIgnoreCase(child.getName())) { return child.onTabComplete(sender, command, alias, Arrays.copyOfRange(args, 1, args.length)); diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/debug/BlockInfoCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/debug/BlockInfoCommand.java index 72be47c..8f01ef5 100644 --- a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/debug/BlockInfoCommand.java +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/debug/BlockInfoCommand.java @@ -7,7 +7,6 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.UUID; @@ -30,8 +29,8 @@ public class BlockInfoCommand extends ChildCommand { } @Override - public @Nullable String getPermission() { - return null; + public boolean hasPermission(@NotNull CommandSender sender) { + return true; } @Override diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/debug/YamlCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/debug/YamlCommand.java index a9ac15b..084dd7f 100644 --- a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/debug/YamlCommand.java +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/debug/YamlCommand.java @@ -14,7 +14,6 @@ import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.io.File; import java.io.IOException; @@ -39,8 +38,8 @@ public class YamlCommand extends ChildCommand { } @Override - public @Nullable String getPermission() { - return null; + public boolean hasPermission(@NotNull CommandSender sender) { + return true; } @Override diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreAddCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreAddCommand.java new file mode 100644 index 0000000..dd546f8 --- /dev/null +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreAddCommand.java @@ -0,0 +1,77 @@ +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.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public class LoreAddCommand extends ChildCommand { + public static final LoreAddCommand INSTANCE = new LoreAddCommand(); + + private LoreAddCommand() { + } + + @Override + public @NotNull String getName() { + return "add"; + } + + @Override + public @NotNull String getUsage() { + return "add "; + } + + @Override + public boolean hasPermission(@NotNull CommandSender sender) { + return true; + } + + @Override + public @NotNull String getDescription() { + return "为手持物品添加一条 lore"; + } + + @SuppressWarnings("deprecation") + @Override + public boolean onCommand(CommandSender sender, Command command, 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; + } + ItemMeta meta = stack.getItemMeta(); + if (meta != null) { + List lore = meta.getLore(); + if (lore == null) { + lore = new ArrayList<>(); + } + lore.add(String.join(" ", args)); + meta.setLore(lore); + } + stack.setItemMeta(meta); + CoreMessage.COMMAND_LORE_ADD_SUCCESS.show(player); + return true; + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + return null; + } +} diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreClearCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreClearCommand.java new file mode 100644 index 0000000..d719e58 --- /dev/null +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreClearCommand.java @@ -0,0 +1,73 @@ +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.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public class LoreClearCommand extends ChildCommand { + public static final LoreClearCommand INSTANCE = new LoreClearCommand(); + + private LoreClearCommand() { + } + + @Override + public @NotNull String getName() { + return "clear"; + } + + @Override + public @NotNull String getUsage() { + return "clear"; + } + + @Override + public boolean hasPermission(@NotNull CommandSender sender) { + return true; + } + + @Override + public @NotNull String getDescription() { + return "清除手持物品的所有 lore"; + } + + @SuppressWarnings("deprecation") + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + 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; + } + ItemMeta meta = stack.getItemMeta(); + if (meta != null) { + List lore = meta.getLore(); + if (lore == null || lore.isEmpty()) { + CoreMessage.COMMAND_LORE_CLEAR_NOTHING.show(player); + return true; + } + meta.setLore(new ArrayList<>()); + } + stack.setItemMeta(meta); + CoreMessage.COMMAND_LORE_CLEAR_SUCCESS.show(player); + return true; + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + return null; + } +} diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreNameCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreNameCommand.java new file mode 100644 index 0000000..a6f3daf --- /dev/null +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreNameCommand.java @@ -0,0 +1,71 @@ +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.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class LoreNameCommand extends ChildCommand { + public static final LoreNameCommand INSTANCE = new LoreNameCommand(); + + private LoreNameCommand() { + } + + @Override + public @NotNull String getName() { + return "name"; + } + + @Override + public @NotNull String getUsage() { + return "name "; + } + + @Override + public boolean hasPermission(@NotNull CommandSender sender) { + return true; + } + + @Override + public @NotNull String getDescription() { + return "更改手持物品的显示名称"; + } + + @SuppressWarnings("deprecation") + @Override + public boolean onCommand(CommandSender sender, Command command, 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; + } + ItemMeta meta = stack.getItemMeta(); + if (meta != null) { + meta.setDisplayName(String.join(" ", args)); + } + stack.setItemMeta(meta); + CoreMessage.COMMAND_LORE_NAME_SUCCESS.show(player); + return true; + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + return null; + } +} diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreRemoveCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreRemoveCommand.java new file mode 100644 index 0000000..0251c51 --- /dev/null +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreRemoveCommand.java @@ -0,0 +1,86 @@ +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.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public class LoreRemoveCommand extends ChildCommand { + public static final LoreRemoveCommand INSTANCE = new LoreRemoveCommand(); + + private LoreRemoveCommand() { + } + + @Override + public @NotNull String getName() { + return "remove"; + } + + @Override + public @NotNull String getUsage() { + return "remove "; + } + + @Override + public boolean hasPermission(@NotNull CommandSender sender) { + return true; + } + + @Override + public @NotNull String getDescription() { + return "为手持物品删除一条 lore"; + } + + @SuppressWarnings("deprecation") + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (args.length < 1) { + CoreMessage.COMMAND_LORE_REMOVE_NOT_INPUT_NUMBER.show(sender); + return true; + } + if (!(sender instanceof Player)) { + CoreMessage.COMMAND_MUST_USED_BY_PLAYER.show(sender); + return true; + } + int i = Integer.parseInt(args[0]); + if (i <= 0) { + CoreMessage.COMMAND_LORE_REMOVE_NOT_INPUT_NUMBER_ERROR.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; + } + ItemMeta meta = stack.getItemMeta(); + if (meta != null) { + List lore = meta.getLore(); + if (lore == null) { + lore = new ArrayList<>(); + } + if (lore.size() < i) { + CoreMessage.COMMAND_LORE_REMOVE_INDEX_OUT_OF_RANGE.show(player); + return true; + } + lore.remove(i - 1); + meta.setLore(lore); + } + stack.setItemMeta(meta); + CoreMessage.COMMAND_LORE_REMOVE_SUCCESS.show(player); + return true; + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + return null; + } +} diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreSetCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreSetCommand.java new file mode 100644 index 0000000..33c7336 --- /dev/null +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/LoreSetCommand.java @@ -0,0 +1,92 @@ +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.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class LoreSetCommand extends ChildCommand { + public static final LoreSetCommand INSTANCE = new LoreSetCommand(); + + private LoreSetCommand() { + } + + @Override + public @NotNull String getName() { + return "set"; + } + + @Override + public @NotNull String getUsage() { + return "set "; + } + + @Override + public boolean hasPermission(@NotNull CommandSender sender) { + return true; + } + + @Override + public @NotNull String getDescription() { + return "设置指定行数的 lore"; + } + + @SuppressWarnings("deprecation") + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (args.length < 1) { + CoreMessage.COMMAND_LORE_SET_NOT_INPUT_NUMBER.show(sender); + return true; + } + if (args.length < 2) { + CoreMessage.COMMAND_LORE_SET_NOT_INPUT_TEXT.show(sender); + return true; + } + if (!(sender instanceof Player)) { + CoreMessage.COMMAND_MUST_USED_BY_PLAYER.show(sender); + return true; + } + int i = Integer.parseInt(args[0]); + if (i <= 0) { + CoreMessage.COMMAND_LORE_SET_NOT_INPUT_NUMBER_ERROR.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; + } + ItemMeta meta = stack.getItemMeta(); + if (meta != null) { + List lore = meta.getLore(); + if (lore == null) { + lore = new ArrayList<>(); + } + if (lore.size() < i) { + CoreMessage.COMMAND_LORE_SET_INDEX_OUT_OF_RANGE.show(player); + return true; + } + args = Arrays.copyOfRange(args, 1, args.length); + lore.set(i - 1, String.join(" ", args)); + meta.setLore(lore); + } + stack.setItemMeta(meta); + CoreMessage.COMMAND_LORE_SET_SUCCESS.show(player); + return true; + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + return null; + } +} 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 new file mode 100644 index 0000000..c942ffc --- /dev/null +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/ParentLoreCommand.java @@ -0,0 +1,28 @@ +package cn.hamster3.mc.plugin.core.bukkit.command.lore; + +import cn.hamster3.mc.plugin.core.bukkit.HamsterCorePlugin; +import cn.hamster3.mc.plugin.core.bukkit.command.ParentCommand; +import cn.hamster3.mc.plugin.core.common.util.CommonUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class ParentLoreCommand extends ParentCommand { + public static final ParentLoreCommand INSTANCE = new ParentLoreCommand("lore", HamsterCorePlugin.COMMAND_EXECUTOR); + + private ParentLoreCommand(@NotNull String name, @Nullable ParentCommand parent) { + super(name, parent); + addChildCommand(LoreAddCommand.INSTANCE); + addChildCommand(LoreRemoveCommand.INSTANCE); + addChildCommand(LoreSetCommand.INSTANCE); + addChildCommand(LoreClearCommand.INSTANCE); + addChildCommand(LoreNameCommand.INSTANCE); + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + CommonUtils.replaceColorCode(args); + return super.onCommand(sender, command, label, args); + } +} 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 b4ea243..3d0c101 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 @@ -8,7 +8,23 @@ public enum CoreMessage { COMMAND_MUST_USED_BY_PLAYER, COMMAND_DEBUG_BLOCK_INFO_ON, - COMMAND_DEBUG_BLOCK_INFO_OFF; + COMMAND_DEBUG_BLOCK_INFO_OFF, + + COMMAND_LORE_HAND_EMPTY, + COMMAND_LORE_EMPTY_INPUT, + COMMAND_LORE_ADD_SUCCESS, + COMMAND_LORE_CLEAR_NOTHING, + COMMAND_LORE_CLEAR_SUCCESS, + COMMAND_LORE_NAME_SUCCESS, + COMMAND_LORE_REMOVE_NOT_INPUT_NUMBER, + COMMAND_LORE_REMOVE_NOT_INPUT_NUMBER_ERROR, + COMMAND_LORE_REMOVE_INDEX_OUT_OF_RANGE, + COMMAND_LORE_REMOVE_SUCCESS, + COMMAND_LORE_SET_NOT_INPUT_NUMBER, + COMMAND_LORE_SET_NOT_INPUT_NUMBER_ERROR, + COMMAND_LORE_SET_NOT_INPUT_TEXT, + COMMAND_LORE_SET_INDEX_OUT_OF_RANGE, + COMMAND_LORE_SET_SUCCESS; public void show(CommandSender sender) { sender.sendMessage(name()); diff --git a/hamster-core-common/src/main/java/cn/hamster3/mc/plugin/core/common/util/CommonUtils.java b/hamster-core-common/src/main/java/cn/hamster3/mc/plugin/core/common/util/CommonUtils.java index c8002ec..2625a11 100644 --- a/hamster-core-common/src/main/java/cn/hamster3/mc/plugin/core/common/util/CommonUtils.java +++ b/hamster-core-common/src/main/java/cn/hamster3/mc/plugin/core/common/util/CommonUtils.java @@ -90,16 +90,11 @@ public final class CommonUtils { * 替换颜色代码 * * @param strings 要替换的字符串 - * @return 替换后的字符串 */ - @NotNull - public static ArrayList replaceColorCode(@Nullable String[] strings) { - ArrayList list = new ArrayList<>(); - if (strings == null) return list; - for (String s : strings) { - list.add(replaceColorCode(s)); + public static void replaceColorCode(@NotNull String[] strings) { + for (int i = 0; i < strings.length; i++) { + strings[i] = strings[i].replace("&", "§"); } - return list; } @NotNull