你可以使用以下代码来实现该功能:

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

public class ChestProtectionPlugin extends JavaPlugin implements Listener {

    @Override
    public void onEnable() {
        getServer().getPluginManager().registerEvents(this, this);
    }

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

这个插件会监听玩家与方块的交互事件,如果玩家右键点击了一个箱子,且玩家不是OP,那么将取消事件并打开箱子的界面给玩家,这样玩家就可以查看箱子内的物品,但无法拿出物品

用Java写一个Bukkit1201 玩家不是OP的时候 可以打开箱子但是不能拿出箱子物品

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

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