Цветное стекло Java Minecraft

Я делаю плагин, который, когда вы набираете / телепортируетесь, вы получаете инвентарь из 9 мест, там должна быть красная витражная панель, но я могу получить витраж, но я не могу сделать его красным, потому что, когда я Постарайтесь, чтобы название предметов было нарушено. код красного витража - STANED_GLASS_PANE: 14 в коде, который я пробовал:

ItemStack spawnItem = ItemName (Material.STAINED_GLASS_PANE, ChatColor.AQUA + «Телепорт к месту возрождения!»);

Это работает нормально, но когда я пытаюсь это сделать, я не работаю

ItemStack spawnItem = ItemName (Material.STAINED_GLASS_PANE, 1, 14, ChatColor.AQUA + «Телепорт к месту возрождения!»);

или если я попробую это

ItemStack spawnItem = ItemName (Material.STAINED_GLASS_PANE, 1, (короткий) 14, ChatColor.AQUA + «Телепорт к месту возрождения!»);

не работает, но если я сделаю это вот так

ItemStack spawnItem = новый ItemStack (Material.STAINED_GLASS_PANE, 1, (короткий 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);
        }

    }

Если вам еще что-нибудь понадобится, дайте мне знать, спасибо за помощь!


person Jelles    schedule 11.11.2016    source источник
comment
Для установки имени необходимо использовать ItemMeta.   -  person spacegeek224    schedule 11.11.2016


Ответы (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, чтобы установить имя и знания.

person spacegeek224    schedule 11.11.2016
comment
тем не менее, если я это сделаю, я не могу назвать это, вот в чем проблема, я хочу сделать из него красный витраж и дать ему имя :) - person Jelles; 11.11.2016
comment
Исправил @ user7147407 - person spacegeek224; 11.11.2016