以下是一个用 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 版本。

此插件将在玩家右键点击箱子时将其转换为展示箱,并打开一个界面供玩家查看物品。无法从展示箱中拿出物品。

Bukkit 1.20.1 Java 插件:将箱子转换为展示箱

原文地址: https://www.cveoy.top/t/topic/qhcc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录