aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/material
diff options
context:
space:
mode:
authorAlkalus <3060479+draknyte1@users.noreply.github.com>2018-05-24 08:12:44 +1000
committerAlkalus <3060479+draknyte1@users.noreply.github.com>2018-05-24 08:12:44 +1000
commit4af770de7faa9f6816d0cfd51858c5c5b77e758a (patch)
treeaca46e963bf84c4e38bf3f043158fdbcac9f5e38 /src/Java/gtPlusPlus/core/material
parentb44d061f6ca95236a873bb0835d0e2fd77b96851 (diff)
downloadGT5-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/material')
-rw-r--r--src/Java/gtPlusPlus/core/material/MaterialGenerator.java65
1 files changed, 41 insertions, 24 deletions
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);