如何从配置中为播放器库存加载id列表? [Bukkit]

时间:2015-06-21 14:05:23

标签: 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阻止我的世界。请帮忙!!

1 个答案:

答案 0 :(得分:0)

在第一种情况下,您使用String来获取材质ID,但Bukkit需要材质名称。而不是你应该将它转换为整数。使用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++;
     }
}