Bukkit 1.20.1 插件:使用 GUI 检测署名书籍和羽毛笔
以下是用 Java 编写的 Bukkit 1.20.1 插件,可以实现玩家将已署名的书与笔放入 GUI,并检测被放入的书与笔是否署名的功能。\n\n首先,你需要创建一个名为 "BookGUI" 的插件,并在插件的主类中添加以下代码:\n\njava\npackage com.example.bookgui;\n\nimport org.bukkit.Bukkit;\nimport org.bukkit.Material;\nimport org.bukkit.entity.Player;\nimport org.bukkit.event.EventHandler;\nimport org.bukkit.event.Listener;\nimport org.bukkit.event.inventory.InventoryClickEvent;\nimport org.bukkit.inventory.Inventory;\nimport org.bukkit.inventory.ItemStack;\nimport org.bukkit.inventory.meta.BookMeta;\nimport org.bukkit.inventory.meta.ItemMeta;\nimport org.bukkit.plugin.java.JavaPlugin;\n\npublic class BookGUI extends JavaPlugin implements Listener {\n \n @Override\n public void onEnable() {\n Bukkit.getPluginManager().registerEvents(this, this);\n }\n \n @EventHandler\n public void onInventoryClick(InventoryClickEvent event) {\n Player player = (Player) event.getWhoClicked();\n Inventory inventory = event.getInventory();\n ItemStack item = event.getCurrentItem();\n \n if (inventory != null && inventory.getName().equals("Book GUI")) {\n event.setCancelled(true);\n \n if (item != null && item.getType() != Material.AIR) {\n if (item.getType() == Material.WRITABLE_BOOK) {\n BookMeta bookMeta = (BookMeta) item.getItemMeta();\n \n if (bookMeta.hasAuthor()) {\n player.sendMessage("成功放入署名的书!");\n } else {\n player.sendMessage("只能放入署名的书!");\n }\n } else if (item.getType() == Material.FEATHER) {\n ItemMeta itemMeta = item.getItemMeta();\n \n if (itemMeta.hasDisplayName() && itemMeta.getDisplayName().equals("Signed Pen")) {\n player.sendMessage("成功放入署名的笔!");\n } else {\n player.sendMessage("只能放入署名的笔!");\n }\n }\n }\n }\n }\n \n public void openBookGUI(Player player) {\n Inventory inventory = Bukkit.createInventory(null, 9, "Book GUI");\n \n inventory.setItem(0, new ItemStack(Material.WRITABLE_BOOK));\n inventory.setItem(1, new ItemStack(Material.FEATHER));\n \n player.openInventory(inventory);\n }\n}\n\n\n然后,你需要在 plugin.yml 文件中添加以下内容:\n\nyaml\nname: BookGUI\nversion: 1.0\nmain: com.example.bookgui.BookGUI\n\n\n最后,你可以在你的插件的主类中添加以下代码,以实现在玩家使用一个命令时打开 GUI 界面:\n\njava\n@Override\npublic boolean onCommand(CommandSender sender, Command command, String label, String[] args) {\n if (command.getName().equalsIgnoreCase("bookgui")) {\n if (sender instanceof Player) {\n Player player = (Player) sender;\n openBookGUI(player);\n } else {\n sender.sendMessage("只有玩家可以执行此命令!");\n }\n return true;\n }\n return false;\n}\n\n\n现在,当玩家使用命令 "/bookgui" 时,将会打开一个 GUI 界面,玩家可以将已署名的书与笔放入其中。如果放入的是已署名的书或署名的笔,将会收到相应的提示消息。
原文地址: https://www.cveoy.top/t/topic/p1uu 著作权归作者所有。请勿转载和采集!