Bukkit 1.20.1 防盗箱插件:非OP玩家可查看但无法存取物品
import org.bukkit.Material;
import org.bukkit.block.Block;
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.inventory.ItemStack;
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 block = event.getClickedBlock();
Action action = event.getAction();
// 检查玩家是否点击了一个箱子
if (block != null && block.getType() == Material.CHEST) {
// 检查玩家是否是OP
if (!player.isOp()) {
// 检查玩家是否试图放入或拿出物品
if (action == Action.RIGHT_CLICK_BLOCK) {
Inventory chestInventory = ((org.bukkit.block.Chest) block.getState()).getInventory();
ItemStack itemInHand = player.getInventory().getItemInMainHand();
// 检查玩家是否按下了SHIFT键
if (player.isSneaking()) {
// 取消事件,阻止玩家放入物品
event.setCancelled(true);
} else if (itemInHand.getType() != Material.AIR) {
// 取消事件,阻止玩家拿出物品
event.setCancelled(true);
}
}
}
}
}
}
这是一个使用 Java 编写的 Bukkit 插件,用于增强服务器安全性。
功能:
- 允许非OP玩家打开箱子查看内容。
- 阻止非OP玩家从箱子中取出任何物品。
- 阻止非OP玩家向箱子中放入任何物品,即使按下 SHIFT+右键 也无法放入。
使用方法:
- 将编译好的插件jar文件放入服务器的 plugins 文件夹中。
- 重启服务器或重新加载插件。
适用版本:
- Bukkit 1.20.1
注意:
- 该插件只对非OP玩家有效。
- OP玩家仍然可以自由存取箱子中的物品。
原文地址: https://www.cveoy.top/t/topic/fBrq 著作权归作者所有。请勿转载和采集!