feat(bukkit): 一些新的指令

This commit is contained in:
2023-01-01 14:07:36 +08:00
parent 6a1425ce1f
commit 64ced6b91c
6 changed files with 146 additions and 1 deletions

View File

@@ -12,5 +12,6 @@ public class ParentCoreCommand extends ParentCommand {
addChildCommand(GCCommand.INSTANCE);
addChildCommand(YamlCommand.INSTANCE);
addChildCommand(InfoModeCommand.INSTANCE);
addChildCommand(ReloadCommand.INSTANCE);
}
}

View File

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

View File

@@ -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 <ItemFlag>";
}
@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<String> 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());
}
}

View File

@@ -18,6 +18,7 @@ public final class ParentLoreCommand extends ParentCommand {
addChildCommand(LoreClearCommand.INSTANCE);
addChildCommand(LoreNameCommand.INSTANCE);
addChildCommand(LoreCustomModelDataCommand.INSTANCE);
addChildCommand(LoreFlagCommand.INSTANCE);
}
@Override

View File

@@ -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,

View File

@@ -14,7 +14,7 @@ import java.nio.file.StandardCopyOption;
import java.util.HashMap;
public class PageManager {
private static final HashMap<String, PageConfig> PAGE_CONFIG = new HashMap<>();
public static final HashMap<String, PageConfig> PAGE_CONFIG = new HashMap<>();
@NotNull
public static PageConfig getPageConfig(@NotNull Class<?> clazz) {