Bukkit 1.20.1 Java 插件:将箱子转换为展示箱
以下是一个用 Java 编写的 Bukkit 插件示例,可以将箱子转换为展示箱子,只能通过右键打开查看物品,无法拿出物品。
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.block.Action;
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 ShowcaseBoxPlugin extends JavaPlugin implements Listener {
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
Block block = event.getClickedBlock();
Player player = event.getPlayer();
if (block.getType() == Material.CHEST) {
BlockState state = block.getState();
if (state instanceof Chest) {
Chest chest = (Chest) state;
Inventory inventory = chest.getBlockInventory();
convertToShulkerBox(chest);
player.openInventory(inventory);
event.setCancelled(true); // 防止其他插件干扰
}
}
}
}
private void convertToShulkerBox(Chest chest) {
Block block = chest.getBlock();
block.setType(Material.SHULKER_BOX);
BlockState state = block.getState();
if (state instanceof ShulkerBox) {
ShulkerBox shulkerBox = (ShulkerBox) state;
InventoryHolder holder = shulkerBox;
Inventory inventory = holder.getInventory();
Inventory chestInventory = chest.getInventory();
ItemStack[] contents = chestInventory.getContents();
inventory.setContents(contents);
chestInventory.clear();
shulkerBox.update();
}
}
}
请注意,这只是一个示例插件,您需要将其编译为 JAR 文件,并将其放置在 Bukkit 服务器的插件文件夹中。还需要确保您的服务器上安装了 Bukkit 1.20.1 版本。
此插件将在玩家右键点击箱子时将其转换为展示箱,并打开一个界面供玩家查看物品。无法从展示箱中拿出物品。
原文地址: https://www.cveoy.top/t/topic/qhcc 著作权归作者所有。请勿转载和采集!