feat: lore 相关指令

This commit is contained in:
2022-10-23 06:48:34 +08:00
parent b23f0bb1e7
commit a0326de479
13 changed files with 516 additions and 33 deletions

View File

@@ -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.ParentCommand;
import cn.hamster3.mc.plugin.core.bukkit.command.debug.BlockInfoCommand; 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.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.PointAPI;
import cn.hamster3.mc.plugin.core.bukkit.hook.VaultAPI; import cn.hamster3.mc.plugin.core.bukkit.hook.VaultAPI;
import cn.hamster3.mc.plugin.core.bukkit.listener.CallbackListener; import cn.hamster3.mc.plugin.core.bukkit.listener.CallbackListener;
@@ -19,7 +20,7 @@ import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
public class HamsterCorePlugin extends JavaPlugin { 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; private static HamsterCorePlugin instance;
public static HamsterCorePlugin getInstance() { public static HamsterCorePlugin getInstance() {
@@ -56,6 +57,9 @@ public class HamsterCorePlugin extends JavaPlugin {
logger.info("已添加指令: " + BlockInfoCommand.INSTANCE.getName() + " ."); logger.info("已添加指令: " + BlockInfoCommand.INSTANCE.getName() + " .");
COMMAND_EXECUTOR.addChildCommand(YamlCommand.INSTANCE); COMMAND_EXECUTOR.addChildCommand(YamlCommand.INSTANCE);
logger.info("已添加指令: " + YamlCommand.INSTANCE.getName() + " ."); logger.info("已添加指令: " + YamlCommand.INSTANCE.getName() + " .");
COMMAND_EXECUTOR.addChildCommand(ParentLoreCommand.INSTANCE);
logger.info("已添加指令: " + ParentLoreCommand.INSTANCE.getName() + " .");
long time = System.currentTimeMillis() - start; long time = System.currentTimeMillis() - start;
logger.info("仓鼠核心已启动,总计耗时 " + time + " ms."); logger.info("仓鼠核心已启动,总计耗时 " + time + " ms.");
} }

View File

@@ -1,8 +1,8 @@
package cn.hamster3.mc.plugin.core.bukkit.command; package cn.hamster3.mc.plugin.core.bukkit.command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public abstract class ChildCommand implements TabExecutor { public abstract class ChildCommand implements TabExecutor {
@NotNull @NotNull
@@ -11,8 +11,7 @@ public abstract class ChildCommand implements TabExecutor {
@NotNull @NotNull
public abstract String getUsage(); public abstract String getUsage();
@Nullable public abstract boolean hasPermission(@NotNull CommandSender sender);
public abstract String getPermission();
@NotNull @NotNull
public abstract String getDescription(); public abstract String getDescription();

View File

@@ -3,17 +3,14 @@ package cn.hamster3.mc.plugin.core.bukkit.command;
import cn.hamster3.mc.plugin.core.bukkit.constant.CoreMessage; import cn.hamster3.mc.plugin.core.bukkit.constant.CoreMessage;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public class ParentCommand implements TabExecutor { public class ParentCommand extends ChildCommand {
@NotNull @NotNull
private final String name; private final String name;
@Nullable @Nullable
@@ -33,6 +30,11 @@ public class ParentCommand implements TabExecutor {
childCommands = new ArrayList<>(); childCommands = new ArrayList<>();
} }
@Override
public @NotNull String getName() {
return name;
}
@NotNull @NotNull
public String getUsage() { public String getUsage() {
if (parent == null) { if (parent == null) {
@@ -41,30 +43,67 @@ public class ParentCommand implements TabExecutor {
return parent.getUsage() + " " + name; return parent.getUsage() + " " + name;
} }
@Override
public boolean hasPermission(@NotNull CommandSender sender) {
return true;
}
@Override
public @NotNull String getDescription() {
return "";
}
@NotNull @NotNull
public List<ChildCommand> getChildCommands() { public List<ChildCommand> getChildCommands() {
return childCommands; return childCommands;
} }
@NotNull
public List<ChildCommand> getEndChildCommands() {
ArrayList<ChildCommand> 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) { public void addChildCommand(@NotNull ChildCommand command) {
childCommands.add(command); childCommands.add(command);
} }
public Map<String, String> getCommandHelp(CommandSender sender) {
HashMap<String, String> map = new HashMap<>();
for (ChildCommand child : childCommands) {
if (!child.hasPermission(sender)) {
continue;
}
if (child instanceof ParentCommand) {
Map<String, String> childMap = ((ParentCommand) child).getCommandHelp(sender);
map.putAll(childMap);
continue;
}
map.put(getUsage() + " " + child.getUsage(), child.getDescription());
}
return map;
}
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (args.length == 0) { if (args.length == 0) {
sender.sendMessage("§e==================== [" + name + "使用帮助] ===================="); sender.sendMessage("§e==================== [" + name + "使用帮助] ====================");
int maxLength = childCommands.stream() Map<String, String> helpMap = getCommandHelp(sender);
.filter(o -> o.getPermission() == null || sender.hasPermission(o.getPermission())) int maxLength = helpMap.keySet().stream()
.map(o -> o.getUsage().length()) .map(String::length)
.max(Integer::compareTo) .max(Integer::compareTo)
.orElse(-1); .orElse(-1);
for (ChildCommand child : childCommands) { ArrayList<Map.Entry<String, String>> list = new ArrayList<>(helpMap.entrySet());
String permission = child.getPermission(); list.sort(Map.Entry.comparingByKey());
if (permission != null && !sender.hasPermission(permission)) { for (Map.Entry<String, String> entry : list) {
continue; sender.sendMessage(String.format("§a%-" + maxLength + "s - %s", entry.getKey(), entry.getValue()));
}
sender.sendMessage(String.format("§a%s %-" + maxLength + "s - %s", getUsage(), child.getUsage(), child.getDescription()));
} }
return true; return true;
} }
@@ -79,6 +118,11 @@ public class ParentCommand implements TabExecutor {
@Override @Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) { public List<String> 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) { for (ChildCommand child : childCommands) {
if (args[0].equalsIgnoreCase(child.getName())) { if (args[0].equalsIgnoreCase(child.getName())) {
return child.onTabComplete(sender, command, alias, Arrays.copyOfRange(args, 1, args.length)); return child.onTabComplete(sender, command, alias, Arrays.copyOfRange(args, 1, args.length));

View File

@@ -7,7 +7,6 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
@@ -30,8 +29,8 @@ public class BlockInfoCommand extends ChildCommand {
} }
@Override @Override
public @Nullable String getPermission() { public boolean hasPermission(@NotNull CommandSender sender) {
return null; return true;
} }
@Override @Override

View File

@@ -14,7 +14,6 @@ import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@@ -39,8 +38,8 @@ public class YamlCommand extends ChildCommand {
} }
@Override @Override
public @Nullable String getPermission() { public boolean hasPermission(@NotNull CommandSender sender) {
return null; return true;
} }
@Override @Override

View File

@@ -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 <lore>";
}
@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<String> 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<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
return null;
}
}

View File

@@ -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<String> 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<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
return null;
}
}

View File

@@ -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 <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<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
return null;
}
}

View File

@@ -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 <line>";
}
@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<String> 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<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
return null;
}
}

View File

@@ -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 <line> <lore>";
}
@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<String> 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<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
return null;
}
}

View File

@@ -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);
}
}

View File

@@ -8,7 +8,23 @@ public enum CoreMessage {
COMMAND_MUST_USED_BY_PLAYER, COMMAND_MUST_USED_BY_PLAYER,
COMMAND_DEBUG_BLOCK_INFO_ON, 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) { public void show(CommandSender sender) {
sender.sendMessage(name()); sender.sendMessage(name());

View File

@@ -90,16 +90,11 @@ public final class CommonUtils {
* 替换颜色代码 * 替换颜色代码
* *
* @param strings 要替换的字符串 * @param strings 要替换的字符串
* @return 替换后的字符串
*/ */
@NotNull public static void replaceColorCode(@NotNull String[] strings) {
public static ArrayList<String> replaceColorCode(@Nullable String[] strings) { for (int i = 0; i < strings.length; i++) {
ArrayList<String> list = new ArrayList<>(); strings[i] = strings[i].replace("&", "§");
if (strings == null) return list;
for (String s : strings) {
list.add(replaceColorCode(s));
} }
return list;
} }
@NotNull @NotNull