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/core | |
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/core')
4 files changed, 59 insertions, 32 deletions
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 |