【问题标题】:Java Minecraft Color GlassJava Minecraft 彩色玻璃
【发布时间】:2016-11-14 05:05:29
【问题描述】:

我正在制作一个插件,当您输入 /teleport 时,您将获得 9 个地方的清单,其中必须有一个红色的彩色玻璃窗格,但我可以得到彩色玻璃窗格,但我不能让他变成红色因为当我尝试这样做时,项目的名称被破坏了。红色彩色玻璃的代码是 STANED_GLASS_PANE:14 在我尝试过的代码中:

ItemStack spawnItem = ItemName(Material.STAINED_GLASS_PANE, ChatColor.AQUA + "Teleport To Spawn!");

这很好,但是当我尝试这个时我不起作用

ItemStack spawnItem = ItemName(Material.STAINED_GLASS_PANE,1 , 14, ChatColor.AQUA + "Teleport To Spawn!");

或者如果我试试这个

ItemStack spawnItem = ItemName(Material.STAINED_GLASS_PANE, 1, (short) 14, ChatColor.AQUA + "Teleport To Spawn!");

不工作,但如果我这样做

ItemStack spawnItem = new ItemStack(Material.STAINED_GLASS_PANE, 1, (short 14);

它现在是红色的,但该项目没有名称我不知道如何添加名称。这是我的完整代码。

package com.jelles.plugin1.commands;

    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;

    public class inventoryEquip implements CommandExecutor {

        public boolean onCommand(CommandSender sender, Command cmd, String commadLabel, String[] args) {
            if (!(sender instanceof Player)) {
                sender.sendMessage("You must be a player to run this command!");
                return false;
            }

            Player player = (Player) sender;

            Inventory inv = Bukkit.createInventory(null, 9, "Custom Inventory");

            ItemStack spawnItem = nameItem(Material.STAINED_GLASS_PANE, ChatColor.AQUA + "Teleport To Spawn!");
            ItemStack houseItem = nameItem(Material.APPLE, ChatColor.RED + "Teleport To A House!");
            ItemStack cloudItem = nameItem(Material.FEATHER, ChatColor.LIGHT_PURPLE + "Teleport To A Cloud!");

            inv.setItem(4, spawnItem);
            inv.setItem(5, houseItem);
            inv.setItem(3, cloudItem);

            player.openInventory(inv);

            return true;
        }

        private ItemStack nameItem(ItemStack item, String name) {
            ItemMeta meta = item.getItemMeta();
            meta.setDisplayName(name);
            item.setItemMeta(meta);
            return item;
        }

        private ItemStack nameItem(Material item, String name) {
            return nameItem(new ItemStack(item), name);
        }

    }

如果您需要任何其他帮助,请告诉我,感谢您的帮助!

【问题讨论】:

  • 您需要使用ItemMeta来设置名称。

标签: java minecraft bukkit


【解决方案1】:

(short)替换成(byte),数据值是一个字节,不是短的。

ItemStack spawnItem = nameItem(Material.STAINED_GLASS_PANE, 1,0,(byte) 14);
ItemMeta spawnItemMeta = spawnItem.getItemMeta();
spawnItemMeta.setName(ChatColor.AQUA+"Teleport To Spawn!");
spawnItem.setItemMeta(spawnItemMeta);

您还必须使用ItemMeta 来设置名称和知识。

【讨论】:

  • 如果我这样做,我无法命名,这就是问题所在,我想把它做成一个红色的彩色玻璃并给它一个名字:)
  • 我修复了它@user7147407
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 2011-04-03
  • 1970-01-01
相关资源
最近更新 更多