Bukkit 1.20.1 Java 插件:将箱子转换为展示箱
下面是一个 Java 代码示例,用于将 Bukkit 1.20.1 中的箱子转换为展示箱,并且只能通过右键打开查看物品,不能拿出物品。
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.Chest;
import org.bukkit.block.ShulkerBox;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
public class ShowChestPlugin 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) {
BlockState blockState = block.getState();
if (blockState instanceof Chest) {
Chest chest = (Chest) blockState;
Inventory chestInventory = chest.getInventory();
// 将箱子变成展示箱
ShulkerBox shulkerBox = (ShulkerBox) block.getWorld().spawn(block.getLocation(), ShulkerBox.class);
shulkerBox.setCustomName(chest.getCustomName());
shulkerBox.setInventory(chestInventory);
// 只能通过右键打开查看物品,不能拿出物品
player.openInventory(shulkerBox.getInventory());
event.setCancelled(true); // 取消默认的箱子打开行为
}
}
}
}
你需要将以上代码保存为一个 Java 类文件,例如ShowChestPlugin.java,然后在 Bukkit 服务器中加载该插件。
请注意,该插件将会替换玩家右键点击箱子时的默认行为,如果你想要玩家即可右键打开查看物品,又能拿出物品,你可以修改onPlayerInteract方法中的代码以实现你的需求。
原文地址: https://www.cveoy.top/t/topic/qhcd 著作权归作者所有。请勿转载和采集!