aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Java/gtPlusPlus/api/objects/MaterialHelper.java14
-rw-r--r--src/Java/gtPlusPlus/core/material/MaterialGenerator.java15
-rw-r--r--src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java12
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java242
4 files changed, 273 insertions, 10 deletions
diff --git a/src/Java/gtPlusPlus/api/objects/MaterialHelper.java b/src/Java/gtPlusPlus/api/objects/MaterialHelper.java
new file mode 100644
index 0000000000..9ffecefb26
--- /dev/null
+++ b/src/Java/gtPlusPlus/api/objects/MaterialHelper.java
@@ -0,0 +1,14 @@
+package gtPlusPlus.api.objects;
+
+import gregtech.api.enums.OrePrefixes;
+import gtPlusPlus.core.material.Material;
+import gtPlusPlus.core.util.item.ItemUtils;
+import net.minecraft.item.ItemStack;
+
+public class MaterialHelper {
+
+ public static ItemStack getComponentFromMaterial(OrePrefixes oreprefix, Material material, int amount){
+ return ItemUtils.getOrePrefixStack(oreprefix, material, amount);
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/core/material/MaterialGenerator.java b/src/Java/gtPlusPlus/core/material/MaterialGenerator.java
index 33bddd3a4f..cfb6fbf9ee 100644
--- a/src/Java/gtPlusPlus/core/material/MaterialGenerator.java
+++ b/src/Java/gtPlusPlus/core/material/MaterialGenerator.java
@@ -261,22 +261,17 @@ public class MaterialGenerator {
tempBlock = new BlockBaseOre(matInfo ,BlockTypes.ORE, Colour);
- temp = new BaseItemDust("itemDust"+unlocalizedName, materialName, matInfo, Colour, "Dust", matInfo.vTier, sRadiation);
- temp = new BaseItemDust("itemDustTiny"+unlocalizedName, materialName, matInfo, Colour, "Tiny", matInfo.vTier, sRadiation);
- temp = new BaseItemDust("itemDustSmall"+unlocalizedName, materialName, matInfo, Colour, "Small", matInfo.vTier, sRadiation);
+ temp = new BaseItemDust("itemDust"+unlocalizedName, materialName, matInfo, Colour, "Dust", matInfo.vTier, sRadiation, false);
+ temp = new BaseItemDust("itemDustTiny"+unlocalizedName, materialName, matInfo, Colour, "Tiny", matInfo.vTier, sRadiation, false);
+ temp = new BaseItemDust("itemDustSmall"+unlocalizedName, materialName, matInfo, Colour, "Small", matInfo.vTier, sRadiation, false);
temp = new BaseItemCrushedOre(matInfo);
temp = new BaseItemCentrifugedCrushedOre(matInfo);
temp = new BaseItemPurifiedCrushedOre(matInfo);
temp = new BaseItemImpureDust(matInfo);
temp = new BaseItemPurifiedDust(matInfo);
- RecipeGen_Plates.generateRecipes(matInfo);
- RecipeGen_Extruder.generateRecipes(matInfo);
- RecipeGen_ShapedCrafting.generateRecipes(matInfo);
- RecipeGen_Fluids.generateRecipes(matInfo);
- RecipeGen_Assembler.generateRecipes(matInfo);
- RecipeGen_DustGeneration.generateRecipes(matInfo, true);
- new RecipeGen_Recycling(matInfo);
+ RecipeGen_Ore.generateRecipes(matInfo);
+
} catch (final Throwable t){
Logger.WARNING(""+matInfo.getLocalizedName()+" failed to generate.");
}
diff --git a/src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java b/src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java
index 444f35a46f..b4a3e23997 100644
--- a/src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java
+++ b/src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java
@@ -26,6 +26,18 @@ import net.minecraftforge.fluids.IFluidContainerItem;
public class FluidUtils {
+ public static FluidStack getWater(final int amount){
+ return FluidUtils.getFluidStack("water", amount);
+ }
+
+ public static FluidStack getlava(final int amount){
+ return FluidUtils.getFluidStack("lava", amount);
+ }
+
+ public static FluidStack getMilk(final int amount){
+ return FluidUtils.getFluidStack("milk", amount);
+ }
+
public static FluidStack getFluidStack(final String fluidName, final int amount){
Logger.WARNING("Trying to get a fluid stack of "+fluidName);
try {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java
new file mode 100644
index 0000000000..f060895ccc
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java
@@ -0,0 +1,242 @@
+package gtPlusPlus.xmod.gregtech.loaders;
+
+import gregtech.api.enums.GT_Values;
+import gregtech.api.util.GT_ModHandler;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.material.Material;
+import gtPlusPlus.core.material.MaterialStack;
+import gtPlusPlus.core.material.state.MaterialState;
+import gtPlusPlus.core.recipe.common.CI;
+import gtPlusPlus.core.util.array.AutoMap;
+import gtPlusPlus.core.util.array.Pair;
+import gtPlusPlus.core.util.fluid.FluidUtils;
+import gtPlusPlus.core.util.item.ItemUtils;
+import gtPlusPlus.core.util.recipe.RecipeUtils;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.FluidStack;
+
+public class RecipeGen_Ore implements Runnable{
+
+ final Material toGenerate;
+
+ public RecipeGen_Ore(final Material M){
+ this.toGenerate = M;
+ }
+
+ @Override
+ public void run() {
+ generateRecipes(this.toGenerate);
+ }
+
+ public static void generateRecipes(final Material material){
+
+ if (material.getMaterialComposites().length > 1){
+ final int tVoltageMultiplier = material.getMeltingPointK() >= 2800 ? 60 : 15;
+ final ItemStack dustStone = ItemUtils.getItemStackOfAmountFromOreDict("dustStone", 1);
+ Material bonusA; //Ni
+ Material bonusB; //Tin
+
+ if (material.getComposites().get(1) != null){
+ bonusA = material.getComposites().get(1).getStackMaterial();
+ }
+ else {
+ return ;
+ }
+ if (material.getComposites().get(2) != null){
+ bonusB = material.getComposites().get(2).getStackMaterial();
+ }
+ else if (material.getComposites().get(1) != null){
+ bonusB = material.getComposites().get(1).getStackMaterial();
+ }
+ else {
+ return ;
+ }
+
+ AutoMap<Pair<Integer, Material>> componentMap = new AutoMap<Pair<Integer, Material>>();
+
+ for (MaterialStack r : material.getComposites()){
+ if (r != null){
+ componentMap.put(new Pair<Integer, Material>(r.getPartsPerOneHundred(), r.getStackMaterial()));
+ }
+ }
+
+ /**
+ * Macerate
+ */
+ //Macerate ore to Crushed
+ GT_Values.RA.addPulveriserRecipe(material.getOre(1), new ItemStack[]{material.getCrushed(2)}, new int[]{10000}, 20*20, 2);
+ //Macerate Crushed to Impure Dust
+ GT_Values.RA.addPulveriserRecipe(material.getCrushed(1), new ItemStack[]{material.getDustImpure(1), bonusA.getDust(1)}, new int[]{10000, 1000}, 20*20, 2);
+ //Macerate Washed to Purified Dust
+ GT_Values.RA.addPulveriserRecipe(material.getCrushedPurified(1), new ItemStack[]{material.getDustPurified(1), bonusA.getDust(1)}, new int[]{10000, 1000}, 20*20, 2);
+ //Macerate Centrifuged to Pure Dust
+ GT_Values.RA.addPulveriserRecipe(material.getCrushedCentrifuged(1), new ItemStack[]{material.getDust(1), bonusA.getDust(1)}, new int[]{10000, 1000}, 20*20, 2);
+
+ /**
+ * Wash
+ */
+ //Wash into Purified Crushed
+ GT_Values.RA.addOreWasherRecipe(material.getCrushed(1), material.getCrushedPurified(1), bonusA.getTinyDust(1), dustStone, FluidUtils.getWater(1000), 25*20, 16);
+
+ /**
+ * Thermal Centrifuge
+ */
+ //Crushed ore to Centrifuged Ore
+ GT_Values.RA.addThermalCentrifugeRecipe(material.getCrushed(1), material.getCrushedCentrifuged(1), bonusB.getTinyDust(1), dustStone, 25*20, 24);
+ //Washed ore to Centrifuged Ore
+ GT_Values.RA.addThermalCentrifugeRecipe(material.getCrushedPurified(1), material.getCrushedCentrifuged(1), bonusA.getTinyDust(1), dustStone, 25*20, 24);
+
+ /**
+ * Forge Hammer
+ */
+ GT_Values.RA.addForgeHammerRecipe(material.getCrushedCentrifuged(1), material.getDust(1), 10, 16);
+ GT_Values.RA.addForgeHammerRecipe(material.getCrushedPurified(1), material.getDustPurified(1), 10, 16);
+ GT_Values.RA.addForgeHammerRecipe(material.getOre(1), material.getCrushed(1), 10, 16);
+
+ /**
+ * Centrifuge
+ */
+ //Purified Dust to Clean
+ GT_Values.RA.addCentrifugeRecipe(
+ material.getDustPurified(1), null,
+ null, //In Fluid
+ null, //Out Fluid
+ material.getDust(1), bonusA.getTinyDust(1),null,
+ null, null,null,
+ new int[]{10000, 10000}, //Chances
+ 5*20, //Eu
+ 5); //Time
+
+
+ /**
+ * Electrolyzer
+ */
+
+ //Process Dust
+ if (componentMap.size() > 0 && componentMap.size() <= 6){
+
+ ItemStack mInternalOutputs[] = new ItemStack[componentMap.size()];
+ int mChances[] = new int[componentMap.size()];
+ int mCellCount = 0;
+
+ int mCounter = 0;
+ for (Pair<Integer, Material> f : componentMap){
+ if (f.getValue().getState() != MaterialState.SOLID){
+ mInternalOutputs[mCounter++] = f.getValue().getCell(f.getKey());
+ mCellCount += f.getKey();
+ }
+ else {
+ mInternalOutputs[mCounter++] = f.getValue().getDust(f.getKey());
+ }
+ }
+
+ //Build Output Array
+ for (int g=0;g<mInternalOutputs.length;g++){
+ mChances[g] = (mInternalOutputs[g] != null ? 10000 : 0);
+ }
+
+ ItemStack emptyCell = null;
+ if (mCellCount > 0){
+ emptyCell = ItemUtils.getItemStackOfAmountFromOreDict("cellEmpty", mCellCount);
+ }
+
+ GT_Values.RA.addElectrolyzerRecipe(
+ material.getDust(material.smallestStackSizeWhenProcessing),
+ emptyCell, //input 2
+ null, //Input fluid 1
+ null, //Output fluid 1
+ mInternalOutputs[0],
+ mInternalOutputs[1],
+ mInternalOutputs[2],
+ mInternalOutputs[3],
+ mInternalOutputs[4],
+ mInternalOutputs[5],
+ mChances,
+ 20*90,
+ 240);
+ }
+ else if (componentMap.size() > 6){
+ Logger.MATERIALS("[Issue] "+material.getLocalizedName()+" is composed of over 6 materials, so a recipe for processing cannot be generated.");
+ }
+
+
+ /**
+ * Shaped Crafting
+ */
+ RecipeUtils.recipeBuilder(
+ CI.craftingToolHammer_Hard, null, null,
+ material.getCrushedPurified(1), null, null,
+ null, null, null,
+ material.getDustPurified(1));
+
+ RecipeUtils.recipeBuilder(
+ CI.craftingToolHammer_Hard, null, null,
+ material.getCrushed(1), null, null,
+ null, null, null,
+ material.getDustImpure(1));
+
+ RecipeUtils.recipeBuilder(
+ CI.craftingToolHammer_Hard, null, null,
+ material.getCrushedCentrifuged(1), null, null,
+ null, null, null,
+ material.getDust(1));
+
+
+
+ final ItemStack normalDust = material.getDust(1);
+ final ItemStack smallDust = material.getSmallDust(1);
+ final ItemStack tinyDust = material.getTinyDust(1);
+
+ if (RecipeUtils.recipeBuilder(
+ tinyDust, tinyDust, tinyDust,
+ tinyDust, tinyDust, tinyDust,
+ tinyDust, tinyDust, tinyDust,
+ normalDust)){
+ Logger.WARNING("9 Tiny dust to 1 Dust Recipe: "+material.getLocalizedName()+" - Success");
+ }
+ else {
+ Logger.WARNING("9 Tiny dust to 1 Dust Recipe: "+material.getLocalizedName()+" - Failed");
+ }
+
+ if (RecipeUtils.recipeBuilder(
+ normalDust, null, null,
+ null, null, null,
+ null, null, null,
+ material.getTinyDust(9))){
+ Logger.WARNING("9 Tiny dust from 1 Recipe: "+material.getLocalizedName()+" - Success");
+ }
+ else {
+ Logger.WARNING("9 Tiny dust from 1 Recipe: "+material.getLocalizedName()+" - Failed");
+ }
+
+
+ if (RecipeUtils.recipeBuilder(
+ smallDust, smallDust, null,
+ smallDust, smallDust, null,
+ null, null, null,
+ normalDust)){
+ Logger.WARNING("4 Small dust to 1 Dust Recipe: "+material.getLocalizedName()+" - Success");
+ }
+ else {
+ Logger.WARNING("4 Small dust to 1 Dust Recipe: "+material.getLocalizedName()+" - Failed");
+ }
+
+
+ if (RecipeUtils.recipeBuilder(
+ null, normalDust, null,
+ null, null, null,
+ null, null, null,
+ material.getSmallDust(4))){
+ Logger.WARNING("4 Small dust from 1 Dust Recipe: "+material.getLocalizedName()+" - Success");
+ }
+ else {
+ Logger.WARNING("4 Small dust from 1 Dust Recipe: "+material.getLocalizedName()+" - Failed");
+ }
+
+ }
+ }
+
+
+
+
+}