在Bukkit 1.20.1的Paper核心中,使用send.openInventory(send.getEnderChest());的方式来打开末影箱。要让末影箱的标题显示为中文,你需要使用NMS(Native Minecraft Server)代码来实现。

以下是一个示例代码,可以让末影箱的标题显示为中文:

import net.minecraft.server.v1_20_R1.ChatComponentText;
import net.minecraft.server.v1_20_R1.EntityPlayer;
import net.minecraft.server.v1_20_R1.PacketPlayOutOpenWindow;
import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;

public class EnderChestTitle {

    public static void openEnderChest(Player player, String title) {
        EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
        ChatComponentText chatComponentText = new ChatComponentText(title);
        PacketPlayOutOpenWindow packet = new PacketPlayOutOpenWindow(entityPlayer.activeContainer.windowId, "minecraft:enderchest", chatComponentText, player.getOpenInventory().getTopInventory().getSize());
        entityPlayer.playerConnection.sendPacket(packet);
        entityPlayer.activeContainer = entityPlayer.defaultContainer;
        entityPlayer.activeContainer.windowId = entityPlayer.nextContainerCounter();
        entityPlayer.activeContainer.addSlotListener(entityPlayer);
    }
}

然后,在你的指令处理方法中,你可以使用以下代码来调用openEnderChest方法,并传入中文标题:

public class MyCommand implements CommandExecutor {

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (sender instanceof Player) {
            Player player = (Player) sender;
            EnderChestTitle.openEnderChest(player, "你的中文标题");
        }
        return true;
    }
}

请注意,这段代码使用了NMS代码,这意味着你需要将对应版本的Minecraft服务端库添加到你的项目中。此外,这段代码可能在不同的Paper版本上有所不同,需要根据你使用的Paper版本进行调整。


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

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