23 déc. 2014, 14:41

public boolean hasEnchantment(ItemStack stack, int id) {
 boolean flag = false;
 if (stack.getEnchantmentTagList() != null) {
   for (int i = 0; i < stack.getEnchantmentTagList().tagCount(); i++) {
     if (stack.getEnchantmentTagList().getCompoundTagAt(i).getShort("id") == id) {
       flag = true;
     }* else {
       flag = false;
     }*
   }
 }
 return flag;
}

Je me trompe peut-être mais le “else” est une erreur car s’il y a d’autres enchantements après, la fonction va retourner false, je propose 2 fixes :


public boolean hasEnchantment(ItemStack stack, int id) {
 boolean flag = false;
 if (stack.getEnchantmentTagList() != null) {
   for (int i = 0; i < stack.getEnchantmentTagList().tagCount(); i++) {
     if (stack.getEnchantmentTagList().getCompoundTagAt(i).getShort("id") == id) {
       flag = true;
     }
   }
 }
 return flag;
}

ou


public boolean hasEnchantment(ItemStack stack, int id) {
 if (stack.getEnchantmentTagList() != null) {
   for (int i = 0; i < stack.getEnchantmentTagList().tagCount(); i++) {
     if (stack.getEnchantmentTagList().getCompoundTagAt(i).getShort("id") == id) {
       return true;
     }
   }
 }
 return false;
}

(Cette dernière permettrait d’éviter de faire tourner une boucle pour rien)