2015-06-21 82 views
-1

我有這樣的代碼:如何從玩家庫存配置中加載ID列表? [Bukkit]

public boolean hasItem(Player player){ 
    int empty = 0; 
    int armors = 0; 

    for (String str : config.denyBlocks) { 
     for (ItemStack item : player.getInventory().getContents()) { 
      if (item == null || item.getType() == Material.getMaterial(str)) empty++; 
      } 
    } 


    for (ItemStack armor : player.getInventory().getArmorContents()) { 
      if (armor == null || armor.getType() == Material.AIR) armors++; 
    } 

    return empty == player.getInventory().getContents().length && armors == player.getInventory().getArmorContents().length; 
} 

,但由於某種原因,這是行不通的。測試不起作用,如果不是第一個週期,測試運行。

此代碼:

public boolean hasItem(Player player){ 
    int empty = 0; 
    int armors = 0; 

     for (ItemStack item : player.getInventory().getContents()) { 
      if (item == null || item.getType() == Material.getMaterial(4)) empty++; 
      } 



    for (ItemStack armor : player.getInventory().getArmorContents()) { 
      if (armor == null || armor.getType() == Material.AIR) armors++; 
    } 

    return empty == player.getInventory().getContents().length && armors == player.getInventory().getArmorContents().length; 
} 

凡4 - ID塊的Minecraft。請幫忙!!

+0

什麼你正在運行到 –

+0

故障/問題那麼究竟是什麼問題了嗎? – Jojodmo

回答

0

在第一種情況下,您正在使用字符串通過ID獲取物料,但Bukkit需要物料名稱。而不是你應該將其轉換爲Integer。使用Integer.parseInt(string)

for (String str : config.denyBlocks) { 
    for (ItemStack item : player.getInventory().getContents()) { 
     if (item == null || item.getType() == Material.getMaterial(Integer.parseInt(str))) empty++; 
    } 
}