下面是一个 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 著作权归作者所有。请勿转载和采集!

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