以下是一个示例代码,可以在Bukkit 1.20.1版本上实现将箱子转换为展示箱的功能:

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.Chest;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.ArrayList;
import java.util.List;

public class DisplayChestPlugin extends JavaPlugin implements Listener {

    @Override
    public void onEnable() {
        Bukkit.getPluginManager().registerEvents(this, this);
        getLogger().info("DisplayChestPlugin has been enabled!");
    }

    @Override
    public void onDisable() {
        getLogger().info("DisplayChestPlugin has been disabled!");
    }

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (cmd.getName().equalsIgnoreCase("displaychest")) {
            if (!(sender instanceof Player)) {
                sender.sendMessage(ChatColor.RED + "This command can only be executed by players.");
                return true;
            }

            Player player = (Player) sender;
            Block block = player.getTargetBlock(null, 5);
            BlockState blockState = block.getState();

            if (!(blockState instanceof Chest)) {
                player.sendMessage(ChatColor.RED + "You must be looking at a chest to use this command.");
                return true;
            }

            Chest chest = (Chest) blockState;
            Inventory inventory = chest.getInventory();
            Inventory displayInventory = Bukkit.createInventory((InventoryHolder) player, 27, "Display Chest");

            for (int i = 0; i < inventory.getSize(); i++) {
                ItemStack item = inventory.getItem(i);

                if (item != null) {
                    displayInventory.setItem(i, item);
                }
            }

            chest.getBlockInventory().clear();
            chest.update();

            player.openInventory(displayInventory);
            player.sendMessage(ChatColor.GREEN + "The chest has been converted to a display chest.");

            return true;
        }

        return false;
    }

    @EventHandler
    public void onInventoryClick(InventoryClickEvent event) {
        if (event.getView().getTitle().equals("Display Chest")) {
            event.setCancelled(true);
        }
    }
}

要使用该插件,您需要在Bukkit服务器上创建一个新的插件,并将以上代码保存到DisplayChestPlugin.java文件中。然后,将生成的.jar文件放入服务器的插件文件夹中,并重新启动服务器。

一旦插件启用,玩家可以使用/displaychest命令将所看到的箱子转换为展示箱。转换后,玩家只能右键打开箱子查看物品,而无法拿出物品。玩家也无法通过拖拽物品到自己的背包中来拿取物品。

请注意,此插件基于Bukkit API,并且在Bukkit 1.20.1版本上进行了测试。确保您的服务器版本与此版本兼容

用Java写一个Bukkit1201 对准箱子输入一个指令可以将箱子变成展示箱 只可以右键打开查看物品 不能拿出物品

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

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