Bukkit 1.20.1 限制非OP玩家箱子操作 - Java代码示例
import org.bukkit.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.InventoryDragEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin implements Listener {
@Override
public void onEnable() {
// 注册事件监听器
Bukkit.getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
// 检查玩家是否是OP
if (!event.getPlayer().isOp()) {
// 检查玩家是否右键点击了箱子
if (event.getClickedBlock() != null && event.getClickedBlock().getType() == Material.CHEST) {
// 取消事件,阻止打开箱子
event.setCancelled(true);
}
}
}
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
// 检查玩家是否是OP
if (!event.getWhoClicked().isOp()) {
// 检查玩家是否点击了箱子
if (event.getInventory().getType() == InventoryType.CHEST) {
// 取消事件,阻止拿出和放入物品
event.setCancelled(true);
}
}
}
@EventHandler
public void onInventoryDrag(InventoryDragEvent event) {
// 检查玩家是否是OP
if (!event.getWhoClicked().isOp()) {
// 检查玩家是否拖拽了物品到箱子中
if (event.getInventory().getType() == InventoryType.CHEST) {
// 取消事件,阻止拖拽放入物品
event.setCancelled(true);
}
}
}
}
请注意,这只是一个示例代码,你需要将其添加到你的Bukkit插件中,并确保已正确配置插件的plugin.yml文件。此外,你还需要在你的插件中注册这个监听器。
原文地址: https://www.cveoy.top/t/topic/fBrz 著作权归作者所有。请勿转载和采集!