1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
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<RecipeOutputItemStack> output = AchesonFurnanceTileEntity.recipeManager.getOutputFor(getInput(), true, true).getItemOutputs();
for(int i=0; i<this.inputElectrode.size();i++)
{
ItemStack electrodeIS = this.inputElectrode.get(i);
if(this.validElectrodeTypes[0].matches(electrodeIS))
{
this.inputElectrode.put(i, IHLUtils.getThisModItemStack("stickGraphite"));
}
else if(this.validElectrodeTypes[2].matches(electrodeIS))
{
this.inputElectrode.put(i, IHLUtils.getThisModItemStack("plateGraphite"));
}
}
for(int i=0; i<this.input.size();i++)
{
if(output.size()>i)
{
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<UniversalRecipeInput, UniversalRecipeOutput> 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<this.validElectrodeTypes.length;i++)
{
if(validElectrodeTypes[i].matches(stack))
{
return true;
}
}
}
return false;
}
}
|