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 版本号。

Bukkit 1.20.1 插件:禁止非OP玩家存取箱子物品

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

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