2016-11-11 474 views
1

我正在制作一个插件,当你输入/传送你将得到一个9个地方的库存,那里必须有一个红色的玻璃窗格,但我可以得到彩色玻璃窗格,但我可以'不要让他变成红色,因为当我试图说明物品的名称被破坏时。红色的彩色玻璃的代码是STANED_GLASS_PANE:14 在我想这的代码:Java我的世界彩色玻璃

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); 
     } 

    } 

如果您需要其他任何东西让我知道谢谢你的帮助!

+1

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

回答

2

(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设置名称和绝杀。

+0

仍然如果我这样做,我不能说这就是多数民众赞成在我想使它红色的玻璃,并给它一个名称的问题:) – Jelles

+0

我修复了它@ user7147407 – spacegeek224