你可以使用Bukkit的事件监听器来实现这个功能。首先,你需要创建一个事件监听器类,然后注册该监听器来监听玩家打开箱子的事件。

下面是一个示例代码:

import org.bukkit.Material;
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.inventory.ItemStack;

public class ChestListener implements Listener {

    @EventHandler
    public void onChestOpen(InventoryOpenEvent event) {
        if (event.getInventory().getType() == org.bukkit.event.inventory.InventoryType.CHEST) {
            if (!event.getPlayer().isOp()) {
                event.setCancelled(true);
            }
        }
    }

    @EventHandler
    public void onInventoryClick(InventoryClickEvent event) {
        if (event.getInventory().getType() == org.bukkit.event.inventory.InventoryType.CHEST) {
            if (!event.getWhoClicked().isOp()) {
                event.setCancelled(true);
                if (event.getCurrentItem() != null && event.getCurrentItem().getType() != Material.AIR) {
                    event.getWhoClicked().getInventory().addItem(event.getCurrentItem());
                    event.setCurrentItem(new ItemStack(Material.AIR));
                }
            }
        }
    }
}

然后,在你的主类中注册该监听器:

import org.bukkit.plugin.java.JavaPlugin;

public class YourPlugin extends JavaPlugin {

    @Override
    public void onEnable() {
        // 注册监听器
        getServer().getPluginManager().registerEvents(new ChestListener(), this);
    }
}

这样,当玩家不是OP时,他们将无法拿出箱子中的物品,也无法将物品放入箱子中。

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

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

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