Bukkit 1.20.1 非OP玩家打开箱子但无法存取物品插件
Bukkit 1.20.1 非OP玩家打开箱子但无法存取物品插件
这个插件可以让非OP玩家打开箱子查看物品,但无法取出或放入物品,即使按住Shift键也不行。
功能:
- 非OP玩家可以打开箱子
- 非OP玩家无法从箱子中取出物品
- 非OP玩家无法将物品放入箱子
- 按住Shift键也无法将物品放入箱子
代码:
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 ChestRestrictionPlugin 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();
if (block != null && block.getType() == Material.CHEST) {
if (!player.isOp()) {
event.setCancelled(true); // 玩家不是OP时取消事件
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
Inventory chestInventory = block.getState().getInventory();
// 检查是否按下了Shift键
if (player.isSneaking()) {
ItemStack itemInHand = player.getInventory().getItemInMainHand();
// 检查手中的物品是否为空
if (itemInHand != null && itemInHand.getType() != Material.AIR) {
player.sendMessage('你不能放入物品到这个箱子。');
}
} else {
player.openInventory(chestInventory); // 打开箱子
}
}
}
}
}
}
使用方法:
- 将代码保存为
ChestRestrictionPlugin.java文件。 - 将文件编译成
.jar文件。 - 将
.jar文件放入您的 Bukkit 或 Spigot 服务器的plugins文件夹中。 - 启动服务器。
注意:
- 此插件需要 Bukkit 或 Spigot 服务器版本为 1.20.1。
- 此插件仅阻止非OP玩家存取箱子,OP玩家仍然可以正常使用箱子。
- 此插件使用了中文注释,方便理解。
原文地址: https://www.cveoy.top/t/topic/fBru 著作权归作者所有。请勿转载和采集!