From 50d62a1298f05d6d440a5bc261a0fdf9ffece893 Mon Sep 17 00:00:00 2001 From: Foghrye4 Date: Wed, 31 May 2017 21:23:10 +0300 Subject: energy net fix attempt --- ihl/recipes/UniversalRecipeInput.java | 36 +++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'ihl/recipes/UniversalRecipeInput.java') diff --git a/ihl/recipes/UniversalRecipeInput.java b/ihl/recipes/UniversalRecipeInput.java index 2ed546a..7cdb386 100644 --- a/ihl/recipes/UniversalRecipeInput.java +++ b/ihl/recipes/UniversalRecipeInput.java @@ -1,14 +1,18 @@ 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; @@ -30,6 +34,7 @@ public class UniversalRecipeInput { } } } + sortFluidsByDensity(); if (iRecipeInputs != null) { for (Object material : iRecipeInputs) { if (material == null) { @@ -51,6 +56,37 @@ public class UniversalRecipeInput { } } } + + 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); -- cgit v1.2.3