From dc3df3edd5843bde0c1335d6a8e460b2c832aa48 Mon Sep 17 00:00:00 2001 From: Foghrye4 Date: Sat, 17 Jun 2017 08:12:18 +0300 Subject: full project files --- ihl/recipes/UniversalRecipeInput.java | 205 ---------------------------------- 1 file changed, 205 deletions(-) delete mode 100644 ihl/recipes/UniversalRecipeInput.java (limited to 'ihl/recipes/UniversalRecipeInput.java') diff --git a/ihl/recipes/UniversalRecipeInput.java b/ihl/recipes/UniversalRecipeInput.java deleted file mode 100644 index 7cdb386..0000000 --- a/ihl/recipes/UniversalRecipeInput.java +++ /dev/null @@ -1,205 +0,0 @@ -package ihl.recipes; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import ic2.api.recipe.IRecipeInput; -import ic2.api.recipe.RecipeInputItemStack; -import ic2.api.recipe.RecipeInputOreDict; -import ihl.interfaces.IWire; -import ihl.utils.IHLUtils; -import ihl.worldgen.ores.IHLFluid; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; - -public class UniversalRecipeInput { - - private final List fluidInputs = new ArrayList(); - private final List itemInputs = new ArrayList(); - - public UniversalRecipeInput(Object[] fluidStacks, Object[] iRecipeInputs) { - if (fluidStacks != null) { - for (Object material : fluidStacks) { - if (material == null) { - throw new NullPointerException("Recipe input cannot be null!"); - } - if (material instanceof FluidStack) { - fluidInputs.add(new RecipeInputFluidStack((FluidStack) material)); - } else { - fluidInputs.add((IRecipeInputFluid) material); - } - } - } - sortFluidsByDensity(); - if (iRecipeInputs != null) { - for (Object material : iRecipeInputs) { - if (material == null) { - throw new NullPointerException("Recipe input cannot be null!"); - } - if (material instanceof ItemStack) { - ItemStack stack = (ItemStack) material; - String oreDictName = IHLUtils.getFirstOreDictNameExcludingTagAny(stack); - if (stack.getItem() instanceof IWire) { - itemInputs.add(new RecipeInputWire(stack)); - } else if (!oreDictName.isEmpty() && oreDictName.length() > 3) { - itemInputs.add(new RecipeInputOreDict(oreDictName, stack.stackSize)); - } else { - itemInputs.add(new RecipeInputItemStack(stack)); - } - } else { - itemInputs.add((IRecipeInput) material); - } - } - } - } - - public void sortFluidsByDensity() - { - Map sortMap = new HashMap(); - int[] keysArray = new int[fluidInputs.size()]; - Iterator fli = fluidInputs.iterator(); - while(fli.hasNext()) - { - IRecipeInputFluid rinput = fli.next(); - FluidStack fluid=rinput.getInputs().get(0); - if(fluid==null) - { - return; - } - int key = Math.round(IHLFluid.getRealDensity(fluid.getFluid())*100F); - while(sortMap.containsKey(key)) - { - key++; - } - sortMap.put(key, rinput); - keysArray[fluidInputs.indexOf(rinput)]=key; - } - Arrays.sort(keysArray); - List newFluidList = new ArrayList(); - for(int i=keysArray.length-1;i>=0;i--) - { - newFluidList.add(sortMap.get(keysArray[i])); - } - this.fluidInputs.clear(); - this.fluidInputs.addAll(newFluidList); - } - - public boolean matches(List fluidInputs1, List itemInputs1) { - return this.matches(fluidInputs1, itemInputs1, false); - } - - public List getFluidInputs() { - return fluidInputs; - } - - public List getItemInputs() { - return itemInputs; - } - - public boolean matches(UniversalRecipeInput input) { - List rInputs = input.getItemInputs(); - Iterator ii = rInputs.iterator(); - List rInputsItems = new ArrayList(); - while (ii.hasNext()) { - IRecipeInput is = ii.next(); - rInputsItems.add(is.getInputs().get(0)); - } - List rInputsFluids = new ArrayList(); - List rInputsF = input.getFluidInputs(); - Iterator iiF = rInputsF.iterator(); - while (iiF.hasNext()) { - IRecipeInputFluid is = iiF.next(); - rInputsFluids.add(is.getInputs().get(0)); - } - return this.matches(rInputsFluids, rInputsItems); - } - - public boolean matches(List fluidInputs1, List itemInputs1, boolean doCheckAmounts) { - if (incorrectInputAmount(fluidInputs1, itemInputs1)) { - return false; - } - if (fluidInputs1 != null) { - Iterator fi = fluidInputs.iterator(); - while (fi.hasNext()) { - IRecipeInputFluid fs = fi.next(); - FluidStack fs1 = getMatchedFluidStack(fs, fluidInputs1); - if (fs1 == null || !fs.matches(fs1)) { - return false; - } else if (doCheckAmounts && fs1.amount < fs.getAmount()) { - return false; - } - } - } - if (itemInputs1 != null) { - Iterator ii = itemInputs.iterator(); - while (ii.hasNext()) { - IRecipeInput is = ii.next(); - ItemStack is1 = getMatchedItemStack(is, itemInputs1); - if (is1 == null || !is.matches(is1)) { - return false; - } else if (doCheckAmounts && IHLUtils.getAmountOf(is1) < is.getAmount()) { - return false; - } - } - } - return true; - } - - private ItemStack getMatchedItemStack(IRecipeInput is, List itemInputs1) { - for (ItemStack is1 : itemInputs1) { - if (is1 != null) { - if (is.matches(is1)) { - return is1; - } - } - } - return null; - } - - private FluidStack getMatchedFluidStack(IRecipeInputFluid fs, List fluidInputs1) { - for (FluidStack fs1 : fluidInputs1) { - if (fs.matches(fs1)) { - return fs1; - } - } - return null; - } - - public boolean containItemStack(ItemStack ingredient) { - if (itemInputs == null || itemInputs.isEmpty()) { - return false; - } - Iterator ii = itemInputs.iterator(); - while (ii.hasNext()) { - IRecipeInput is = ii.next(); - if (is.matches(ingredient)) { - return true; - } - } - return false; - } - - public boolean containFluidStack(FluidStack fluidStack) { - if (fluidInputs == null || fluidInputs.isEmpty()) { - return false; - } - Iterator ii = fluidInputs.iterator(); - while (ii.hasNext()) { - IRecipeInputFluid is = ii.next(); - if (is != null && is.matches(fluidStack)) { - return true; - } - } - return false; - } - - private boolean incorrectInputAmount(List fluidInputs1, List itemInputs1) { - return (fluidInputs.size() > 0 && fluidInputs1 == null) || (itemInputs.size() > 0 && itemInputs1 == null) - || (fluidInputs1 != null && fluidInputs.size() > fluidInputs1.size()) - || (itemInputs1 != null && itemInputs.size() > itemInputs1.size()); - } -} -- cgit v1.2.3