package mods.eln.misc;
import mods.eln.Eln;
import mods.eln.transparentnode.electricalfurnace.ElectricalFurnaceProcess;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.FurnaceRecipes;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
//import mods.eln.electricalfurnace.ElectricalFurnaceProcess;
public class RecipesList {
public static final ArrayList<RecipesList> listOfList = new ArrayList<RecipesList>();
private ArrayList<Recipe> recipeList = new ArrayList<Recipe>();
private ArrayList<ItemStack> machineList = new ArrayList<ItemStack>();
public RecipesList() {
listOfList.add(this);
}
public ArrayList<Recipe> getRecipes() {
return recipeList;
}
public ArrayList<ItemStack> getMachines() {
return machineList;
}
public void addRecipe(Recipe recipe) {
recipeList.add(recipe);
recipe.setMachineList(machineList);
}
public void addMachine(ItemStack machine) {
machineList.add(machine);
}
public Recipe getRecipe(ItemStack input) {
for (Recipe r : recipeList) {
if (r.canBeCraftedBy(input)) return r;
}
return null;
}
public ArrayList<Recipe> getRecipeFromOutput(ItemStack output) {
ArrayList<Recipe> list = new ArrayList<Recipe>();
for (Recipe r : recipeList) {
for (ItemStack stack : r.getOutputCopy()) {
if (Utils.areSame(stack, output)) {
list.add(r);
break;
}
}
}
return list;
}
public static ArrayList<Recipe> getGlobalRecipeWithOutput(ItemStack output) {
output = output.copy();
output.stackSize = 1;
ArrayList<Recipe> list = new ArrayList<Recipe>();
for (RecipesList recipesList : listOfList) {
list.addAll(recipesList.getRecipeFromOutput(output));
}
FurnaceRecipes furnaceRecipes = FurnaceRecipes.smelting();
{
Iterator it = furnaceRecipes.getSmeltingList().entrySet().iterator();
while (it.hasNext()) {
try {
Map.Entry pairs = (Map.Entry) it.next();
Recipe recipe; // List<Integer>, ItemStack
ItemStack stack = (ItemStack) pairs.getValue();
ItemStack li = (ItemStack) pairs.getKey();
if (Utils.areSame(output, stack)) {
list.add(recipe = new Recipe(li.copy(), output, ElectricalFurnaceProcess.energyNeededPerSmelt));
recipe.setMachineList(Eln.instance.furnaceList);
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
return list;
}
public static ArrayList<Recipe> getGlobalRecipeWithInput(ItemStack input) {
input = input.copy();
input.stackSize = 64;
ArrayList<Recipe> list = new ArrayList<Recipe>();
for (RecipesList recipesList : listOfList) {
Recipe r = recipesList.getRecipe(input);
if (r != null)
list.add(r);
}
FurnaceRecipes furnaceRecipes = FurnaceRecipes.smelting();
ItemStack smeltResult = furnaceRecipes.getSmeltingResult(input);
Recipe smeltRecipe;
if (smeltResult != null) {
try {
ItemStack input1 = input.copy();
input1.stackSize = 1;
list.add(smeltRecipe = new Recipe(input1, smeltResult, ElectricalFurnaceProcess.energyNeededPerSmelt));
smeltRecipe.machineList.addAll(Eln.instance.furnaceList);
} catch (Exception e) {
// TODO: handle exception
}
}
return list;
}
}
/* FurnaceRecipes.smelting().addSmelting(in.itemID, in.getItemDamage(),
findItemStack("Copper ingot"), 0);*/