diff options
author | Alkalus <3060479+draknyte1@users.noreply.github.com> | 2018-05-24 08:12:44 +1000 |
---|---|---|
committer | Alkalus <3060479+draknyte1@users.noreply.github.com> | 2018-05-24 08:12:44 +1000 |
commit | 4af770de7faa9f6816d0cfd51858c5c5b77e758a (patch) | |
tree | aca46e963bf84c4e38bf3f043158fdbcac9f5e38 /src/Java/gtPlusPlus/xmod/gregtech | |
parent | b44d061f6ca95236a873bb0835d0e2fd77b96851 (diff) | |
download | GT5-Unofficial-4af770de7faa9f6816d0cfd51858c5c5b77e758a.tar.gz GT5-Unofficial-4af770de7faa9f6816d0cfd51858c5c5b77e758a.tar.bz2 GT5-Unofficial-4af770de7faa9f6816d0cfd51858c5c5b77e758a.zip |
+ Added a new interface RunnableWithInfo.java. Allows passing through type V and an object, for extra manipulation during runnable events where required.
$ Further improvements to the recipe generation system. Added safety catches in case a particular material is having issues, so as not to corrupt the whole map.
$ Added extra maps for recipes that get added from auto-generation elsewhere. Cached maps should also register to be run upon creation.
Diffstat (limited to 'src/Java/gtPlusPlus/xmod/gregtech')
11 files changed, 143 insertions, 41 deletions
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java index 37e61c433a..f0a816d405 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java @@ -6,12 +6,16 @@ import java.util.Set; import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; +import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.core.material.Material; +import gtPlusPlus.core.material.MaterialGenerator; -public class RecipeGen_AlloySmelter implements Runnable{ +public class RecipeGen_AlloySmelter extends RecipeGen_Base { - public static final Set<Runnable> mRecipeGenMap = new HashSet<Runnable>(); - final Material toGenerate; + public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } public RecipeGen_AlloySmelter(final Material M){ this.toGenerate = M; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Assembler.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Assembler.java index 2880c9f5bd..0182ca13e8 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Assembler.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Assembler.java @@ -7,14 +7,18 @@ import net.minecraft.item.ItemStack; import gregtech.api.enums.GT_Values; +import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.core.material.Material; +import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.util.minecraft.FluidUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; -public class RecipeGen_Assembler implements Runnable{ +public class RecipeGen_Assembler extends RecipeGen_Base { - public static final Set<Runnable> mRecipeGenMap = new HashSet<Runnable>(); - final Material toGenerate; + public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } public RecipeGen_Assembler(final Material M){ this.toGenerate = M; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Base.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Base.java new file mode 100644 index 0000000000..7e9153679f --- /dev/null +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Base.java @@ -0,0 +1,16 @@ +package gtPlusPlus.xmod.gregtech.loaders; + +import gtPlusPlus.api.interfaces.RunnableWithInfo; +import gtPlusPlus.core.material.Material; + +public abstract class RecipeGen_Base implements RunnableWithInfo<Material>{ + + protected Material toGenerate; + protected boolean disableOptional; + + @Override + public Material getInfoData() { + return toGenerate; + } + +} diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java index de634c1415..05f25e3cf0 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java @@ -9,12 +9,11 @@ import net.minecraft.item.ItemStack; import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; +import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.item.ModItems; import gtPlusPlus.core.lib.CORE; -import gtPlusPlus.core.material.ALLOY; -import gtPlusPlus.core.material.Material; -import gtPlusPlus.core.material.MaterialStack; +import gtPlusPlus.core.material.*; import gtPlusPlus.core.material.nuclear.FLUORIDES; import gtPlusPlus.core.material.nuclear.NUCLIDE; import gtPlusPlus.core.material.state.MaterialState; @@ -22,10 +21,12 @@ import gtPlusPlus.core.util.minecraft.FluidUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; import net.minecraftforge.fluids.FluidStack; -public class RecipeGen_BlastSmelter implements Runnable{ +public class RecipeGen_BlastSmelter extends RecipeGen_Base { - public static final Set<Runnable> mRecipeGenMap = new HashSet<Runnable>(); - final Material toGenerate; + public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } public RecipeGen_BlastSmelter(final Material M){ this.toGenerate = M; @@ -60,7 +61,6 @@ public class RecipeGen_BlastSmelter implements Runnable{ //Prepare some Variables ItemStack[] components; ArrayList<MaterialStack> tMaterial = new ArrayList<>(); - short counter=0; int inputStackCount=0; int fluidAmount=0; final boolean doTest = true; @@ -171,10 +171,7 @@ public class RecipeGen_BlastSmelter implements Runnable{ if (tMaterial != null){ //Reset the Variables for compounds if last recipe was a success. inputStackCount=0; - counter=0; - - - + //If this Material has some kind of compound list, proceed if (mMaterialListSize > 1){ final gtPlusPlus.core.material.MaterialStack[] tempStack = new gtPlusPlus.core.material.MaterialStack[mMaterialListSize]; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java index 369178abd0..1b392a5d10 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java @@ -8,8 +8,10 @@ import net.minecraft.item.ItemStack; import gregtech.api.enums.GT_Values; import gregtech.api.util.GT_ModHandler; +import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.material.Material; +import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.material.MaterialStack; import gtPlusPlus.core.material.state.MaterialState; import gtPlusPlus.core.recipe.common.CI; @@ -17,12 +19,12 @@ import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.core.util.minecraft.RecipeUtils; import net.minecraftforge.fluids.FluidStack; -public class RecipeGen_DustGeneration implements Runnable{ +public class RecipeGen_DustGeneration extends RecipeGen_Base { - public static final Set<Runnable> mRecipeGenMap = new HashSet<Runnable>(); - - final Material toGenerate; - final boolean disableOptional; + public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } public RecipeGen_DustGeneration(final Material M){ this(M, false); @@ -307,5 +309,6 @@ public class RecipeGen_DustGeneration implements Runnable{ } return false; } + } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Extruder.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Extruder.java index 3b518c06d9..08008994ea 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Extruder.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Extruder.java @@ -9,13 +9,17 @@ import gregtech.api.GregTech_API; import gregtech.api.enums.ItemList; import gregtech.api.util.GT_Recipe; +import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.material.Material; +import gtPlusPlus.core.material.MaterialGenerator; -public class RecipeGen_Extruder implements Runnable{ +public class RecipeGen_Extruder extends RecipeGen_Base { - public static final Set<Runnable> mRecipeGenMap = new HashSet<Runnable>(); - final Material toGenerate; + public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } public RecipeGen_Extruder(final Material M){ this.toGenerate = M; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_FluidCanning.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_FluidCanning.java new file mode 100644 index 0000000000..be25b793a9 --- /dev/null +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_FluidCanning.java @@ -0,0 +1,61 @@ +package gtPlusPlus.xmod.gregtech.loaders; + +import java.util.HashSet; +import java.util.Set; + +import gregtech.api.enums.GT_Values; +import gregtech.api.util.GT_Recipe; + +import gtPlusPlus.api.interfaces.RunnableWithInfo; +import gtPlusPlus.core.material.Material; +import gtPlusPlus.core.material.MaterialGenerator; + +public class RecipeGen_FluidCanning extends RecipeGen_Base { + + public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } + + private final GT_Recipe recipe; + public RecipeGen_FluidCanning(GT_Recipe g) { + this(g, true); + } + public RecipeGen_FluidCanning(GT_Recipe g, boolean extracting) { + recipe = g; + mRecipeGenMap.add(this); + disableOptional = extracting; + } + + @Override + public void run() { + generateRecipes(); + } + + private void generateRecipes() { + if (recipe != null) { + //Used to store Fluid extraction state + if (this.disableOptional) { + GT_Values.RA.addFluidExtractionRecipe( + recipe.mInputs[0], //Input + recipe.mInputs[1], //Input 2 + recipe.mFluidOutputs[0], //Fluid Output + recipe.mSpecialValue, //Chance + recipe.mDuration, //Duration + recipe.mEUt //Eu Tick + ); + } + else { + GT_Values.RA.addFluidCannerRecipe( + recipe.mInputs[0], //Input + recipe.mInputs[1], //Input 2 + recipe.mFluidInputs[0], //Fluid Input + recipe.mFluidOutputs[0] //Fluid Output + ); + + } + + } + } + +} diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Fluids.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Fluids.java index a3bb3fb080..5ff646eee2 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Fluids.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Fluids.java @@ -6,15 +6,17 @@ import java.util.Set; import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; +import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.material.Material; +import gtPlusPlus.core.material.MaterialGenerator; -public class RecipeGen_Fluids implements Runnable{ +public class RecipeGen_Fluids extends RecipeGen_Base { - public static final Set<Runnable> mRecipeGenMap = new HashSet<Runnable>(); - - final Material toGenerate; - final boolean disableOptional; + public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } public RecipeGen_Fluids(final Material M){ this(M, false); diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MaterialProcessing.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MaterialProcessing.java index ecf98351c3..07f806c9c9 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MaterialProcessing.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MaterialProcessing.java @@ -9,21 +9,24 @@ import gregtech.api.GregTech_API; import gregtech.api.enums.GT_Values; import gregtech.api.util.GT_Recipe; +import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.data.AutoMap; import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.material.Material; +import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.material.MaterialStack; import gtPlusPlus.core.material.state.MaterialState; import gtPlusPlus.core.util.minecraft.ItemUtils; import net.minecraftforge.fluids.FluidStack; -public class RecipeGen_MaterialProcessing implements Runnable{ +public class RecipeGen_MaterialProcessing extends RecipeGen_Base { - public static final Set<Runnable> mRecipeGenMap = new HashSet<Runnable>(); - - final Material toGenerate; + public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } public RecipeGen_MaterialProcessing(final Material M){ this.toGenerate = M; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java index 69afb4dec0..001c494356 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java @@ -10,13 +10,17 @@ import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; import gregtech.api.util.GT_Recipe; +import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.material.Material; +import gtPlusPlus.core.material.MaterialGenerator; -public class RecipeGen_Plates implements Runnable{ +public class RecipeGen_Plates extends RecipeGen_Base { - public static final Set<Runnable> mRecipeGenMap = new HashSet<Runnable>(); - final Material toGenerate; + public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } public RecipeGen_Plates(final Material M){ this.toGenerate = M; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_ShapedCrafting.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_ShapedCrafting.java index 4f2a4ff43d..fce4bad318 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_ShapedCrafting.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_ShapedCrafting.java @@ -7,17 +7,21 @@ import net.minecraft.item.ItemStack; import gregtech.api.util.GT_ModHandler; +import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.lib.LoadedMods; import gtPlusPlus.core.material.Material; +import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.util.minecraft.RecipeUtils; -public class RecipeGen_ShapedCrafting implements Runnable{ - - public static final Set<Runnable> mRecipeGenMap = new HashSet<Runnable>(); - final Material toGenerate; +public class RecipeGen_ShapedCrafting extends RecipeGen_Base { + public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } + public RecipeGen_ShapedCrafting(final Material M){ this.toGenerate = M; mRecipeGenMap.add(this); |