2015-06-21 36 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++; 
    } 
} 
相关问题