Bukkit 1.20.1 插件:限制玩家访问箱子 - Java 代码示例
下面是一个使用 Java 编写的 Bukkit 插件,可以实现当玩家不是 OP 时,可以打开箱子但不能拿出或放入物品。
package com.example.plugin;
import org.bukkit.ChatColor;
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.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.plugin.java.JavaPlugin;
public class NoChestAccessPlugin extends JavaPlugin implements Listener {
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
getLogger().info('NoChestAccessPlugin has been enabled!');
}
@Override
public void onDisable() {
getLogger().info('NoChestAccessPlugin has been disabled!');
}
@EventHandler
public void onInventoryOpen(InventoryOpenEvent event) {
Player player = (Player) event.getPlayer();
Block block = event.getInventory().getLocation().getBlock();
// 检查玩家是否为OP
if (!player.isOp()) {
// 检查打开的是否为箱子
if (block.getType() == Material.CHEST) {
event.setCancelled(true);
player.sendMessage(ChatColor.RED + '你没有权限打开这个箱子!');
}
}
}
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
Player player = (Player) event.getWhoClicked();
Inventory inventory = event.getClickedInventory();
// 检查玩家是否为OP
if (!player.isOp()) {
// 检查点击的是否为箱子
if (inventory != null && inventory.getType() == InventoryType.CHEST) {
event.setCancelled(true);
player.sendMessage(ChatColor.RED + '你没有权限操作这个箱子!');
}
}
}
}
确保你的项目中包含了 Bukkit 的依赖库,并将上述代码保存为 NoChestAccessPlugin.java。然后使用你喜欢的 IDE(如 Eclipse 或 IntelliJ IDEA)进行编译和打包。
将生成的插件(.jar 文件)放入 Bukkit 服务器的插件文件夹中,并启动服务器。当玩家不是 OP 时,他们将可以打开箱子,但无法取出或放入物品。
原文地址: https://www.cveoy.top/t/topic/fBrf 著作权归作者所有。请勿转载和采集!