7 juil. 2015, 19:48

Nice ca marche nice ! Tout est bien positionné mais devine quoi ! La recette marche pas ca ne fait rien 😕

AnalyzerRecipes


package mod.common.block;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

import mod.common.item.ItemRegister;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;

@SuppressWarnings("rawtypes")
public class AnalyzerRecipes {

private static final AnalyzerRecipes smeltingBase = new AnalyzerRecipes(); //Permet d'instancier votre classe car vous le l'instancierez nul part ailleur
private Map smeltingList = new HashMap(); //Ceci permet de mettre vos recettes

public AnalyzerRecipes()
{
this.addRecipe(ItemRegister.itemADNofFrog, ItemRegister.itemSevewithmosquito, new ItemStack(BlockRegister.BlockBarriere)); //Ajout d'une recette, on fait un bloc de diamant à partie de deux pommes et une flèche
}

@SuppressWarnings("unchecked")
public void addRecipe(ItemStack stack1, ItemStack stack2, ItemStack stack3) //Cette fonction de comprend que des ItemStack, c'est celle qui ajoute les recettes à la HashMap
{
ItemStack[] stackList = new ItemStack[]{stack1, stack2};
this.smeltingList.put(stackList, stack3);
}

public void addRecipe(Item item1, Item item2, ItemStack stack) //1er cas
{
this.addRecipe(new ItemStack(item1), new ItemStack(item2), stack);
}

public ItemStack getSmeltingResult(ItemStack[] stack) //En argument : un tableau avec le contenu des trois slots d'input
{
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(stack, (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<=1; i++) // Pour les 3 items
{
if(stackList*.getItem() == stackList2*.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 Map getSmeltingList()
{
return this.smeltingList;
}

public static AnalyzerRecipes smelting()
{
return smeltingBase;
}
}