From 78f4fcffc7f0b08fdad949f88ccefa9df56bb681 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=BB=E9=AD=82=E5=9C=A3=E4=BD=BF?= Date: Fri, 20 Dec 2024 05:58:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=81=E8=AE=B8help=E8=8E=B7=E5=BE=97?= =?UTF-8?q?=E5=B8=AE=E5=8A=A9=E4=BF=A1=E6=81=AF=E4=B9=A6=E7=B1=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Commands/ZbCommand.java | 37 ++++++++++++++++--- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/src/main/java/ling/coordinateRecorder/Commands/ZbCommand.java b/src/main/java/ling/coordinateRecorder/Commands/ZbCommand.java index 56ecfb2..a9d2ecd 100644 --- a/src/main/java/ling/coordinateRecorder/Commands/ZbCommand.java +++ b/src/main/java/ling/coordinateRecorder/Commands/ZbCommand.java @@ -10,6 +10,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; +import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.BookMeta; @@ -30,7 +31,7 @@ public class ZbCommand implements CommandExecutor, TabCompleter { "unfixed"); public ZbCommand() { - + } protected void add(Player player, String[] strings) { @@ -137,8 +138,29 @@ public class ZbCommand implements CommandExecutor, TabCompleter { } /// 显示帮助 - protected void help(Player player) { + protected void help(Player player, String[] strings) { + if (strings.length > 2) { + player.sendMessage(ChatColor.RED + "命令过长"); + return; + } + String op = "open"; + if (strings.length == 2) { + op = strings[1]; + } + ItemStack book = new ItemStack(Material.WRITTEN_BOOK); + BookMeta bookMeta = getHelpBookMeta(player, book); + book.setItemMeta(bookMeta); + + if (op.equals("open")) + player.openBook(book); + else if (op.equals("give")) + player.getInventory().addItem(book); + else + player.sendMessage(ChatColor.RED + "语法错误:无法解析的参数:" + op); + } + + private static @NotNull BookMeta getHelpBookMeta(Player player, ItemStack book) { BookMeta bookMeta = (BookMeta) book.getItemMeta(); assert bookMeta != null; bookMeta.setGeneration(BookMeta.Generation.COPY_OF_COPY); @@ -148,9 +170,8 @@ public class ZbCommand implements CommandExecutor, TabCompleter { "欢迎使用坐标管理器!你好," + player.getName() + "\n\n" + "本书将向你介绍如何使用指令记录曾探索过的地点,以避免迷路\n" + "如果需要再次查看帮助信息,请使用 /zb help\n", "/zb add <地点名称> <固定到侧边栏> \n" + "记录当前地点到数据库中,例如\n" + "/zb add Home\n" + "将会记录当前的位置,取名为 Home,并固定到屏幕右侧\n", "如果不想固定到屏幕右侧,可以像这样使用\n" + "/zb add Home false\n" + "然后,你可以使用/zb list来查看已经保存的位置\n" + "使用/zb fixed 来将地点固定到屏幕右侧\n" + "使用/zb unfixed 来取消固定。\n"); - book.setItemMeta(bookMeta); - - player.openBook(book); + bookMeta.addEnchant(Enchantment.VANISHING_CURSE,1,true); + return bookMeta; } protected void reload(Player player, String[] strings) throws SQLException { @@ -167,6 +188,7 @@ public class ZbCommand implements CommandExecutor, TabCompleter { player.sendMessage("已重新载入数据"); } + @SuppressWarnings("DuplicatedCode") protected void fixed(Player player, String[] strings) throws SQLException { if (strings.length > 2) { player.sendMessage(ChatColor.RED + "命令过长"); @@ -241,7 +263,7 @@ public class ZbCommand implements CommandExecutor, TabCompleter { add(player, strings); break; case "help": - help(player); + help(player, strings); break; case "remove": remove(player, strings); @@ -322,6 +344,9 @@ public class ZbCommand implements CommandExecutor, TabCompleter { case "fixed" -> { return List.of("<地标名称>"); } + case "help" -> { + return filter(latest, new ArrayList<>(Arrays.asList("give", "open"))); + } } } if (strings[0].equals("add")) {