您可以使用以下代码来实现玩家可以打开箱子但无法拿出箱内物品的功能:\n\njava\nimport org.bukkit.Material;\nimport org.bukkit.block.Block;\nimport org.bukkit.block.BlockState;\nimport org.bukkit.block.Chest;\nimport org.bukkit.event.EventHandler;\nimport org.bukkit.event.Listener;\nimport org.bukkit.event.inventory.InventoryClickEvent;\nimport org.bukkit.event.inventory.InventoryType;\nimport org.bukkit.event.player.PlayerInteractEvent;\nimport org.bukkit.inventory.Inventory;\nimport org.bukkit.inventory.ItemStack;\nimport org.bukkit.plugin.java.JavaPlugin;\n\npublic class NoItemPickupChestPlugin extends JavaPlugin implements Listener {\n \n @Override\n public void onEnable() {\n getServer().getPluginManager().registerEvents(this, this);\n }\n \n @EventHandler\n public void onPlayerInteract(PlayerInteractEvent event) {\n Block block = event.getClickedBlock();\n if (block != null && block.getType() == Material.CHEST) {\n Chest chest = (Chest) block.getState();\n Inventory inventory = chest.getInventory();\n event.getPlayer().openInventory(inventory);\n event.setCancelled(true);\n }\n }\n \n @EventHandler\n public void onInventoryClick(InventoryClickEvent event) {\n if (event.getInventory().getType() == InventoryType.CHEST) {\n BlockState blockState = event.getInventory().getHolder().getBlock().getState();\n if (blockState instanceof Chest) {\n Chest chest = (Chest) blockState;\n Inventory chestInventory = chest.getInventory();\n ItemStack clickedItem = event.getCurrentItem();\n \n if (chestInventory.contains(clickedItem)) {\n event.setCancelled(true);\n }\n }\n }\n }\n}\n\n\n这个插件会监听玩家与箱子的交互事件。当玩家右键点击箱子时,插件会打开箱子的界面并取消原始的事件,以防止玩家拿出箱内物品。同时,插件还会监听玩家在箱子界面点击事件,如果玩家点击的物品存在于箱子内,则取消该点击事件。这样玩家就无法从箱子中拿出物品了。\n\n请注意,为了使插件生效,您需要将其编译为JAR文件,并将其放置在Bukkit服务器的插件文件夹中。

Bukkit 1.20.1 插件: 禁止玩家从箱子中取物

原文地址: https://www.cveoy.top/t/topic/qhb0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录