允许help获得帮助信息书籍

This commit is contained in:
2024-12-20 05:58:18 +08:00
parent fabb2259bc
commit 78f4fcffc7

View File

@@ -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 <Name> 来将地点固定到屏幕右侧\n" + "使用/zb unfixed <Name> 来取消固定。\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")) {