diff options
Diffstat (limited to 'src/main/java/ihl/recipes/RecipeInputDie.java')
| -rw-r--r-- | src/main/java/ihl/recipes/RecipeInputDie.java | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/main/java/ihl/recipes/RecipeInputDie.java b/src/main/java/ihl/recipes/RecipeInputDie.java new file mode 100644 index 0000000..8fbd4db --- /dev/null +++ b/src/main/java/ihl/recipes/RecipeInputDie.java @@ -0,0 +1,97 @@ +package ihl.recipes;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import ic2.api.recipe.IRecipeInput;
+import ihl.interfaces.IWire;
+import ihl.utils.IHLUtils;
+import net.minecraft.item.ItemStack;
+
+public class RecipeInputDie implements IRecipeInput
+{
+ public final ItemStack input;
+ public final int transverseSection;
+
+ public RecipeInputDie(String string, int transverseSection)
+ {
+ this(IHLUtils.getItemStackWithTag(string, "transverseSection", transverseSection));
+ }
+
+ public RecipeInputDie(ItemStack itemStack)
+ {
+ input=itemStack;
+ transverseSection=itemStack.stackTagCompound.getInteger("transverseSection");
+ }
+
+ @Override
+ public boolean matches(ItemStack subject)
+ {
+ return subject.getItem() == this.input.getItem() && (subject.getItemDamage() == this.input.getItemDamage() || this.input.getItemDamage() == 32767);
+ }
+
+ @Override
+ public int getAmount()
+ {
+ return 1;
+ }
+
+ @Override
+ public List<ItemStack> getInputs()
+ {
+ return Arrays.asList(new ItemStack[] {this.input});
+ }
+
+ @Override
+ public String toString()
+ {
+ ItemStack stack = this.input.copy();
+ return "RInputDice<" + stack + ">";
+ }
+
+ public List<ItemStack> transformOutput(ItemStack matchedItemStack, List<ItemStack> outputs)
+ {
+ List<ItemStack> newOutputs = new ArrayList<ItemStack>();
+ int misTS = matchedItemStack.stackTagCompound.getInteger("transverseSection");
+ ItemStack material;
+ for(ItemStack material1:outputs)
+ {
+ if(material1.getItem() instanceof IWire)
+ {
+ material=material1.copy();
+ int length = material.stackTagCompound.getInteger("length");
+ length = length * transverseSection / misTS;
+ material.stackTagCompound.setInteger("length", length);
+ material.stackTagCompound.setInteger("fullLength", length);
+ material.stackTagCompound.setInteger("transverseSection", misTS);
+ newOutputs.add(material);
+ }
+ else
+ {
+ newOutputs.add(material1);
+ }
+ }
+ return newOutputs;
+ }
+
+ public int transformOutput(ItemStack matchedItemStack, ItemStack material)
+ {
+ int consumeAmountMultiplier=1;
+ int misTS = matchedItemStack.stackTagCompound.getInteger("transverseSection");
+ if(misTS<=transverseSection)
+ {
+ int length = material.stackTagCompound.getInteger("length");
+ length = length * transverseSection / misTS;
+ material.stackTagCompound.setInteger("length", length);
+ material.stackTagCompound.setInteger("fullLength", length);
+ }
+ else
+ {
+ consumeAmountMultiplier=misTS/transverseSection+1;
+ }
+ material.stackTagCompound.setInteger("transverseSection", misTS);
+ return consumeAmountMultiplier;
+ }
+}
+
|
