Ok merci, j’ai plus d’erreur, la patate sert plus de carburant mais la recette marche toujours pas.
Ci-dessous ma classe recette:
public class RecipesGloriumMachine
{
private static final RecipesGloriumMachine smeltingBase = new RecipesGloriumMachine();
private Map smeltingList = new HashMap();
public static RecipesGloriumMachine getInstance()
{
return getInstance();
}
private static final HashMap <ItemStack[], ItemStack>recipes = new HashMap<ItemStack[], ItemStack>();
static {
addRecipe(Items.APPLE, Items.ARROW, Items.BAKED_POTATO, new ItemStack(ItemsMod.lingot_glorium));
}
private static void addRecipe(Item ingredient1, Item ingredient2, Item ingredient3, ItemStack resultat1) {
addRecipe(new ItemStack(ingredient1), new ItemStack(ingredient2), new ItemStack(ingredient3), resultat1);
}
public static void addRecipe(ItemStack stack1, ItemStack stack2, ItemStack stack3, ItemStack stack4)
{
ItemStack[] stackList = new ItemStack[]{stack1, stack2, stack3};
recipes.put(stackList, stack4);
}
private static boolean areKeysEqual(ItemStack[] key1, ItemStack[] key2) {
if(key1.length != key2.length) return false;
for(int i = 0; i < key1.length; i++) {
ItemStack s1 = key1[i];
ItemStack s2 = key2[i];
if(s1.isEmpty() && !s2.isEmpty()) return false;
if(!s1.isEmpty() && s2.isEmpty()) return false;
if(s1.getItem() != s2.getItem()) return false;
if(s1.getItemDamage() != s2.getItemDamage()) return false;
}
return true;
}
public ItemStack getRecipeResult(ItemStack[] ingredients) {
Iterator iterator = this.smeltingList.entrySet().iterator();
Entry entry;
do
{
if (!iterator.hasNext()) // Si il n'y a plus de recettes dans la liste
{
return null; //Il n'y a pas de recette correspondante
}
entry = (Entry)iterator.next(); //prend la recette suivante
}
while (!this.isSameKey(ingredients, (ItemStack[])entry.getKey())); //Check si le tableau passé en argument correspond à celui de la recette, vous avez une erreur ici, on crée la fonction tout de suite.
return (ItemStack)entry.getValue(); //retourne l'itemstack : resultat de la recette
}
private boolean isSameKey(ItemStack[] stackList, ItemStack[] stackList2)
{
boolean isSame = false; //Au début ce n'est pas la même
for(int i=0; i<=2; i++) // Pour les 3 items
{
if(stackList[i].getItem() == stackList2[i].getItem()) //On vérifie si ce sont les même
{
isSame = true; // Si c'est le cas alors isSame vaut true
}
else
{
return false; //Si un seul n'est pas bon, on cherche pas, c'est pas la bonne recette
}
}
return isSame;
}
public static RecipesGloriumMachine smelting()
{
return smeltingBase;
}
}
Je me demande si la recette ne marche pas à cause de la dernière fonction ou si c’est autre chose.