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 | |
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.
19 files changed, 222 insertions, 78 deletions
diff --git a/src/Java/gtPlusPlus/api/interfaces/RunnableWithInfo.java b/src/Java/gtPlusPlus/api/interfaces/RunnableWithInfo.java new file mode 100644 index 0000000000..4f4b9d7acd --- /dev/null +++ b/src/Java/gtPlusPlus/api/interfaces/RunnableWithInfo.java @@ -0,0 +1,12 @@ +package gtPlusPlus.api.interfaces; + +public interface RunnableWithInfo<V> extends Runnable { + + public V getInfoData(); + + default public Class<?> getInfoDataType() { + return getInfoData().getClass(); + } + + +} diff --git a/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java b/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java index 7f35c3b9b9..efbb4add7e 100644 --- a/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java +++ b/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java @@ -11,12 +11,14 @@ import net.minecraft.item.ItemStack; import gregtech.api.enums.GT_Values; import gregtech.api.util.GT_OreDictUnificator; +import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.common.compat.*; import gtPlusPlus.core.handler.Recipes.LateRegistrationHandler; import gtPlusPlus.core.handler.Recipes.RegistrationHandler; import gtPlusPlus.core.item.ModItems; import gtPlusPlus.core.lib.LoadedMods; +import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.recipe.*; import gtPlusPlus.core.util.minecraft.ItemUtils; @@ -173,9 +175,15 @@ public class COMPAT_HANDLER { //Add hand-made recipes RECIPES_GREGTECH.run(); //Add autogenerated Recipes from Item Components - for (Set<Runnable> m : MaterialGenerator.mRecipeMapsToGenerate) { - for (Runnable r : m) { + for (Set<RunnableWithInfo<Material>> m : MaterialGenerator.mRecipeMapsToGenerate) { + for (RunnableWithInfo<Material> r : m) { + try { r.run(); + } + catch (Throwable t) { + t.printStackTrace(); + Logger.INFO("[ERROR] "+r.getInfoData().getLocalizedName()+" recipes failed to generated."); + } } } RecipeGen_Recycling.executeGenerators(); diff --git a/src/Java/gtPlusPlus/core/item/chemistry/CoalTar.java b/src/Java/gtPlusPlus/core/item/chemistry/CoalTar.java index f87c5a9ead..2052a8d910 100644 --- a/src/Java/gtPlusPlus/core/item/chemistry/CoalTar.java +++ b/src/Java/gtPlusPlus/core/item/chemistry/CoalTar.java @@ -12,6 +12,7 @@ import gregtech.api.util.GT_OreDictUnificator; import gtPlusPlus.core.item.ModItems; import gtPlusPlus.core.item.base.BaseItemComponent; import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.recipe.common.CI; import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.minecraft.FluidUtils; @@ -62,7 +63,7 @@ public class CoalTar { else { Toluene = FluidUtils.getFluidStack("liquid_toluene", 1000).getFluid(); Item itemCellToluene = new BaseItemComponent("Toluene", "Toluene", new short[]{140, 70, 20, 100}); - GT_Values.RA.addFluidCannerRecipe(ItemUtils.getEmptyCell(), ItemUtils.getSimpleStack(itemCellToluene), FluidUtils.getFluidStack("liquid_toluene", 1000), null); + MaterialGenerator.addFluidCannerRecipe(ItemUtils.getEmptyCell(), ItemUtils.getSimpleStack(itemCellToluene), FluidUtils.getFluidStack("liquid_toluene", 1000), null); } //Create Coal Tar diff --git a/src/Java/gtPlusPlus/core/material/MaterialGenerator.java b/src/Java/gtPlusPlus/core/material/MaterialGenerator.java index f1155c33f5..256e78a698 100644 --- a/src/Java/gtPlusPlus/core/material/MaterialGenerator.java +++ b/src/Java/gtPlusPlus/core/material/MaterialGenerator.java @@ -4,7 +4,13 @@ import java.util.Set; import net.minecraft.block.Block; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import gregtech.api.enums.GT_Values; +import gregtech.api.util.GT_Recipe; +import gregtech.api.util.Recipe_GT; + +import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.data.AutoMap; import gtPlusPlus.core.block.base.BasicBlock.BlockTypes; @@ -29,21 +35,45 @@ import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.minecraft.FluidUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.xmod.gregtech.loaders.*; +import net.minecraftforge.fluids.FluidStack; public class MaterialGenerator { - public static final AutoMap<Set<Runnable>> mRecipeMapsToGenerate = new AutoMap<Set<Runnable>>(); + public static final AutoMap<Set<RunnableWithInfo<Material>>> mRecipeMapsToGenerate = new AutoMap<Set<RunnableWithInfo<Material>>>(); + + @SuppressWarnings("unused") + private static volatile Item temp; + @SuppressWarnings("unused") + private static volatile Block tempBlock; - static { - mRecipeMapsToGenerate.put(RecipeGen_DustGeneration.mRecipeGenMap); - mRecipeMapsToGenerate.put(RecipeGen_MaterialProcessing.mRecipeGenMap); - mRecipeMapsToGenerate.put(RecipeGen_Fluids.mRecipeGenMap); - mRecipeMapsToGenerate.put(RecipeGen_ShapedCrafting.mRecipeGenMap); - mRecipeMapsToGenerate.put(RecipeGen_Assembler.mRecipeGenMap); - mRecipeMapsToGenerate.put(RecipeGen_Extruder.mRecipeGenMap); - mRecipeMapsToGenerate.put(RecipeGen_Plates.mRecipeGenMap); - mRecipeMapsToGenerate.put(RecipeGen_AlloySmelter.mRecipeGenMap); - mRecipeMapsToGenerate.put(RecipeGen_BlastSmelter.mRecipeGenMap); + public static void addFluidExtractionRecipe(ItemStack a, Object b, FluidStack c, int a1, int a2, int a3) { + GT_Recipe r = new Recipe_GT( + true, + new ItemStack[] {a, (ItemStack) b}, + new ItemStack[] {}, + null, + new int[] {}, + new FluidStack[] {}, + new FluidStack[] {c}, + a2, a3, a1); + new RecipeGen_FluidCanning(r, true); + } + + public static void addFluidCannerRecipe(ItemStack aFullContainer, ItemStack aEmpty, FluidStack rFluidIn, FluidStack rFluidOut) { + GT_Recipe r = new Recipe_GT( + true, + new ItemStack[] {aEmpty}, + new ItemStack[] {aFullContainer}, + null, + new int[] {}, + new FluidStack[] {rFluidIn}, + new FluidStack[] {rFluidOut}, + 0, 0, 0); + new RecipeGen_FluidCanning(r, false); + } + + public static void generateFluidExtractorRecipe(GT_Recipe recipe, boolean extracting) { + new RecipeGen_FluidCanning(recipe, extracting); } public static void generate(final Material matInfo){ @@ -76,8 +106,6 @@ public class MaterialGenerator { if (matInfo.getState() == MaterialState.SOLID){ if (generateEverything == true){ if (sRadiation >= 1){ - Item temp; - Block tempBlock; tempBlock = new BlockBaseModular(unlocalizedName, materialName,BlockTypes.STANDARD, Colour); temp = new BaseItemIngot(matInfo); @@ -91,8 +119,6 @@ public class MaterialGenerator { } else { - Item temp; - Block tempBlock; tempBlock = new BlockBaseModular(unlocalizedName, materialName,BlockTypes.STANDARD, Colour); tempBlock = new BlockBaseModular(unlocalizedName, materialName,BlockTypes.FRAME, Colour); temp = new BaseItemIngot(matInfo); @@ -114,8 +140,6 @@ public class MaterialGenerator { temp = new BaseItemGear(matInfo); } } else { - Item temp; - Block tempBlock; tempBlock = new BlockBaseModular(unlocalizedName, materialName,BlockTypes.STANDARD, Colour); temp = new BaseItemIngot(matInfo); @@ -128,9 +152,7 @@ public class MaterialGenerator { } } else if (matInfo.getState() == MaterialState.LIQUID){ - Item temp; if (generateEverything == true){ - Block tempBlock; tempBlock = new BlockBaseModular(unlocalizedName, materialName,BlockTypes.STANDARD, Colour); } temp = new BaseItemIngot(matInfo); @@ -190,7 +212,6 @@ public class MaterialGenerator { } if (matInfo.getState() == MaterialState.SOLID){ - Item temp; temp = new BaseItemDust("itemDust"+unlocalizedName, materialName, matInfo, Colour, "Dust", materialTier, sRadiation, false); temp = new BaseItemDust("itemDustTiny"+unlocalizedName, materialName, matInfo, Colour, "Tiny", materialTier, sRadiation, false); temp = new BaseItemDust("itemDustSmall"+unlocalizedName, materialName, matInfo, Colour, "Small", materialTier, sRadiation, false); @@ -214,7 +235,6 @@ public class MaterialGenerator { generateNuclearMaterial(matInfo, true); } - @SuppressWarnings("unused") public static void generateNuclearMaterial(final Material matInfo, final boolean generatePlates){ try { final String unlocalizedName = matInfo.getUnlocalizedName(); @@ -227,9 +247,6 @@ public class MaterialGenerator { sRadiation = matInfo.vRadiationLevel; } - Item temp; - Block tempBlock; - tempBlock = new BlockBaseModular(unlocalizedName, materialName,BlockTypes.STANDARD, Colour); temp = new BaseItemDust("itemDust"+unlocalizedName, materialName, matInfo, Colour, "Dust", 3, sRadiation); temp = new BaseItemDust("itemDustTiny"+unlocalizedName, materialName, matInfo, Colour, "Tiny", 2, sRadiation); diff --git a/src/Java/gtPlusPlus/core/util/minecraft/FluidUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/FluidUtils.java index f7f3906d18..08b37645eb 100644 --- a/src/Java/gtPlusPlus/core/util/minecraft/FluidUtils.java +++ b/src/Java/gtPlusPlus/core/util/minecraft/FluidUtils.java @@ -16,6 +16,7 @@ import gtPlusPlus.core.item.base.BaseItemComponent; import gtPlusPlus.core.item.base.cell.BaseItemCell; import gtPlusPlus.core.item.base.cell.BaseItemPlasmaCell; import gtPlusPlus.core.material.Material; +import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.material.MaterialStack; import gtPlusPlus.core.util.Utils; import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials; @@ -233,7 +234,7 @@ public class FluidUtils { } } if ((aFullContainer != null) && (aEmptyContainer != null) && !FluidContainerRegistry.registerFluidContainer(new FluidStack(rFluid, aFluidAmount), aFullContainer, aEmptyContainer)) { - GT_Values.RA.addFluidCannerRecipe(aFullContainer, container(aFullContainer, false), null, new FluidStack(rFluid, aFluidAmount)); + MaterialGenerator.addFluidCannerRecipe(aFullContainer, container(aFullContainer, false), null, new FluidStack(rFluid, aFluidAmount)); } return rFluid; } @@ -327,7 +328,7 @@ public class FluidUtils { rFluid.setTemperature((int) (aTemperatureK)); } if ((aFullContainer != null) && (aEmptyContainer != null) && !FluidContainerRegistry.registerFluidContainer(new FluidStack(rFluid, aFluidAmount), aFullContainer, aEmptyContainer)) { - GT_Values.RA.addFluidCannerRecipe(aFullContainer, container(aFullContainer, false), null, new FluidStack(rFluid, aFluidAmount)); + MaterialGenerator.addFluidCannerRecipe(aFullContainer, container(aFullContainer, false), null, new FluidStack(rFluid, aFluidAmount)); } else { //Utils.LOG_INFO("Failed creating recipes to fill/empty cells of "+aName+"."); @@ -440,7 +441,7 @@ public class FluidUtils { 1000); //Disable this, not sure why it exists //TODO - /*GT_Values.RA.addFluidExtractionRecipe( + /*MaterialGenerator.addFluidExtractionRecipe( ItemUtils.getItemStackOfAmountFromOreDictNoBroken("dust"+Utils.sanitizeString(localizedName), 1), //Input null, //Input 2 FluidUtils.getFluidStack(gtFluid, 144), //Fluid Output @@ -485,7 +486,7 @@ public class FluidUtils { 1000); if (dustStack != null){ - GT_Values.RA.addFluidExtractionRecipe( + MaterialGenerator.addFluidExtractionRecipe( dustStack, //Input null, //Input 2 FluidUtils.getFluidStack(gtFluid, amountPerItem), //Fluid Output @@ -495,7 +496,7 @@ public class FluidUtils { ); } if (dustStack2 != null){ - GT_Values.RA.addFluidExtractionRecipe( + MaterialGenerator.addFluidExtractionRecipe( dustStack2, //Input null, //Input 2 FluidUtils.getFluidStack(gtFluid, amountPerItem), //Fluid Output diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/custom/GTPP_Bees.java b/src/Java/gtPlusPlus/xmod/forestry/bees/custom/GTPP_Bees.java index e2a67197d3..29ece40c3d 100644 --- a/src/Java/gtPlusPlus/xmod/forestry/bees/custom/GTPP_Bees.java +++ b/src/Java/gtPlusPlus/xmod/forestry/bees/custom/GTPP_Bees.java @@ -21,6 +21,7 @@ import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.item.base.ingots.BaseItemIngot_OLD; import gtPlusPlus.core.item.base.misc.BaseItemMisc; import gtPlusPlus.core.item.base.misc.BaseItemMisc.MiscTypes; +import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.minecraft.FluidUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; @@ -109,8 +110,8 @@ public class GTPP_Bees { addExtractorRecipe(ItemUtils.getSimpleStack(dropFluorineBlob), FluidUtils.getFluidStack("fluorine", 4)); } - private boolean addExtractorRecipe(ItemStack input, FluidStack output){ - return GT_Values.RA.addFluidExtractionRecipe( + private void addExtractorRecipe(ItemStack input, FluidStack output){ + MaterialGenerator.addFluidExtractionRecipe( input, null, output, 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); diff --git a/src/Java/gtPlusPlus/xmod/growthcraft/fishtrap/FishTrapHandler.java b/src/Java/gtPlusPlus/xmod/growthcraft/fishtrap/FishTrapHandler.java index 66d98fe451..2eb8377036 100644 --- a/src/Java/gtPlusPlus/xmod/growthcraft/fishtrap/FishTrapHandler.java +++ b/src/Java/gtPlusPlus/xmod/growthcraft/fishtrap/FishTrapHandler.java @@ -10,6 +10,7 @@ import gregtech.api.util.GT_ModHandler; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.lib.LoadedMods; +import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.util.minecraft.FluidUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; @@ -220,7 +221,7 @@ public class FishTrapHandler { private static void addGregtechFluidRecipe(final ItemStack input){ if (LoadedMods.Gregtech){ - GT_Values.RA.addFluidExtractionRecipe(input, null, FluidUtils.getFluidStack("fishoil", 4), 0, (64/4), 4); //4eu/t total eu used = 64 so time = 64/4 + MaterialGenerator.addFluidExtractionRecipe(input, null, FluidUtils.getFluidStack("fishoil", 4), 0, (64/4), 4); //4eu/t total eu used = 64 so time = 64/4 } } diff --git a/src/Java/gtPlusPlus/xmod/thermalfoundation/recipe/TF_Gregtech_Recipes.java b/src/Java/gtPlusPlus/xmod/thermalfoundation/recipe/TF_Gregtech_Recipes.java index e3aaa1ae2f..3344833ca8 100644 --- a/src/Java/gtPlusPlus/xmod/thermalfoundation/recipe/TF_Gregtech_Recipes.java +++ b/src/Java/gtPlusPlus/xmod/thermalfoundation/recipe/TF_Gregtech_Recipes.java @@ -11,6 +11,7 @@ import gregtech.api.util.GT_OreDictUnificator; import cofh.lib.util.helpers.ItemHelper; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.xmod.thermalfoundation.item.TF_Items; import net.minecraftforge.fluids.FluidRegistry; @@ -33,7 +34,7 @@ public class TF_Gregtech_Recipes { //Gelid Cryotheum Logger.INFO("Adding Recipes for Gelid Cryotheum"); - GT_Values.RA.addFluidExtractionRecipe(dust_Cryotheum, GT_Values.NI, getFluidStack("cryotheum", 144), 10000, 200, 240); + MaterialGenerator.addFluidExtractionRecipe(dust_Cryotheum, GT_Values.NI, getFluidStack("cryotheum", 144), 10000, 200, 240); GT_Values.RA.addChemicalBathRecipe((GT_OreDictUnificator.get(OrePrefixes.ore, Materials.Cinnabar, 1L)), getFluidStack("cryotheum", 144), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Cinnabar, 3L), GT_Values.NI, GT_Values.NI, null, 400, 30); //Blizz Powder @@ -47,7 +48,7 @@ public class TF_Gregtech_Recipes { //Blazing Pyrotheum Logger.INFO("Adding Recipes for Blazing Pyrotheum"); - GT_Values.RA.addFluidExtractionRecipe(dust_Pyrotheum, GT_Values.NI, getFluidStack("pyrotheum", 250), 10000, 200, 240); + MaterialGenerator.addFluidExtractionRecipe(dust_Pyrotheum, GT_Values.NI, getFluidStack("pyrotheum", 250), 10000, 200, 240); ItemStack dustCoal = ItemUtils.getItemStackOfAmountFromOreDict("dustCoal", 1); |