From 05c78126859231a68e199dc34613689bd0978e2f Mon Sep 17 00:00:00 2001 From: Foghrye4 Date: Mon, 11 Apr 2016 19:44:54 +0300 Subject: Initial commit --- ihl/recipes/UniversalRecipeOutput.java | 145 +++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 ihl/recipes/UniversalRecipeOutput.java (limited to 'ihl/recipes/UniversalRecipeOutput.java') diff --git a/ihl/recipes/UniversalRecipeOutput.java b/ihl/recipes/UniversalRecipeOutput.java new file mode 100644 index 0000000..bda2bcf --- /dev/null +++ b/ihl/recipes/UniversalRecipeOutput.java @@ -0,0 +1,145 @@ +package ihl.recipes; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; + +public class UniversalRecipeOutput{ + + private final List fluidOutputs=new ArrayList(); + private final List itemOutputs=new ArrayList(); + private final int time; + public final boolean specialConditions; + + public UniversalRecipeOutput(List fluidOutputs1, List itemOutputs1, int time1) + { + this(fluidOutputs1, itemOutputs1, time1,false); + } + + public UniversalRecipeOutput(List fluidOutputs1, List itemOutputs1, int time1, boolean specialConditions1) + { + if(fluidOutputs1!=null) + { + Iterator ioi = fluidOutputs1.iterator(); + while(ioi.hasNext()) + { + FluidStack fStack = ioi.next(); + if(fStack==null) + { + throw new NullPointerException("Recipe cannot contain null elements!"); + } + fluidOutputs.add(fStack); + } + } + if(itemOutputs1!=null) + { + Iterator ioi = itemOutputs1.iterator(); + while(ioi.hasNext()) + { + Object io = ioi.next(); + if(io==null) + { + throw new NullPointerException("Recipe output cannot be null!"); + } + if(io instanceof ItemStack) + { + this.itemOutputs.add(new RecipeOutputItemStack((ItemStack) io)); + } + else + { + this.itemOutputs.add((RecipeOutputItemStack) io); + } + } + } + specialConditions=specialConditions1; + time=time1; + } + + public boolean matches(List fluidOutputs1, List itemOutputs1) + { + if(fluidOutputs.size()!=fluidOutputs1.size()||itemOutputs.size()!=itemOutputs.size()) + { + return false; + } + Iterator fi1 = fluidOutputs1.iterator(); + Iterator ii1 = itemOutputs1.iterator(); + Iterator fi = fluidOutputs.iterator(); + Iterator ii = itemOutputs.iterator(); + while(fi.hasNext()) + { + FluidStack fs = fi.next(); + FluidStack fs1 = fi1.next(); + if(fs.getFluid()!=fs1.getFluid()) + { + return false; + } + } + while(ii.hasNext()) + { + RecipeOutputItemStack is = ii.next(); + ItemStack is1 = ii1.next(); + if(!is.matches(is1)) + { + return false; + } + } + return true; + } + + public List getFluidOutputs() { + return fluidOutputs; + } + + public List getItemOutputs() { + return itemOutputs; + } + + public UniversalRecipeOutput copyWithMultiplier(int mulipier) { + ArrayList fluidStacks = new ArrayList(); + ArrayList itemStacks = new ArrayList(); + if(fluidOutputs!=null && !fluidOutputs.isEmpty()) + { + Iterator fi = fluidOutputs.iterator(); + while(fi.hasNext()) + { + FluidStack fs = fi.next(); + FluidStack newFs = fs.copy(); + newFs.amount*=mulipier; + fluidStacks.add(newFs); + } + } + if(itemOutputs!=null && !itemOutputs.isEmpty()) + { + Iterator ii = itemOutputs.iterator(); + while(ii.hasNext()) + { + RecipeOutputItemStack is = ii.next(); + RecipeOutputItemStack newIs = is.copy(mulipier); + itemStacks.add(newIs); + } + } + return new UniversalRecipeOutput(fluidStacks,itemStacks, getTime(),false); + } + + public int getTime() { + return time; + } + + @Override + public String toString() + { + StringBuffer out = new StringBuffer(); + for(FluidStack fluid: this.fluidOutputs) + { + out.append(fluid.getLocalizedName()+": "+fluid.amount+"/n"); + } + for(RecipeOutputItemStack stack: this.itemOutputs) + { + out.append(stack.itemStack.getDisplayName()+": "+stack.quantity+"/n"); + } + return out.toString(); + } +} -- cgit v1.2.3