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.InventoryOpenEvent;import org.bukkit.event.player.PlayerInteractEvent;import org.bukkit.inventory.Inventory;import org.bukkit.inventory.ItemStack;import org.bukkit.plugin.java.JavaPlugin;

public class NoChestManipulation 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()) {            Inventory inventory = event.getInventory();            if (inventory.getHolder() instanceof Chest) {                event.setCancelled(true);            }        }    }

@EventHandler    public void onInventoryClick(InventoryClickEvent event) {        Player player = (Player) event.getWhoClicked();        if (!player.isOp()) {            Inventory clickedInventory = event.getClickedInventory();            if (clickedInventory != null && clickedInventory.getHolder() instanceof Chest) {                event.setCancelled(true);            }        }    }

@EventHandler    public void onPlayerInteract(PlayerInteractEvent event) {        Player player = event.getPlayer();        if (!player.isOp()) {            Block clickedBlock = event.getClickedBlock();            if (clickedBlock != null && clickedBlock.getType() == Material.CHEST) {                BlockState blockState = clickedBlock.getState();                if (blockState instanceof Chest) {                    Chest chest = (Chest) blockState;                    Inventory chestInventory = chest.getInventory();                    if (chestInventory != null) {                        event.setCancelled(true);                    }                }            }        }    }}

请确保你的项目中已经包含了Bukkit API的依赖,并将以上代码放入你的插件主类中。这个插件将会阻止非OP玩家与箱子交互,包括打开、取出物品和放入物品,以及使用SHIFT+右键放入物品。

Bukkit 1.20.1 插件: 禁止非OP玩家操作箱子

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

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