From 2db8e30b1d2151fdde5d08a6c06aef55f0c397d2 Mon Sep 17 00:00:00 2001 From: Foghrye4 Date: Fri, 27 Jan 2017 11:32:28 +0300 Subject: License, readme and stuff --- ihl/recipes/IRecipeInputFluid.java | 2 - ihl/recipes/IronWorkbenchRecipe.java | 34 ++++++++-- ihl/recipes/RecipeInputDetonator.java | 73 +++++++++++++++++++++ ihl/recipes/RecipeInputDie.java | 5 +- ihl/recipes/RecipeInputFluidDictionary.java | 11 ++-- ihl/recipes/RecipeInputFluidStack.java | 8 ++- ihl/recipes/RecipeInputObjectInstance.java | 2 - ihl/recipes/RecipeInputOreDictionaryList.java | 24 +++---- ihl/recipes/UniversalRecipeInput.java | 37 ++++------- ihl/recipes/UniversalRecipeManager.java | 93 +++++++++++++++++---------- ihl/recipes/UniversalRecipeOutput.java | 48 +++++++------- 11 files changed, 224 insertions(+), 113 deletions(-) create mode 100644 ihl/recipes/RecipeInputDetonator.java (limited to 'ihl/recipes') diff --git a/ihl/recipes/IRecipeInputFluid.java b/ihl/recipes/IRecipeInputFluid.java index 8faf15d..823c0ae 100644 --- a/ihl/recipes/IRecipeInputFluid.java +++ b/ihl/recipes/IRecipeInputFluid.java @@ -1,8 +1,6 @@ package ihl.recipes; import java.util.List; - -import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; public interface IRecipeInputFluid { diff --git a/ihl/recipes/IronWorkbenchRecipe.java b/ihl/recipes/IronWorkbenchRecipe.java index 8ecb8df..f0bd81f 100644 --- a/ihl/recipes/IronWorkbenchRecipe.java +++ b/ihl/recipes/IronWorkbenchRecipe.java @@ -16,11 +16,11 @@ public class IronWorkbenchRecipe { public List materials=new ArrayList(); public List outputs = new ArrayList(); - public IronWorkbenchRecipe(List tools1, List materials1, List output1_1) + public IronWorkbenchRecipe(List tools1, List materials1, List output1_1) { if(tools1!=null) { - Iterator iTools1 = tools1.iterator(); + Iterator iTools1 = tools1.iterator(); while(iTools1.hasNext()) { Object tool = iTools1.next(); @@ -37,13 +37,13 @@ public class IronWorkbenchRecipe { tools.add(new RecipeInputItemStack(stack)); } } - else + else { tools.add((IRecipeInput) tool); } } } - Iterator iMaterials1 = materials1.iterator(); + Iterator iMaterials1 = materials1.iterator(); while(iMaterials1.hasNext()) { Object material = iMaterials1.next(); @@ -77,9 +77,33 @@ public class IronWorkbenchRecipe { } } - public IronWorkbenchRecipe(List asList, List asList2, List asList3, List workspaceElements1) { + public IronWorkbenchRecipe(List asList, List asList2, List asList3, List workspaceElements1) { this(asList, asList2, asList3); + if(workspaceElements1!=null) + { this.workspaceElements.addAll(workspaceElements1); + } + } + + public boolean isTool(ItemStack tool1) + { + if(tools!=null && !tools.isEmpty()) + { + if(tool1==null) + { + return false; + } + Iterator i1 = tools.iterator(); + while(i1.hasNext()) + { + IRecipeInput tool = i1.next(); + if(tool.matches(tool1)) + { + return true; + } + } + } + return false; } public boolean isCanBeCrafted(List tools1, List materials1, List workspaceElements1) diff --git a/ihl/recipes/RecipeInputDetonator.java b/ihl/recipes/RecipeInputDetonator.java new file mode 100644 index 0000000..efef075 --- /dev/null +++ b/ihl/recipes/RecipeInputDetonator.java @@ -0,0 +1,73 @@ +package ihl.recipes; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import ic2.api.recipe.IRecipeInput; +import ihl.utils.IHLUtils; +import net.minecraft.item.ItemStack; + +public class RecipeInputDetonator implements IRecipeInput +{ + public final ItemStack input; + public final int detonator_delay; + + public RecipeInputDetonator(String string, int detonator_delay) + { + this(IHLUtils.getItemStackWithTag(string, "detonator_delay", detonator_delay)); + } + + public RecipeInputDetonator(ItemStack itemStack) + { + input=itemStack; + detonator_delay=itemStack.stackTagCompound.getInteger("detonator_delay"); + } + + @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 getInputs() + { + return Arrays.asList(new ItemStack[] {this.input}); + } + + @Override + public String toString() + { + ItemStack stack = this.input.copy(); + return "RInputDice<" + stack + ">"; + } + + public List transformOutput(ItemStack matchedItemStack, List outputs) + { + List newOutputs = new ArrayList(); + int misTS = matchedItemStack.stackTagCompound.getInteger("detonator_delay"); + ItemStack material; + for(ItemStack material1:outputs) + { + if(IHLUtils.getFirstOreDictName(material1) == "blockExplosive") + { + material=material1.copy(); + material.stackTagCompound.setInteger("detonator_delay", misTS); + newOutputs.add(material); + } + else + { + newOutputs.add(material1); + } + } + return newOutputs; + } +} + diff --git a/ihl/recipes/RecipeInputDie.java b/ihl/recipes/RecipeInputDie.java index c8356ca..8fbd4db 100644 --- a/ihl/recipes/RecipeInputDie.java +++ b/ihl/recipes/RecipeInputDie.java @@ -6,7 +6,6 @@ import java.util.List; import ic2.api.recipe.IRecipeInput; import ihl.interfaces.IWire; -import ihl.items_blocks.FlexibleCableItem; import ihl.utils.IHLUtils; import net.minecraft.item.ItemStack; @@ -53,7 +52,7 @@ public class RecipeInputDie implements IRecipeInput public List transformOutput(ItemStack matchedItemStack, List outputs) { - List newOutputs = new ArrayList(); + List newOutputs = new ArrayList(); int misTS = matchedItemStack.stackTagCompound.getInteger("transverseSection"); ItemStack material; for(ItemStack material1:outputs) @@ -75,7 +74,7 @@ public class RecipeInputDie implements IRecipeInput } return newOutputs; } - + public int transformOutput(ItemStack matchedItemStack, ItemStack material) { int consumeAmountMultiplier=1; diff --git a/ihl/recipes/RecipeInputFluidDictionary.java b/ihl/recipes/RecipeInputFluidDictionary.java index 46c51eb..e1581c3 100644 --- a/ihl/recipes/RecipeInputFluidDictionary.java +++ b/ihl/recipes/RecipeInputFluidDictionary.java @@ -1,12 +1,8 @@ package ihl.recipes; -import java.util.Arrays; import java.util.List; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; -import ic2.api.recipe.IRecipeInput; import ihl.IHLMod; public class RecipeInputFluidDictionary implements IRecipeInputFluid @@ -39,5 +35,12 @@ public class RecipeInputFluidDictionary implements IRecipeInputFluid public List getInputs() { return IHLMod.fluidDictionary.getFluids(input); } + + @Override + public String toString() + { + return "RInputFluidStackDictionary<" + this.amount + "x" + this.input; + } + } diff --git a/ihl/recipes/RecipeInputFluidStack.java b/ihl/recipes/RecipeInputFluidStack.java index a7b5d0e..e4c116d 100644 --- a/ihl/recipes/RecipeInputFluidStack.java +++ b/ihl/recipes/RecipeInputFluidStack.java @@ -3,10 +3,8 @@ package ihl.recipes; import java.util.Arrays; import java.util.List; -import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; -import ic2.api.recipe.IRecipeInput; public class RecipeInputFluidStack implements IRecipeInputFluid { @@ -37,5 +35,11 @@ public class RecipeInputFluidStack implements IRecipeInputFluid public List getInputs() { return Arrays.asList(new FluidStack[] {new FluidStack(fluid,amount)}); } + + @Override + public String toString() + { + return "RInputFluidStack<" + this.amount + "x" + this.fluid.getName(); + } } diff --git a/ihl/recipes/RecipeInputObjectInstance.java b/ihl/recipes/RecipeInputObjectInstance.java index eeadc5c..8648e72 100644 --- a/ihl/recipes/RecipeInputObjectInstance.java +++ b/ihl/recipes/RecipeInputObjectInstance.java @@ -5,8 +5,6 @@ import java.util.List; import net.minecraft.item.ItemStack; import ic2.api.recipe.IRecipeInput; -import ihl.interfaces.IWire; -import ihl.items_blocks.FlexibleCableItem; import ihl.utils.IHLUtils; public class RecipeInputObjectInstance implements IRecipeInput diff --git a/ihl/recipes/RecipeInputOreDictionaryList.java b/ihl/recipes/RecipeInputOreDictionaryList.java index 3c4b551..572f15b 100644 --- a/ihl/recipes/RecipeInputOreDictionaryList.java +++ b/ihl/recipes/RecipeInputOreDictionaryList.java @@ -35,14 +35,14 @@ public class RecipeInputOreDictionaryList implements IRecipeInput this.meta = meta; } - @Override + @Override public boolean matches(ItemStack subject) { - List inputs = this.getOres(); + List inputs = this.getOres(); boolean useOreStackMeta = this.meta == null; Item subjectItem = subject.getItem(); int subjectMeta = subject.getItemDamage(); - Iterator i$ = inputs.iterator(); + Iterator i$ = inputs.iterator(); Item oreItem; int metaRequired; @@ -59,7 +59,7 @@ public class RecipeInputOreDictionaryList implements IRecipeInput return false; } - oreStack = (ItemStack)i$.next(); + oreStack = i$.next(); oreItem = oreStack.getItem(); } while (oreItem == null); @@ -82,13 +82,13 @@ public class RecipeInputOreDictionaryList implements IRecipeInput @Override public List getInputs() { - List ores = this.getOres(); + List ores = this.getOres(); boolean hasInvalidEntries = false; - Iterator ret = ores.iterator(); + Iterator ret = ores.iterator(); while (ret.hasNext()) { - ItemStack i$ = (ItemStack)ret.next(); + ItemStack i$ = ret.next(); if (i$.getItem() == null) { @@ -103,12 +103,12 @@ public class RecipeInputOreDictionaryList implements IRecipeInput } else { - ArrayList ret1 = new ArrayList(ores.size()); - Iterator i$1 = ores.iterator(); + ArrayList ret1 = new ArrayList(ores.size()); + Iterator i$1 = ores.iterator(); while (i$1.hasNext()) { - ItemStack stack = (ItemStack)i$1.next(); + ItemStack stack = i$1.next(); if (stack.getItem() != null) { @@ -134,10 +134,10 @@ public class RecipeInputOreDictionaryList implements IRecipeInput } else { - this.ores = new ArrayList(); + this.ores = new ArrayList(); for(int i=0;i ret = OreDictionary.getOres(this.input[i]); if (ret != OreDictionary.EMPTY_LIST) { this.ores.addAll(ret); diff --git a/ihl/recipes/UniversalRecipeInput.java b/ihl/recipes/UniversalRecipeInput.java index f0b42e2..1d2b06c 100644 --- a/ihl/recipes/UniversalRecipeInput.java +++ b/ihl/recipes/UniversalRecipeInput.java @@ -15,29 +15,16 @@ import net.minecraftforge.fluids.FluidStack; public class UniversalRecipeInput{ - private final List fluidInputs=new ArrayList(); - private final List itemInputs=new ArrayList(); - private boolean sharp=true; - private int temperatureMin = 273; - private int temperatureMax = Integer.MAX_VALUE; - private float speedFactor=-1.0f;//=-Ea/R (k=k0*exp(-Ea/(RT))) + private final List fluidInputs=new ArrayList(); + private final List itemInputs=new ArrayList(); private int multiplier=Integer.MAX_VALUE; - - public UniversalRecipeInput(List fluidInputs1, List itemInputs1, boolean sharp1) - { - this(fluidInputs1, itemInputs1); - this.sharp=false; - } - - public UniversalRecipeInput(List fluidInputs1, List itemInputs1) + public UniversalRecipeInput(Object[] fluidStacks, Object[] iRecipeInputs) { - if(fluidInputs1!=null) + if(fluidStacks!=null) { - Iterator ifluidInputs1 = fluidInputs1.iterator(); - while(ifluidInputs1.hasNext()) + for(Object material:fluidStacks) { - Object material = ifluidInputs1.next(); if(material==null) { throw new NullPointerException("Recipe input cannot be null!"); @@ -52,12 +39,10 @@ public class UniversalRecipeInput{ } } } - if(itemInputs1!=null) + if(iRecipeInputs!=null) { - Iterator iitemInputs1 = itemInputs1.iterator(); - while(iitemInputs1.hasNext()) + for(Object material:iRecipeInputs) { - Object material = iitemInputs1.next(); if(material==null) { throw new NullPointerException("Recipe input cannot be null!"); @@ -103,13 +88,13 @@ public class UniversalRecipeInput{ public boolean matches(UniversalRecipeInput input) { List rInputs = input.getItemInputs(); Iterator ii = rInputs.iterator(); - List rInputsItems = new ArrayList(); + List rInputsItems = new ArrayList(); while(ii.hasNext()) { IRecipeInput is = ii.next(); rInputsItems.add(is.getInputs().get(0)); } - List rInputsFluids = new ArrayList(); + List rInputsFluids = new ArrayList(); List rInputsF = input.getFluidInputs(); Iterator iiF = rInputsF.iterator(); while(iiF.hasNext()) @@ -226,13 +211,13 @@ public class UniversalRecipeInput{ public boolean adjustAmounts(UniversalRecipeInput input, boolean doAdjustAmounts) { List rInputs = input.getItemInputs(); Iterator ii = rInputs.iterator(); - List rInputsItems = new ArrayList(); + List rInputsItems = new ArrayList(); while(ii.hasNext()) { IRecipeInput is = ii.next(); rInputsItems.add(is.getInputs().get(0)); } - List rInputsFluids = new ArrayList(); + List rInputsFluids = new ArrayList(); List rInputsF = input.getFluidInputs(); Iterator iiF = rInputsF.iterator(); while(iiF.hasNext()) diff --git a/ihl/recipes/UniversalRecipeManager.java b/ihl/recipes/UniversalRecipeManager.java index 443a67f..99f43bc 100644 --- a/ihl/recipes/UniversalRecipeManager.java +++ b/ihl/recipes/UniversalRecipeManager.java @@ -6,9 +6,9 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import ic2.api.recipe.IRecipeInput; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; -import ic2.api.recipe.IRecipeInput; import ihl.utils.IHLUtils; public class UniversalRecipeManager { @@ -25,7 +25,8 @@ public class UniversalRecipeManager { machineRecipeManagers.put(machine1, this); } - private final Map recipes = new HashMap(); + private final Map recipes = new HashMap(); + private final Map keywordMap = new HashMap(); public void addRecipe(UniversalRecipeInput input, UniversalRecipeOutput output) { @@ -41,31 +42,53 @@ public class UniversalRecipeManager { } } - Iterator var8 = this.recipes.keySet().iterator(); + Iterator var8 = this.recipes.keySet().iterator(); while (var8.hasNext()) { UniversalRecipeInput existingInput = (UniversalRecipeInput)var8.next(); if (existingInput.matches(input)) { - Iterator ilist1 = existingInput.getItemInputs().iterator(); - Iterator ilist2 = input.getItemInputs().iterator(); - while(ilist1.hasNext()) + StringBuffer ssError =new StringBuffer(255); + ssError.append("Ambiguous recipe. \n"); + ssError.append("Existing input: \n"); + Iterator iii1 = existingInput.getItemInputs().iterator(); + Iterator fii1 = existingInput.getFluidInputs().iterator(); + while(iii1!=null && iii1.hasNext()) + { + ssError.append(iii1.next().toString()); + ssError.append(" \n"); + } + while(fii1!=null && fii1.hasNext()) { - IRecipeInput is = ilist1.next(); + ssError.append(fii1.next().toString()); + ssError.append(" \n"); } - System.out.println("recipe 2:"); - while(ilist2.hasNext()) + ssError.append("New input: \n"); + Iterator iii2 = input.getItemInputs().iterator(); + Iterator fii2 = input.getFluidInputs().iterator(); + while(iii2!=null && iii2.hasNext()) { - IRecipeInput is = ilist2.next(); + ssError.append(iii2.next().toString()); + ssError.append(" \n"); } - throw new RuntimeException("Ambiguous recipe."); + while(fii2!=null && fii2.hasNext()) + { + ssError.append(fii2.next().toString()); + ssError.append(" \n"); + } + throw new RuntimeException(ssError.toString()); } } this.recipes.put(input, output); } + public void addRecipe(String keyword, UniversalRecipeInput input, UniversalRecipeOutput output) + { + this.addRecipe(input, output); + this.keywordMap.put(keyword, input); + } public UniversalRecipeOutput getOutputFor(List fluidInputs, List itemInputs, boolean adjustInput, boolean inputAffectOutput) { @@ -75,14 +98,14 @@ public class UniversalRecipeManager { } else { - Iterator i$ = this.recipes.entrySet().iterator(); + Iterator> i$ = this.recipes.entrySet().iterator(); while (true) { if (i$.hasNext()) { - Entry entry = (Entry)i$.next(); - UniversalRecipeInput recipeInput = (UniversalRecipeInput)entry.getKey(); + Entry entry = i$.next(); + UniversalRecipeInput recipeInput = entry.getKey(); if (!recipeInput.matches(fluidInputs, itemInputs)) { @@ -91,7 +114,7 @@ public class UniversalRecipeManager { if (recipeInput.adjustAmounts(fluidInputs, itemInputs,true, false)) { - UniversalRecipeOutput output = (UniversalRecipeOutput)entry.getValue(); + UniversalRecipeOutput output = entry.getValue(); if (adjustInput) { if(inputAffectOutput) @@ -121,14 +144,14 @@ public class UniversalRecipeManager { public UniversalRecipeInput getRecipeInput(List fluidInputs1, List itemInputs1) { { - Iterator i$ = this.recipes.entrySet().iterator(); + Iterator> i$ = this.recipes.entrySet().iterator(); while (true) { if (i$.hasNext()) { - Entry entry = (Entry)i$.next(); - UniversalRecipeInput recipeInput = (UniversalRecipeInput)entry.getKey(); + Entry entry = i$.next(); + UniversalRecipeInput recipeInput = entry.getKey(); if (!recipeInput.matches(fluidInputs1,itemInputs1)) { @@ -147,12 +170,14 @@ public class UniversalRecipeManager { } + @SuppressWarnings({ "unchecked", "rawtypes" }) public UniversalRecipeOutput getOutputFor(List[] input, boolean adjustInput, boolean inputAffectOutput) { return this.getOutputFor(input[0], input[1], adjustInput, inputAffectOutput); } + @SuppressWarnings({ "unchecked", "rawtypes" }) public UniversalRecipeInput getRecipeInput(List[] input) { return this.getRecipeInput(input[0], input[1]); @@ -161,36 +186,34 @@ public class UniversalRecipeManager { public void removeRecipeByInput(UniversalRecipeInput uRecipeInput) { - Entry entryToRemove = null; List fluidInputs = IHLUtils.convertRecipeInputToFluidStackList(uRecipeInput.getFluidInputs()); List itemInputs = IHLUtils.convertRecipeInputToItemStackList(uRecipeInput.getItemInputs()); { - Iterator i$ = this.recipes.entrySet().iterator(); + Iterator> i$ = this.recipes.entrySet().iterator(); while (i$.hasNext()) { - Entry entry = (Entry)i$.next(); - UniversalRecipeInput recipeInput = (UniversalRecipeInput)entry.getKey(); - if (recipeInput.matches(fluidInputs, itemInputs)) - { - i$.remove(); - break; - } + Entry entry = i$.next(); + UniversalRecipeInput recipeInput = entry.getKey(); + if (recipeInput.matches(fluidInputs, itemInputs)) + { + i$.remove(); + break; + } } } } public void removeRecipeByOutput(UniversalRecipeOutput uRecipeOutput) { - Entry entryToRemove = null; - Iterator i$ = this.recipes.entrySet().iterator(); + Iterator> i$ = this.recipes.entrySet().iterator(); while (i$.hasNext()) { - Entry entry = (Entry)i$.next(); - UniversalRecipeOutput recipeOutput = (UniversalRecipeOutput)entry.getValue(); - if (recipeOutputHasCommonEntries(recipeOutput,uRecipeOutput)) - { - i$.remove(); - } + Entry entry = i$.next(); + UniversalRecipeOutput recipeOutput = entry.getValue(); + if (recipeOutputHasCommonEntries(recipeOutput,uRecipeOutput)) + { + i$.remove(); + } } } diff --git a/ihl/recipes/UniversalRecipeOutput.java b/ihl/recipes/UniversalRecipeOutput.java index bda2bcf..17c20e4 100644 --- a/ihl/recipes/UniversalRecipeOutput.java +++ b/ihl/recipes/UniversalRecipeOutput.java @@ -9,24 +9,22 @@ import net.minecraftforge.fluids.FluidStack; public class UniversalRecipeOutput{ - private final List fluidOutputs=new ArrayList(); - private final List itemOutputs=new ArrayList(); + 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) + public UniversalRecipeOutput(FluidStack[] fluidOutputs1, Object[] itemOutputs1, int time1) { this(fluidOutputs1, itemOutputs1, time1,false); } - public UniversalRecipeOutput(List fluidOutputs1, List itemOutputs1, int time1, boolean specialConditions1) + public UniversalRecipeOutput(FluidStack[] fluidStacks, Object[] recipeOutputItemStacks, int time1, boolean specialConditions1) { - if(fluidOutputs1!=null) + if(fluidStacks!=null) { - Iterator ioi = fluidOutputs1.iterator(); - while(ioi.hasNext()) + for(FluidStack fStack:fluidStacks) { - FluidStack fStack = ioi.next(); if(fStack==null) { throw new NullPointerException("Recipe cannot contain null elements!"); @@ -34,12 +32,10 @@ public class UniversalRecipeOutput{ fluidOutputs.add(fStack); } } - if(itemOutputs1!=null) + if(recipeOutputItemStacks!=null) { - Iterator ioi = itemOutputs1.iterator(); - while(ioi.hasNext()) + for(Object io:recipeOutputItemStacks) { - Object io = ioi.next(); if(io==null) { throw new NullPointerException("Recipe output cannot be null!"); @@ -58,6 +54,14 @@ public class UniversalRecipeOutput{ time=time1; } + public UniversalRecipeOutput(List recipeOutputsFluids, + List recipeOutputsRecipeOut, int time1) { + this.fluidOutputs.addAll(recipeOutputsFluids); + this.itemOutputs.addAll(recipeOutputsRecipeOut); + this.time=time1; + this.specialConditions=false; + } + public boolean matches(List fluidOutputs1, List itemOutputs1) { if(fluidOutputs.size()!=fluidOutputs1.size()||itemOutputs.size()!=itemOutputs.size()) @@ -98,27 +102,27 @@ public class UniversalRecipeOutput{ } public UniversalRecipeOutput copyWithMultiplier(int mulipier) { - ArrayList fluidStacks = new ArrayList(); - ArrayList itemStacks = new ArrayList(); + FluidStack[] fluidStacks = null; + RecipeOutputItemStack[] itemStacks = null; if(fluidOutputs!=null && !fluidOutputs.isEmpty()) { - Iterator fi = fluidOutputs.iterator(); - while(fi.hasNext()) + fluidStacks = new FluidStack[fluidOutputs.size()]; + for(int i=0;i ii = itemOutputs.iterator(); - while(ii.hasNext()) + itemStacks = new RecipeOutputItemStack[itemOutputs.size()]; + for(int i=0;i