我有这段代码:
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阻止我的世界。请帮忙!!
答案 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++;
}
}