aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/material
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus/core/material')
-rw-r--r--src/Java/gtPlusPlus/core/material/Material.java52
-rw-r--r--src/Java/gtPlusPlus/core/material/MaterialGenerator.java61
2 files changed, 90 insertions, 23 deletions
diff --git a/src/Java/gtPlusPlus/core/material/Material.java b/src/Java/gtPlusPlus/core/material/Material.java
index 13c7e99887..f02e21291a 100644
--- a/src/Java/gtPlusPlus/core/material/Material.java
+++ b/src/Java/gtPlusPlus/core/material/Material.java
@@ -3,6 +3,8 @@ package gtPlusPlus.core.material;
import static gregtech.api.enums.GT_Values.M;
import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Set;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
@@ -27,6 +29,8 @@ import net.minecraftforge.fluids.FluidStack;
public class Material {
+ public static final Set<Material> mMaterialMap = new HashSet<Material>();
+
private String unlocalizedName;
private String localizedName;
@@ -117,6 +121,11 @@ public class Material {
}
public Material(final String materialName, final MaterialState defaultState, final TextureSet set, final long durability, final short[] rgba, final int meltingPoint, final int boilingPoint, final long protons, final long neutrons, final boolean blastFurnace, final String chemicalSymbol, final int radiationLevel, boolean generateCells, boolean generateFluid, final MaterialStack... inputs){
+
+ if (mMaterialMap.add(this)) {
+ //Placeholder
+ }
+
try {
this.unlocalizedName = Utils.sanitizeString(materialName);
this.localizedName = materialName;
@@ -293,7 +302,7 @@ public class Material {
this.vMoltenFluid = FluidUtils.getFluidStack(localizedName, 1).getFluid();
}
else if (isValid == null || isValid == Materials._NULL){
- this.vMoltenFluid = this.generateFluid();
+ queueFluidGeneration();
}
else {
if (isValid.mFluid != null){
@@ -303,7 +312,7 @@ public class Material {
this.vMoltenFluid = isValid.mGas;
}
else {
- this.vMoltenFluid = this.generateFluid();
+ queueFluidGeneration();
}
}
@@ -744,6 +753,21 @@ public class Material {
}
+ public final boolean queueFluidGeneration() {
+ return isFluidQueued = true;
+ }
+
+ public final static void generateQueuedFluids() {
+ for (Material m : mMaterialMap) {
+ if (m.isFluidQueued) {
+ m.vMoltenFluid = m.generateFluid();
+ }
+ }
+ }
+
+ //If we need a fluid, let's just queue it for later.
+ public boolean isFluidQueued = false;
+
public final Fluid generateFluid(){
if (this.materialState == MaterialState.ORE){
return null;
@@ -817,6 +841,24 @@ public class Material {
}
}
+ FluidStack aTest1 = FluidUtils.getFluidStack("molten."+Utils.sanitizeString(this.getLocalizedName()), 1);
+ FluidStack aTest2 = FluidUtils.getFluidStack("fluid."+Utils.sanitizeString(this.getLocalizedName()), 1);
+ FluidStack aTest3 = FluidUtils.getFluidStack(Utils.sanitizeString(this.getLocalizedName()), 1);
+
+ if (aTest1 != null) {
+ Logger.INFO("Found FluidRegistry entry for "+"molten."+Utils.sanitizeString(this.getLocalizedName()));
+ return aTest1.getFluid();
+ }
+ if (aTest2 != null) {
+ Logger.INFO("Found FluidRegistry entry for "+"fluid."+Utils.sanitizeString(this.getLocalizedName()));
+ return aTest2.getFluid();
+ }
+ if (aTest3 != null) {
+ Logger.INFO("Found FluidRegistry entry for "+Utils.sanitizeString(this.getLocalizedName()));
+ return aTest3.getFluid();
+ }
+
+
Logger.INFO("Generating our own fluid.");
//Generate a Cell if we need to
if (ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cell"+this.getUnlocalizedName(), 1) == null){
@@ -837,7 +879,7 @@ public class Material {
this.materialState.ID(),
this.getMeltingPointK(),
ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cell"+this.getUnlocalizedName(), 1),
- ItemList.Cell_Empty.get(1L, new Object[0]),
+ ItemUtils.getEmptyCell(),
1000);
}
else if (this.materialState == MaterialState.LIQUID){
@@ -848,7 +890,7 @@ public class Material {
this.materialState.ID(),
this.getMeltingPointK(),
ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cell"+this.getUnlocalizedName(), 1),
- ItemList.Cell_Empty.get(1L, new Object[0]),
+ ItemUtils.getEmptyCell(),
1000);
}
else if (this.materialState == MaterialState.GAS){
@@ -859,7 +901,7 @@ public class Material {
this.materialState.ID(),
this.getMeltingPointK(),
ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cell"+this.getUnlocalizedName(), 1),
- ItemList.Cell_Empty.get(1L, new Object[0]),
+ ItemUtils.getEmptyCell(),
1000);
}
else { //Plasma
diff --git a/src/Java/gtPlusPlus/core/material/MaterialGenerator.java b/src/Java/gtPlusPlus/core/material/MaterialGenerator.java
index 4dc7987448..f1155c33f5 100644
--- a/src/Java/gtPlusPlus/core/material/MaterialGenerator.java
+++ b/src/Java/gtPlusPlus/core/material/MaterialGenerator.java
@@ -1,9 +1,12 @@
package gtPlusPlus.core.material;
+import java.util.Set;
+
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.core.block.base.BasicBlock.BlockTypes;
import gtPlusPlus.core.block.base.BlockBaseModular;
import gtPlusPlus.core.block.base.BlockBaseOre;
@@ -29,6 +32,20 @@ import gtPlusPlus.xmod.gregtech.loaders.*;
public class MaterialGenerator {
+ public static final AutoMap<Set<Runnable>> mRecipeMapsToGenerate = new AutoMap<Set<Runnable>>();
+
+ 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 generate(final Material matInfo){
generate(matInfo, true);
}
@@ -133,17 +150,18 @@ public class MaterialGenerator {
}
//Add A jillion Recipes - old code
- RecipeGen_AlloySmelter.generateRecipes(matInfo);
- RecipeGen_Assembler.generateRecipes(matInfo);
+ new RecipeGen_AlloySmelter(matInfo);
+ new RecipeGen_Assembler(matInfo);
if (generateBlastSmelterRecipes){
- RecipeGen_BlastSmelter.generateARecipe(matInfo);
+ new RecipeGen_BlastSmelter(matInfo);
}
- RecipeGen_DustGeneration.generateRecipes(matInfo);
- RecipeGen_Extruder.generateRecipes(matInfo);
- RecipeGen_Fluids.generateRecipes(matInfo);
- RecipeGen_Plates.generateRecipes(matInfo);
- RecipeGen_ShapedCrafting.generateRecipes(matInfo);
- RecipeGen_MaterialProcessing.generateRecipes(matInfo);
+ new RecipeGen_Extruder(matInfo);
+ new RecipeGen_Fluids(matInfo);
+ new RecipeGen_Plates(matInfo);
+ new RecipeGen_ShapedCrafting(matInfo);
+ new RecipeGen_MaterialProcessing(matInfo);
+
+ new RecipeGen_DustGeneration(matInfo);
new RecipeGen_Recycling(matInfo);
return true;
@@ -179,9 +197,16 @@ public class MaterialGenerator {
}
//Add A jillion Recipes - old code
+ try {
RecipeGen_DustGeneration.addMixerRecipe_Standalone(matInfo);
- RecipeGen_Fluids.generateRecipes(matInfo);
- RecipeGen_MaterialProcessing.generateRecipes(matInfo);
+ new RecipeGen_Fluids(matInfo);
+ new RecipeGen_MaterialProcessing(matInfo);
+ }
+ catch (Throwable t) {
+ Logger.INFO("Failed to generate some recipes for "+materialName);
+ Logger.ERROR("Failed to generate some recipes for "+materialName);
+ t.printStackTrace();
+ }
//RecipeGen_Recycling.generateRecipes(matInfo);
}
@@ -216,15 +241,15 @@ public class MaterialGenerator {
if (generatePlates) {
temp = new BaseItemPlate(matInfo);
temp = new BaseItemPlateDouble(matInfo);
- RecipeGen_Plates.generateRecipes(matInfo);
- RecipeGen_Extruder.generateRecipes(matInfo);
- RecipeGen_Assembler.generateRecipes(matInfo);
+ new RecipeGen_Plates(matInfo);
+ new RecipeGen_Extruder(matInfo);
+ new RecipeGen_Assembler(matInfo);
}
- RecipeGen_ShapedCrafting.generateRecipes(matInfo);
- RecipeGen_Fluids.generateRecipes(matInfo);
- RecipeGen_MaterialProcessing.generateRecipes(matInfo);
- RecipeGen_DustGeneration.generateRecipes(matInfo, true);
+ new RecipeGen_ShapedCrafting(matInfo);
+ new RecipeGen_Fluids(matInfo);
+ new RecipeGen_MaterialProcessing(matInfo);
+ new RecipeGen_DustGeneration(matInfo, true);
new RecipeGen_Recycling(matInfo);
} catch (final Throwable t){