package ihl.recipes; import ic2.core.block.invslot.InvSlot; import ic2.core.block.invslot.InvSlotConsumableItemStack; import ihl.utils.IHLUtils; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.oredict.OreDictionary; public class UniversalRecipeInput{ private final List fluidInputs; private final List itemInputs; public UniversalRecipeInput(List fluidInputs1, List itemInputs1) { fluidInputs=new ArrayList(); itemInputs=new ArrayList(); if(fluidInputs1!=null)fluidInputs.addAll(fluidInputs1); if(itemInputs1!=null)itemInputs.addAll(itemInputs1); } public UniversalRecipeInput(FluidTank tank1, InvSlot inputSlot1) { fluidInputs=new ArrayList(); itemInputs=new ArrayList(); List fluidlist = new ArrayList(); FluidStack inputFluid = null; if(tank1!=null && tank1.getFluid()!=null) { fluidInputs.add(tank1.getFluid()); } for(int i=0; i fluidInputs1, List itemInputs1) { if(fluidInputs.size()!=fluidInputs1.size()||itemInputs.size()!=itemInputs1.size()) { return false; } Iterator fi1 = fluidInputs1.iterator(); Iterator ii1 = itemInputs1.iterator(); Iterator fi = fluidInputs.iterator(); Iterator ii = itemInputs.iterator(); while(fi.hasNext()) { FluidStack fs = fi.next(); FluidStack fs1 = fi1.next(); if(fs1==null || fs.getFluid()!=fs1.getFluid()) { return false; } } while(ii.hasNext()) { ItemStack is = ii.next(); ItemStack is1 = ii1.next(); if(IHLUtils.isItemsHaveSameOreDictionaryEntry(is, is1)) { continue; } if(is==null) { return true; } if((is!=null && is1==null)||(is.getItem()!=is1.getItem())) { return false; } else if(is.getItemDamage()!=OreDictionary.WILDCARD_VALUE && is.getItemDamage()!=is1.getItemDamage()) { return false; } } return true; } public List getFluidInputs() { return fluidInputs; } public List getItemInputs() { return itemInputs; } public boolean matches(UniversalRecipeInput input) { return this.matches(input.getFluidInputs(), input.getItemInputs()); } public boolean adjustAmounts(List fluidInputs1, List itemInputs1, boolean doAdjustAmounts) { if(fluidInputs.size()!=fluidInputs1.size()||itemInputs.size()!=itemInputs1.size()) { return false; } Iterator fi1 = fluidInputs1.iterator(); Iterator ii1 = itemInputs1.iterator(); Iterator fi = fluidInputs.iterator(); Iterator ii = itemInputs.iterator(); while(fi.hasNext()) { FluidStack fs = fi.next(); FluidStack fs1 = fi1.next(); if(fs.getFluid()!=fs1.getFluid() || fs1.amount ii = itemInputs.iterator(); while(ii.hasNext()) { ItemStack is = ii.next(); if(is!=null && is.getItem()==item) { return true; } } return false; } public ItemStack getItemStack(Item item) { if(itemInputs==null || itemInputs.isEmpty()) { return null; } Iterator ii = itemInputs.iterator(); while(ii.hasNext()) { ItemStack is = ii.next(); if(is.getItem()==item) { return is; } } return null; } public int getMultiplierAndAdjustAmounts(UniversalRecipeInput input) { List fluidInputs1 = input.fluidInputs; List itemInputs1 = input.itemInputs; int multiplier=Integer.MAX_VALUE; if(fluidInputs.size()!=fluidInputs1.size()||itemInputs.size()!=itemInputs1.size()) { return 0; } Iterator fi1 = fluidInputs1.iterator(); Iterator ii1 = itemInputs1.iterator(); Iterator fi = fluidInputs.iterator(); Iterator ii = itemInputs.iterator(); while(fi.hasNext()) { FluidStack fs = fi.next(); FluidStack fs1 = fi1.next(); if(fs.getFluid()!=fs1.getFluid() || fs1.amount0) { int multiplier1=Math.floorDiv(fs1.amount,fs.amount); if(multiplier10) { int multiplier1=Math.floorDiv(is1.stackSize,is.stackSize); if(multiplier1 ii = itemInputs.iterator(); while(ii.hasNext()) { ItemStack is = ii.next(); if(is!=null && is.getItem()==ingredient.getItem() && (is.getItemDamage()==ingredient.getItemDamage() || is.getItemDamage()==OreDictionary.WILDCARD_VALUE)) { return true; } } return false; } }