From 05c78126859231a68e199dc34613689bd0978e2f Mon Sep 17 00:00:00 2001 From: Foghrye4 Date: Mon, 11 Apr 2016 19:44:54 +0300 Subject: Initial commit --- .../metallurgy/AchesonFurnanceTileEntity.java | 150 +++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 ihl/processing/metallurgy/AchesonFurnanceTileEntity.java (limited to 'ihl/processing/metallurgy/AchesonFurnanceTileEntity.java') diff --git a/ihl/processing/metallurgy/AchesonFurnanceTileEntity.java b/ihl/processing/metallurgy/AchesonFurnanceTileEntity.java new file mode 100644 index 0000000..5d228fc --- /dev/null +++ b/ihl/processing/metallurgy/AchesonFurnanceTileEntity.java @@ -0,0 +1,150 @@ +package ihl.processing.metallurgy; + +import java.util.Arrays; +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,Arrays.asList(new IRecipeInput [] {input1,input2})),new UniversalRecipeOutput(null,Arrays.asList(new ItemStack [] {IHLUtils.getThisModItemStack(output1)}),20)); + } + + @Override + public String getStartSoundFile() + { + return "Machines/Electro Furnace/ElectroFurnaceLoop.ogg"; + } + + @Override + public String getLoopSoundFile() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getStopSoundFile() { + // TODO Auto-generated method stub + 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) + { + ItemStack stack = ((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