aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus/core')
-rw-r--r--src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java12
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/CoalTar.java3
-rw-r--r--src/Java/gtPlusPlus/core/material/MaterialGenerator.java65
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/FluidUtils.java11
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