package ihl.processing.metallurgy; import java.util.List; import java.util.Map; import ic2.api.recipe.IRecipeInput; import ic2.api.recipe.RecipeInputOreDict; import ic2.core.ContainerBase; import ic2.core.block.invslot.InvSlot.Access; import ihl.IHLMod; import ihl.processing.chemistry.ApparatusProcessableInvSlot; import ihl.recipes.RecipeOutputItemStack; import ihl.recipes.UniversalRecipeInput; import ihl.recipes.UniversalRecipeManager; import ihl.recipes.UniversalRecipeOutput; import ihl.utils.IHLUtils; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class AchesonFurnanceTileEntity extends MachineBaseTileEntity{ public final ApparatusProcessableInvSlot inputElectrode; protected static UniversalRecipeManager recipeManager = new UniversalRecipeManager("achesonfurnace"); private final RecipeInputOreDict[] validElectrodeTypes=new RecipeInputOreDict[] {new RecipeInputOreDict("stickCoal"),new RecipeInputOreDict("stickGraphite"),new RecipeInputOreDict("plateCoal"),new RecipeInputOreDict("plateGraphite")}; public AchesonFurnanceTileEntity() { super(2); inputElectrode = new ApparatusProcessableInvSlot(this, "inputElectrode", 1, Access.IO, 2, 1); } public static void addRecipe(IRecipeInput input1, IRecipeInput input2, String output1) { recipeManager.addRecipe(new UniversalRecipeInput(null,new IRecipeInput [] {input1,input2}),new UniversalRecipeOutput(null,new ItemStack [] {IHLUtils.getThisModItemStack(output1)},20)); } @Override public String getStartSoundFile() { return "Machines/Electro Furnace/ElectroFurnaceLoop.ogg"; } @Override public String getLoopSoundFile() { return null; } @Override public String getStopSoundFile() { return null; } @Override public String getInventoryName() { return "AchesonFurnance"; } @Override @SideOnly(Side.CLIENT) public GuiScreen getGui(EntityPlayer player, boolean arg1) { return new AchesonFurnaceGui(new AchesonFurnanceContainer(player, this)); } @Override public ContainerBase getGuiContainer(EntityPlayer player) { return new AchesonFurnanceContainer(player, this); } @Override public void operate() { List output = AchesonFurnanceTileEntity.recipeManager.getOutputFor(getInput(), true, true).getItemOutputs(); for(int i=0; ii) { ItemStack stack = output.get(i).itemStack.copy(); stack.stackSize=Math.round(output.get(i).quantity); this.input.put(i,stack); } if(this.input.get(i)!=null && this.input.get(i).stackSize<=0) { this.input.put(i, null); } } ItemStack crucible = input.getItemStack(IHLMod.crucible); if(crucible!=null) { ((Crucible)crucible.getItem()).processContent(crucible, this); } } @Override public boolean canOperate() { return this.isValidElectrode(this.inputElectrode.get(0)) && this.isValidElectrode(this.inputElectrode.get(1)) && this.getOutput()!=null; } @Override public List[] getInput() { return new List[] {null, this.input.getItemStackList()}; } public static Map getRecipes() { return recipeManager.getRecipes(); } @Override public UniversalRecipeOutput getOutput() { return AchesonFurnanceTileEntity.recipeManager.getOutputFor(this.getInput(), false, false); } private boolean isValidElectrode(ItemStack stack) { if(stack!=null) { for(int i=0;i