Bukkit 1.20.1 插件:禁止非OP玩家存取箱子物品
Bukkit 1.20.1 插件:禁止非OP玩家存取箱子物品
以下是一个使用 Java 编写的 Bukkit 插件,实现了当玩家不是 OP 时,可以打开箱子但是不能拿出箱子物品和放入物品,同时也禁止了使用 SHIFT+右键放入物品的功能。javaimport org.bukkit.Material;import org.bukkit.block.Block;import org.bukkit.block.BlockState;import org.bukkit.block.Chest;import org.bukkit.entity.Player;import org.bukkit.event.EventHandler;import org.bukkit.event.Listener;import org.bukkit.event.inventory.InventoryClickEvent;import org.bukkit.event.inventory.InventoryDragEvent;import org.bukkit.event.inventory.InventoryOpenEvent;import org.bukkit.event.block.Action;import org.bukkit.event.player.PlayerInteractEvent;import org.bukkit.inventory.Inventory;import org.bukkit.plugin.java.JavaPlugin;
public class NoChestInteraction extends JavaPlugin implements Listener {
@Override public void onEnable() { getServer().getPluginManager().registerEvents(this, this); }
@EventHandler public void onInventoryOpen(InventoryOpenEvent event) { Player player = (Player) event.getPlayer(); if (!player.isOp() && event.getInventory().getType() == org.bukkit.event.inventory.InventoryType.CHEST) { event.setCancelled(true); } }
@EventHandler public void onInventoryClick(InventoryClickEvent event) { Player player = (Player) event.getWhoClicked(); if (!player.isOp() && event.getInventory().getType() == org.bukkit.event.inventory.InventoryType.CHEST) { event.setCancelled(true); } }
@EventHandler public void onInventoryDrag(InventoryDragEvent event) { Player player = (Player) event.getWhoClicked(); if (!player.isOp() && event.getInventory().getType() == org.bukkit.event.inventory.InventoryType.CHEST) { event.setCancelled(true); } }
@EventHandler public void onBlockInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); if (!player.isOp() && event.getAction() == Action.RIGHT_CLICK_BLOCK) { Block block = event.getClickedBlock(); if (block.getType() == Material.CHEST) { event.setCancelled(true); BlockState state = block.getState(); if (state instanceof Chest) { Chest chest = (Chest) state; Inventory chestInventory = chest.getInventory(); player.openInventory(chestInventory); } } } }}
请确保你的项目中已经导入了 Bukkit API 的 jar 文件,并将代码中的 1.20.1 替换为你实际使用的 Bukkit 版本号。
原文地址: https://www.cveoy.top/t/topic/fBrn 著作权归作者所有。请勿转载和采集!