aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/loaders
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/loaders')
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingCrafting.java65
-rw-r--r--src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java2
-rw-r--r--src/main/java/gregtech/loaders/postload/chains/GT_PurifiedWaterRecipes.java263
-rw-r--r--src/main/java/gregtech/loaders/postload/recipes/CuttingRecipes.java45
-rw-r--r--src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java4
-rw-r--r--src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java89
6 files changed, 429 insertions, 39 deletions
diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingCrafting.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingCrafting.java
index 438da254a2..200ce743c9 100644
--- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingCrafting.java
+++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingCrafting.java
@@ -8,6 +8,7 @@ import static gregtech.api.recipe.RecipeMaps.laserEngraverRecipes;
import static gregtech.api.util.GT_RecipeBuilder.MINUTES;
import static gregtech.api.util.GT_RecipeBuilder.SECONDS;
import static gregtech.api.util.GT_RecipeBuilder.TICKS;
+import static gregtech.api.util.GT_RecipeConstants.WaferEngravingRecipes;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
@@ -83,7 +84,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(60 * SECONDS)
.eut(TierEU.RECIPE_HV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer3.get(1), GT_Utility.copyAmount(0, aStack))
@@ -91,7 +92,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(40 * SECONDS)
.eut(TierEU.RECIPE_EV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer5.get(1), GT_Utility.copyAmount(0, aStack))
@@ -99,7 +100,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(2 * MINUTES)
.eut(TierEU.RECIPE_UV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
}
case "craftingLensYellow" -> {
@@ -127,7 +128,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.itemOutputs(ItemList.Circuit_Wafer_LPIC.get(1))
.duration(40 * SECONDS)
.eut(TierEU.RECIPE_MV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer2.get(1), GT_Utility.copyAmount(0, aStack))
@@ -135,7 +136,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(30 * SECONDS)
.eut(TierEU.RECIPE_HV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer3.get(1), GT_Utility.copyAmount(0, aStack))
@@ -143,7 +144,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(45 * SECONDS)
.eut(TierEU.RECIPE_EV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer4.get(1), GT_Utility.copyAmount(0, aStack))
@@ -151,7 +152,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(30 * SECONDS)
.eut(TierEU.RECIPE_IV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer5.get(1), GT_Utility.copyAmount(0, aStack))
@@ -159,7 +160,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(15 * SECONDS)
.eut(TierEU.RECIPE_LuV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
}
case "craftingLensOrange" -> {
@@ -168,28 +169,28 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.itemOutputs(ItemList.Circuit_Wafer_Simple_SoC.get(1))
.duration(15 * SECONDS)
.eut(64)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer2.get(1), GT_Utility.copyAmount(0, aStack))
.itemOutputs(ItemList.Circuit_Wafer_Simple_SoC.get(4))
.duration(15 * SECONDS)
.eut(256)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer3.get(1), GT_Utility.copyAmount(0, aStack))
.itemOutputs(ItemList.Circuit_Wafer_Simple_SoC.get(16))
.duration(15 * SECONDS)
.eut(1024)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer4.get(1), GT_Utility.copyAmount(0, aStack))
.itemOutputs(ItemList.Circuit_Wafer_Simple_SoC.get(64))
.duration(15 * SECONDS)
.eut(4096)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
}
case "craftingLensCyan" -> {
@@ -217,7 +218,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.itemOutputs(ItemList.Circuit_Wafer_Ram.get(1))
.duration(60 * SECONDS)
.eut(TierEU.RECIPE_MV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer2.get(1), GT_Utility.copyAmount(0, aStack))
@@ -225,7 +226,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(45 * SECONDS)
.eut(TierEU.RECIPE_HV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer3.get(1), GT_Utility.copyAmount(0, aStack))
@@ -233,7 +234,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(30 * SECONDS)
.eut(TierEU.RECIPE_EV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer4.get(1), GT_Utility.copyAmount(0, aStack))
@@ -241,7 +242,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(15 * SECONDS)
.eut(TierEU.RECIPE_IV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer5.get(1), GT_Utility.copyAmount(0, aStack))
@@ -249,7 +250,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(7 * SECONDS + 10 * TICKS)
.eut(TierEU.RECIPE_LuV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
}
case "craftingLensRed" -> {
@@ -277,7 +278,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.itemOutputs(ItemList.Circuit_Wafer_ILC.get(1))
.duration(60 * SECONDS)
.eut(TierEU.RECIPE_MV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer2.get(1), GT_Utility.copyAmount(0, aStack))
@@ -285,7 +286,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(45 * SECONDS)
.eut(TierEU.RECIPE_HV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer3.get(1), GT_Utility.copyAmount(0, aStack))
@@ -293,7 +294,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(30 * SECONDS)
.eut(TierEU.RECIPE_EV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer4.get(1), GT_Utility.copyAmount(0, aStack))
@@ -301,7 +302,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(1 * MINUTES + 30 * SECONDS)
.eut(TierEU.RECIPE_LuV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer5.get(1), GT_Utility.copyAmount(0, aStack))
@@ -309,7 +310,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(1 * MINUTES + 15 * SECONDS)
.eut(TierEU.RECIPE_ZPM)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
}
case "craftingLensGreen" -> {
@@ -335,14 +336,14 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.itemOutputs(ItemList.Circuit_Wafer_ULPIC.get(2))
.duration(30 * SECONDS)
.eut(30)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer2.get(1), GT_Utility.copyAmount(0, aStack))
.itemOutputs(ItemList.Circuit_Wafer_ULPIC.get(8))
.duration(30 * SECONDS)
.eut(TierEU.RECIPE_MV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer3.get(1), GT_Utility.copyAmount(0, aStack))
@@ -350,7 +351,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(1 * MINUTES + 30 * SECONDS)
.eut(TierEU.RECIPE_EV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer4.get(1), GT_Utility.copyAmount(0, aStack))
@@ -358,7 +359,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(1 * MINUTES + 15 * SECONDS)
.eut(TierEU.RECIPE_IV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer5.get(1), GT_Utility.copyAmount(0, aStack))
@@ -366,7 +367,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(60 * SECONDS)
.eut(TierEU.RECIPE_LuV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
}
case "craftingLensWhite" -> {
@@ -424,7 +425,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(60 * SECONDS)
.eut(TierEU.RECIPE_MV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer2.get(1), GT_Utility.copyAmount(0, aStack))
@@ -432,7 +433,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(45 * SECONDS)
.eut(TierEU.RECIPE_HV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer3.get(1), GT_Utility.copyAmount(0, aStack))
@@ -440,7 +441,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(30 * SECONDS)
.eut(TierEU.RECIPE_EV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer4.get(1), GT_Utility.copyAmount(0, aStack))
@@ -448,7 +449,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(15 * SECONDS)
.eut(TierEU.RECIPE_IV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(ItemList.Circuit_Silicon_Wafer5.get(1), GT_Utility.copyAmount(0, aStack))
@@ -456,7 +457,7 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg
.requiresCleanRoom()
.duration(7 * SECONDS + 10 * TICKS)
.eut(TierEU.RECIPE_LuV)
- .addTo(laserEngraverRecipes);
+ .addTo(WaferEngravingRecipes);
}
}
diff --git a/src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java b/src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java
index 7280bccdff..92de5291e1 100644
--- a/src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java
+++ b/src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java
@@ -4,6 +4,7 @@ import gregtech.api.enums.Materials;
import gregtech.loaders.postload.chains.GT_BauxiteRefineChain;
import gregtech.loaders.postload.chains.GT_NaniteChain;
import gregtech.loaders.postload.chains.GT_PCBFactoryRecipes;
+import gregtech.loaders.postload.chains.GT_PurifiedWaterRecipes;
import gregtech.loaders.postload.recipes.AlloySmelterRecipes;
import gregtech.loaders.postload.recipes.ArcFurnaceRecipes;
import gregtech.loaders.postload.recipes.AssemblerRecipes;
@@ -120,5 +121,6 @@ public class GT_MachineRecipeLoader implements Runnable {
GT_BauxiteRefineChain.run();
GT_NaniteChain.run();
GT_PCBFactoryRecipes.load();
+ GT_PurifiedWaterRecipes.run();
}
}
diff --git a/src/main/java/gregtech/loaders/postload/chains/GT_PurifiedWaterRecipes.java b/src/main/java/gregtech/loaders/postload/chains/GT_PurifiedWaterRecipes.java
new file mode 100644
index 0000000000..51cc15ae71
--- /dev/null
+++ b/src/main/java/gregtech/loaders/postload/chains/GT_PurifiedWaterRecipes.java
@@ -0,0 +1,263 @@
+package gregtech.loaders.postload.chains;
+
+import static com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader.FluorBuergerit;
+import static gregtech.api.enums.MaterialsBotania.ManaDiamond;
+import static gregtech.api.recipe.RecipeMaps.assemblerRecipes;
+import static gregtech.api.recipe.RecipeMaps.blastFurnaceRecipes;
+import static gregtech.api.recipe.RecipeMaps.chemicalBathRecipes;
+import static gregtech.api.recipe.RecipeMaps.distillationTowerRecipes;
+import static gregtech.api.recipe.RecipeMaps.laserEngraverRecipes;
+import static gregtech.api.recipe.RecipeMaps.multiblockChemicalReactorRecipes;
+import static gregtech.api.recipe.RecipeMaps.plasmaForgeRecipes;
+import static gregtech.api.recipe.RecipeMaps.purificationClarifierRecipes;
+import static gregtech.api.recipe.RecipeMaps.purificationDegasifierRecipes;
+import static gregtech.api.recipe.RecipeMaps.purificationFlocculationRecipes;
+import static gregtech.api.recipe.RecipeMaps.purificationOzonationRecipes;
+import static gregtech.api.recipe.RecipeMaps.purificationParticleExtractionRecipes;
+import static gregtech.api.recipe.RecipeMaps.purificationPhAdjustmentRecipes;
+import static gregtech.api.recipe.RecipeMaps.purificationPlasmaHeatingRecipes;
+import static gregtech.api.recipe.RecipeMaps.purificationUVTreatmentRecipes;
+import static gregtech.api.util.GT_RecipeBuilder.MINUTES;
+import static gregtech.api.util.GT_RecipeBuilder.SECONDS;
+import static gregtech.api.util.GT_RecipeConstants.COIL_HEAT;
+import static gregtech.common.tileentities.machines.multi.purification.GT_MetaTileEntity_PurificationUnitParticleExtractor.BARYONIC_MATTER_OUTPUT;
+
+import java.util.Arrays;
+
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+
+import goodgenerator.items.MyMaterial;
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.HeatingCoilLevel;
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.MaterialsUEVplus;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.enums.TierEU;
+import gregtech.api.recipe.metadata.PurificationPlantBaseChanceKey;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.api.util.GT_Utility;
+import gregtech.common.tileentities.machines.multi.purification.GT_MetaTileEntity_PurificationPlant;
+import gtPlusPlus.core.material.Particle;
+
+public class GT_PurifiedWaterRecipes {
+
+ static final PurificationPlantBaseChanceKey BASE_CHANCE = PurificationPlantBaseChanceKey.INSTANCE;
+
+ public static void run() {
+ final int duration = GT_MetaTileEntity_PurificationPlant.CYCLE_TIME_TICKS;
+
+ // Grade 1 - Clarifier
+ GT_Values.RA.stdBuilder()
+ .itemInputs(ItemList.ActivatedCarbonFilterMesh.get(1))
+ .fluidInputs(GT_ModHandler.getDistilledWater(1000L))
+ .fluidOutputs(Materials.Grade1PurifiedWater.getFluid(900L))
+ .itemOutputs(new ItemStack(Items.stick, 1), Materials.Stone.getDust(1), Materials.Gold.getNuggets(1))
+ .outputChances(1000, 500, 100)
+ .duration(duration)
+ .eut(TierEU.RECIPE_LuV)
+ .metadata(BASE_CHANCE, 70.0f)
+ .addTo(purificationClarifierRecipes);
+
+ // Activated Carbon Line
+ GT_Values.RA.stdBuilder()
+ .itemInputs(Materials.Carbon.getDust(1))
+ .fluidInputs(Materials.PhosphoricAcid.getFluid(1000L))
+ .itemOutputs(Materials.PreActivatedCarbon.getDust(1))
+ .duration(5 * SECONDS)
+ .eut(TierEU.RECIPE_LuV)
+ .addTo(multiblockChemicalReactorRecipes);
+ GT_Values.RA.stdBuilder()
+ .itemInputs(Materials.PreActivatedCarbon.getDust(1))
+ .itemOutputs(Materials.DirtyActivatedCarbon.getDust(1))
+ .duration(10 * SECONDS)
+ .eut(TierEU.RECIPE_EV)
+ .specialValue((int) HeatingCoilLevel.EV.getHeat())
+ .addTo(blastFurnaceRecipes);
+ GT_Values.RA.stdBuilder()
+ .itemInputs(Materials.DirtyActivatedCarbon.getDust(1))
+ .fluidInputs(Materials.Water.getFluid(1000L))
+ .itemOutputs(Materials.ActivatedCarbon.getDust(1))
+ .fluidOutputs(Materials.PhosphoricAcid.getFluid(1000L))
+ .noOptimize()
+ .duration(2 * SECONDS)
+ .eut(TierEU.RECIPE_IV)
+ .addTo(chemicalBathRecipes);
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ Materials.ActivatedCarbon.getDust(64),
+ GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Zinc, 16))
+ .itemOutputs(ItemList.ActivatedCarbonFilterMesh.get(1))
+ .duration(10 * SECONDS)
+ .eut(TierEU.RECIPE_IV)
+ .addTo(assemblerRecipes);
+
+ // Grade 2 - Ozonation
+ for (ItemStack lens : GT_OreDictUnificator.getOres("craftingLensBlue")) {
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_Utility.copyAmount(0, lens))
+ .noOptimize()
+ .fluidInputs(Materials.Air.getGas(10000L))
+ .fluidOutputs(Materials.Ozone.getGas(2000L))
+ .duration(1 * SECONDS)
+ .eut(TierEU.RECIPE_LuV)
+ .addTo(laserEngraverRecipes);
+ }
+
+ // Recipes for ozonation, uses 128kL, 256kL, 512kL, 1m kL at each tier
+ // 20% boost per tier
+ // Gets you up to 80%, need to water boost for 95%
+ for (int tier = 1; tier <= 4; ++tier) {
+ GT_Values.RA.stdBuilder()
+ .noOptimize()
+ .fluidInputs(
+ Materials.Grade1PurifiedWater.getFluid(1000L),
+ Materials.Ozone.getGas(1000 * (long) Math.pow(2, (tier + 6))))
+ .fluidOutputs(Materials.Grade2PurifiedWater.getFluid(900L))
+ .itemOutputs(Materials.Manganese.getDust(1), Materials.Iron.getDust(1), Materials.Sulfur.getDust(1))
+ .outputChances(500, 500, 500)
+ .duration(duration)
+ .ignoreCollision()
+ .eut(TierEU.RECIPE_LuV)
+ .metadata(BASE_CHANCE, tier * 20.0f)
+ .addTo(purificationOzonationRecipes);
+ }
+
+ // Grade 3 - Flocculation.
+ GT_Values.RA.stdBuilder()
+ .fluidInputs(Materials.Grade2PurifiedWater.getFluid(1000L))
+ .fluidOutputs(Materials.Grade3PurifiedWater.getFluid(900L))
+ .itemOutputs(
+ new ItemStack(Items.clay_ball, 1),
+ Materials.QuartzSand.getDust(1),
+ Materials.PolyvinylChloride.getNuggets(1))
+ .outputChances(1000, 500, 100)
+ .duration(duration)
+ .eut(TierEU.RECIPE_ZPM)
+ .metadata(BASE_CHANCE, 1 * 10.0f)
+ .addTo(purificationFlocculationRecipes);
+
+ // 2 Al(OH)3 + 3 HCl -> Al2(OH)3 Cl3 + 3 H2O
+ GT_Values.RA.stdBuilder()
+ .itemInputs(Materials.Aluminiumhydroxide.getDust(8))
+ .fluidInputs(Materials.HydrochloricAcid.getFluid(3000L))
+ .fluidOutputs(Materials.PolyAluminiumChloride.getFluid(1000L), Materials.Water.getFluid(3000L))
+ .duration(4 * SECONDS)
+ .eut(TierEU.RECIPE_EV)
+ .addTo(multiblockChemicalReactorRecipes);
+
+ // Diluted is twice what chem balance would suggest, but it is 2:1 with hydrochloric acid which makes it
+ // correct I believe.
+ GT_Values.RA.stdBuilder()
+ .fluidInputs(Materials.FlocculationWasteLiquid.getFluid(1000L))
+ .itemOutputs(Materials.Aluminium.getDust(2))
+ .fluidOutputs(Materials.Oxygen.getGas(3000L), Materials.DilutedHydrochloricAcid.getFluid(6000L))
+ .duration(1 * SECONDS)
+ .eut(TierEU.RECIPE_EV)
+ .addTo(distillationTowerRecipes);
+
+ // Grade 4 - pH adjustment
+ GT_Values.RA.stdBuilder()
+ .fluidInputs(Materials.Grade3PurifiedWater.getFluid(1000L))
+ .fluidOutputs(Materials.Grade4PurifiedWater.getFluid(900L))
+ .ignoreCollision()
+ .duration(duration)
+ .eut(TierEU.RECIPE_ZPM)
+ .metadata(BASE_CHANCE, 0.0f)
+ .addTo(purificationPhAdjustmentRecipes);
+
+ // Grade 5 - Plasma Heating
+ GT_Values.RA.stdBuilder()
+ .fluidInputs(Materials.Grade4PurifiedWater.getFluid(1000L))
+ .fluidOutputs(Materials.Grade5PurifiedWater.getFluid(900L))
+ .ignoreCollision()
+ .duration(duration)
+ .eut(TierEU.RECIPE_UV)
+ .metadata(BASE_CHANCE, 0.0f)
+ .addTo(purificationPlasmaHeatingRecipes);
+
+ // Grade 6 - UV treatment
+ GT_Values.RA.stdBuilder()
+ .fluidInputs(Materials.Grade5PurifiedWater.getFluid(1000L))
+ .fluidOutputs(Materials.Grade6PurifiedWater.getFluid(900L))
+ // These are not actually consumed and are purely for display purposes
+ .special(
+ Arrays.asList(
+ MyMaterial.orundum.get(OrePrefixes.lens, 1),
+ GT_OreDictUnificator.get(OrePrefixes.lens, Materials.Amber, 1),
+ GT_OreDictUnificator.get(OrePrefixes.lens, Materials.InfusedAir, 1),
+ GT_OreDictUnificator.get(OrePrefixes.lens, Materials.Emerald, 1),
+ GT_OreDictUnificator.get(OrePrefixes.lens, ManaDiamond, 1),
+ GT_OreDictUnificator.get(OrePrefixes.lens, Materials.BlueTopaz, 1),
+ GT_OreDictUnificator.get(OrePrefixes.lens, Materials.Amethyst, 1),
+ FluorBuergerit.get(OrePrefixes.lens, 1),
+ GT_OreDictUnificator.get(OrePrefixes.lens, Materials.Dilithium, 1)))
+ .ignoreCollision()
+ .duration(duration)
+ .eut(TierEU.RECIPE_UV)
+ .metadata(BASE_CHANCE, 0.0f)
+ .addTo(purificationUVTreatmentRecipes);
+
+ // Grade 7 - Degasification
+ GT_Values.RA.stdBuilder()
+ .fluidInputs(Materials.Grade6PurifiedWater.getFluid(1000L))
+ .fluidOutputs(Materials.Grade7PurifiedWater.getFluid(900L))
+ .ignoreCollision()
+ .duration(duration)
+ .eut(TierEU.RECIPE_UHV)
+ .metadata(BASE_CHANCE, 0.0f)
+ .addTo(purificationDegasifierRecipes);
+
+ // Grade 8 - Quark Extraction
+
+ ItemStack[] catalystInputs = new ItemStack[] { ItemList.Quark_Creation_Catalyst_Up.get(1L),
+ ItemList.Quark_Creation_Catalyst_Down.get(1L), ItemList.Quark_Creation_Catalyst_Bottom.get(1L),
+ ItemList.Quark_Creation_Catalyst_Top.get(1L), ItemList.Quark_Creation_Catalyst_Strange.get(1L),
+ ItemList.Quark_Creation_Catalyst_Charm.get(1L) };
+
+ // Add re-alignment recipes
+ for (int i = 0; i < catalystInputs.length; ++i) {
+ GT_Values.RA.stdBuilder()
+ .itemInputs(ItemList.Quark_Creation_Catalyst_Unaligned.get(1), GT_Utility.getIntegratedCircuit(i + 1))
+ .fluidInputs(Materials.StableBaryonicMatter.getFluid(1000L))
+ .itemOutputs(catalystInputs[i])
+ .duration(30 * SECONDS)
+ .eut(TierEU.RECIPE_UHV)
+ // Not sure how I feel about it being in the laser engraver, but I don't see a better multi for it right
+ // now,
+ // and we can't really add a new one specifically for this (... for now)
+ .addTo(laserEngraverRecipes);
+ }
+
+ // Initial aligned quark catalysts, these are not meant to be done often, and simply exist to get you started
+ ItemStack[] quarks = new ItemStack[] { // make sure these are in the same order as the list above
+ Particle.getBaseParticle(Particle.UP), Particle.getBaseParticle(Particle.DOWN),
+ Particle.getBaseParticle(Particle.BOTTOM), Particle.getBaseParticle(Particle.TOP),
+ Particle.getBaseParticle(Particle.STRANGE), Particle.getBaseParticle(Particle.CHARM) };
+
+ for (int i = 0; i < catalystInputs.length; ++i) {
+ GT_Values.RA.stdBuilder()
+ .itemInputs(ItemList.Quark_Catalyst_Housing.get(1), quarks[i])
+ .fluidInputs(MaterialsUEVplus.ExcitedDTRC.getFluid(10000L))
+ .itemOutputs(catalystInputs[i])
+ .metadata(COIL_HEAT, 10800)
+ .eut(TierEU.RECIPE_UMV)
+ .duration(5 * MINUTES)
+ .addTo(plasmaForgeRecipes);
+ }
+
+ GT_Values.RA.stdBuilder()
+ .fluidInputs(Materials.Grade7PurifiedWater.getFluid(1000L))
+ .fluidOutputs(
+ Materials.Grade8PurifiedWater.getFluid(900L),
+ Materials.StableBaryonicMatter.getFluid(BARYONIC_MATTER_OUTPUT))
+ .itemOutputs(ItemList.Quark_Creation_Catalyst_Unaligned.get(2L))
+ .ignoreCollision()
+ .duration(duration)
+ .eut(TierEU.RECIPE_UEV)
+ .metadata(BASE_CHANCE, 0.0f)
+ .addTo(purificationParticleExtractionRecipes);
+ }
+}
diff --git a/src/main/java/gregtech/loaders/postload/recipes/CuttingRecipes.java b/src/main/java/gregtech/loaders/postload/recipes/CuttingRecipes.java
index dd81fd2d66..1d0eeecd8b 100644
--- a/src/main/java/gregtech/loaders/postload/recipes/CuttingRecipes.java
+++ b/src/main/java/gregtech/loaders/postload/recipes/CuttingRecipes.java
@@ -49,22 +49,36 @@ public class CuttingRecipes implements Runnable {
1 * MINUTES + 20 * SECONDS,
TierEU.RECIPE_HV,
true);
+ // Naq wafer also gets recipes using purified water
+ recipeWithPurifiedWater(
+ new ItemStack[] { ItemList.Circuit_Silicon_Ingot3.get(1) },
+ new ItemStack[] { ItemList.Circuit_Silicon_Wafer3.get(128),
+ GT_OreDictUnificator.get(OrePrefixes.dust, Materials.SiliconSG, 16) },
+ Materials.Grade1PurifiedWater,
+ Materials.Grade2PurifiedWater,
+ (int) ((1 * MINUTES + 20 * SECONDS) * 0.75),
+ (1 * MINUTES + 20 * SECONDS) / 2,
+ TierEU.RECIPE_HV);
- recipeWithClassicFluids(
+ recipeWithPurifiedWater(
new ItemStack[] { ItemList.Circuit_Silicon_Ingot4.get(1) },
new ItemStack[] { ItemList.Circuit_Silicon_Wafer4.get(64), ItemList.Circuit_Silicon_Wafer4.get(32),
GT_OreDictUnificator.get(OrePrefixes.dust, Materials.SiliconSG, 32) },
+ Materials.Grade3PurifiedWater,
+ Materials.Grade4PurifiedWater,
2 * MINUTES,
- TierEU.RECIPE_EV,
- true);
+ 1 * MINUTES,
+ TierEU.RECIPE_EV);
- recipeWithClassicFluids(
+ recipeWithPurifiedWater(
new ItemStack[] { ItemList.Circuit_Silicon_Ingot5.get(1) },
new ItemStack[] { ItemList.Circuit_Silicon_Wafer5.get(64), ItemList.Circuit_Silicon_Wafer5.get(64),
GT_OreDictUnificator.get(OrePrefixes.dust, Materials.SiliconSG, 64) },
+ Materials.Grade5PurifiedWater,
+ Materials.Grade6PurifiedWater,
2 * MINUTES + 40 * SECONDS,
- TierEU.RECIPE_IV,
- true);
+ (2 * MINUTES + 40 * SECONDS) / 2,
+ TierEU.RECIPE_IV);
}
@@ -225,6 +239,25 @@ public class CuttingRecipes implements Runnable {
}
+ public void recipeWithPurifiedWater(ItemStack[] inputs, ItemStack[] outputs, Materials lowTierWater,
+ Materials highTierWater, int duration, int boostedDuration, long eut) {
+ GT_Values.RA.stdBuilder()
+ .itemInputs(inputs)
+ .itemOutputs(outputs)
+ .fluidInputs(lowTierWater.getFluid(100L))
+ .duration(duration)
+ .eut(eut)
+ .addTo(cutterRecipes);
+ // Bonus for using higher tier water
+ GT_Values.RA.stdBuilder()
+ .itemInputs(inputs)
+ .itemOutputs(outputs)
+ .fluidInputs(highTierWater.getFluid(100L))
+ .duration(boostedDuration)
+ .eut(eut)
+ .addTo(cutterRecipes);
+ }
+
public void recipeWithClassicFluids(ItemStack[] inputs, ItemStack[] outputs, int duration, long eut,
boolean cleanroomRequired) {
if (cleanroomRequired) {
diff --git a/src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java b/src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java
index 118baaf116..00ccea451e 100644
--- a/src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java
+++ b/src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java
@@ -63,6 +63,7 @@ import gregtech.common.blocks.GT_Block_Casings8;
import gregtech.common.blocks.GT_Block_Casings9;
import gregtech.common.blocks.GT_Block_Concretes;
import gregtech.common.blocks.GT_Block_Drone;
+import gregtech.common.blocks.GT_Block_Glass1;
import gregtech.common.blocks.GT_Block_Granites;
import gregtech.common.blocks.GT_Block_Laser;
import gregtech.common.blocks.GT_Block_Machines;
@@ -70,6 +71,7 @@ import gregtech.common.blocks.GT_Block_Metal;
import gregtech.common.blocks.GT_Block_Ores;
import gregtech.common.blocks.GT_Block_Reinforced;
import gregtech.common.blocks.GT_Block_Stones;
+import gregtech.common.blocks.GT_Block_TintedIndustrialGlass;
import gregtech.common.blocks.GT_Cyclotron_Coils;
import gregtech.common.blocks.GT_TileEntity_Ores;
import gregtech.common.items.GT_DepletetCell_Item;
@@ -548,6 +550,8 @@ public class GT_Loader_Item_Block_And_Fluid implements Runnable {
GregTech_API.sBlockStones = new GT_Block_Stones();
GregTech_API.sBlockOres1 = new GT_Block_Ores();
GregTech_API.sDroneRender = new GT_Block_Drone();
+ GregTech_API.sBlockGlass1 = new GT_Block_Glass1();
+ GregTech_API.sBlockTintedGlass = new GT_Block_TintedIndustrialGlass();
GregTech_API.sLaserRender = new GT_Block_Laser();
// meta ID order, DO NOT CHANGE ORDER
diff --git a/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java b/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java
index c72459e9cf..9929fbb1c2 100644
--- a/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java
+++ b/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java
@@ -121,6 +121,10 @@ import static gregtech.api.enums.MetaTileEntityIDs.GAS_TURBINE_HV;
import static gregtech.api.enums.MetaTileEntityIDs.GAS_TURBINE_IV;
import static gregtech.api.enums.MetaTileEntityIDs.GAS_TURBINE_LV;
import static gregtech.api.enums.MetaTileEntityIDs.GAS_TURBINE_MV;
+import static gregtech.api.enums.MetaTileEntityIDs.HATCH_DEGASIFIER_CONTROL;
+import static gregtech.api.enums.MetaTileEntityIDs.HATCH_LENS_HOUSING;
+import static gregtech.api.enums.MetaTileEntityIDs.HATCH_LENS_INDICATOR;
+import static gregtech.api.enums.MetaTileEntityIDs.HATCH_PH_SENSOR;
import static gregtech.api.enums.MetaTileEntityIDs.HIGH_PRESSURE_COAL_BOILER;
import static gregtech.api.enums.MetaTileEntityIDs.HIGH_PRESSURE_LAVA_BOILER;
import static gregtech.api.enums.MetaTileEntityIDs.HIGH_PRESSURE_SOLAR_BOILER;
@@ -318,6 +322,15 @@ import static gregtech.api.enums.MetaTileEntityIDs.PUMP_HV;
import static gregtech.api.enums.MetaTileEntityIDs.PUMP_IV;
import static gregtech.api.enums.MetaTileEntityIDs.PUMP_LV;
import static gregtech.api.enums.MetaTileEntityIDs.PUMP_MV;
+import static gregtech.api.enums.MetaTileEntityIDs.PURIFICATION_PLANT_CONTROLLER;
+import static gregtech.api.enums.MetaTileEntityIDs.PURIFICATION_UNIT_CLARIFIER;
+import static gregtech.api.enums.MetaTileEntityIDs.PURIFICATION_UNIT_DEGASIFIER;
+import static gregtech.api.enums.MetaTileEntityIDs.PURIFICATION_UNIT_FLOCCULATOR;
+import static gregtech.api.enums.MetaTileEntityIDs.PURIFICATION_UNIT_OZONATION;
+import static gregtech.api.enums.MetaTileEntityIDs.PURIFICATION_UNIT_PARTICLE_EXTRACTOR;
+import static gregtech.api.enums.MetaTileEntityIDs.PURIFICATION_UNIT_PH_ADJUSTMENT;
+import static gregtech.api.enums.MetaTileEntityIDs.PURIFICATION_UNIT_PLASMA_HEATER;
+import static gregtech.api.enums.MetaTileEntityIDs.PURIFICATION_UNIT_UV_TREATMENT;
import static gregtech.api.enums.MetaTileEntityIDs.PYROLYSE_OVEN_CONTROLLER;
import static gregtech.api.enums.MetaTileEntityIDs.QUADRUPLE_INPUT_HATCHES_EV;
import static gregtech.api.enums.MetaTileEntityIDs.QUADRUPLE_INPUT_HATCHES_IV;
@@ -591,6 +604,19 @@ import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_Transcenden
import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_VacuumFreezer;
import gregtech.common.tileentities.machines.multi.drone.GT_MetaTileEntity_DroneCentre;
import gregtech.common.tileentities.machines.multi.drone.GT_MetaTileEntity_Hatch_DroneDownLink;
+import gregtech.common.tileentities.machines.multi.purification.GT_MetaTileEntity_Hatch_DegasifierControlHatch;
+import gregtech.common.tileentities.machines.multi.purification.GT_MetaTileEntity_LensHousing;
+import gregtech.common.tileentities.machines.multi.purification.GT_MetaTileEntity_LensIndicator;
+import gregtech.common.tileentities.machines.multi.purification.GT_MetaTileEntity_PurificationPlant;
+import gregtech.common.tileentities.machines.multi.purification.GT_MetaTileEntity_PurificationUnitClarifier;
+import gregtech.common.tileentities.machines.multi.purification.GT_MetaTileEntity_PurificationUnitDegasifier;
+import gregtech.common.tileentities.machines.multi.purification.GT_MetaTileEntity_PurificationUnitFlocculation;
+import gregtech.common.tileentities.machines.multi.purification.GT_MetaTileEntity_PurificationUnitOzonation;
+import gregtech.common.tileentities.machines.multi.purification.GT_MetaTileEntity_PurificationUnitParticleExtractor;
+import gregtech.common.tileentities.machines.multi.purification.GT_MetaTileEntity_PurificationUnitPhAdjustment;
+import gregtech.common.tileentities.machines.multi.purification.GT_MetaTileEntity_PurificationUnitPlasmaHeater;
+import gregtech.common.tileentities.machines.multi.purification.GT_MetaTileEntity_PurificationUnitUVTreatment;
+import gregtech.common.tileentities.machines.multi.purification.GT_MetaTileEntity_pHSensor;
import gregtech.common.tileentities.machines.steam.GT_MetaTileEntity_AlloySmelter_Bronze;
import gregtech.common.tileentities.machines.steam.GT_MetaTileEntity_AlloySmelter_Steel;
import gregtech.common.tileentities.machines.steam.GT_MetaTileEntity_Compressor_Bronze;
@@ -850,7 +876,57 @@ public class GT_Loader_MetaTileEntities implements Runnable { // TODO CHECK CIRC
DTPF_CONTROLLER.ID,
"multimachine.plasmaforge",
"Dimensionally Transcendent Plasma Forge").getStackForm(1L));
-
+ ItemList.Machine_Multi_PurificationPlant.set(
+ new GT_MetaTileEntity_PurificationPlant(
+ PURIFICATION_PLANT_CONTROLLER.ID,
+ "multimachine.purificationplant",
+ "Water Purification Plant").getStackForm(1L));
+ ItemList.Machine_Multi_PurificationUnitClarifier.set(
+ new GT_MetaTileEntity_PurificationUnitClarifier(
+ PURIFICATION_UNIT_CLARIFIER.ID,
+ "multimachine.purificationunitclarifier",
+ "Clarifier Purification Unit").getStackForm(1L));
+ ItemList.Machine_Multi_PurificationUnitFlocculator.set(
+ new GT_MetaTileEntity_PurificationUnitFlocculation(
+ PURIFICATION_UNIT_FLOCCULATOR.ID,
+ "multimachine.purificationunitflocculator",
+ "Flocculation Purification Unit").getStackForm(1L));
+ ItemList.Machine_Multi_PurificationUnitPhAdjustment.set(
+ new GT_MetaTileEntity_PurificationUnitPhAdjustment(
+ PURIFICATION_UNIT_PH_ADJUSTMENT.ID,
+ "multimachine.purificationunitphadjustment",
+ "pH Neutralization Purification Unit").getStackForm(1L));
+ ItemList.Machine_Multi_PurificationUnitOzonation.set(
+ new GT_MetaTileEntity_PurificationUnitOzonation(
+ PURIFICATION_UNIT_OZONATION.ID,
+ "multimachine.purificationunitozonation",
+ "Ozonation Purification Unit").getStackForm(1L));
+ ItemList.Machine_Multi_PurificationUnitPlasmaHeater.set(
+ new GT_MetaTileEntity_PurificationUnitPlasmaHeater(
+ PURIFICATION_UNIT_PLASMA_HEATER.ID,
+ "multimachine.purificationunitplasmaheater",
+ "Extreme Temperature Fluctuation Purification Unit").getStackForm(1L));
+ ItemList.Machine_Multi_PurificationUnitUVTreatment.set(
+ new GT_MetaTileEntity_PurificationUnitUVTreatment(
+ PURIFICATION_UNIT_UV_TREATMENT.ID,
+ "multimachine.purificationunituvtreatment",
+ "High Energy Laser Purification Unit").getStackForm(1L));
+ ItemList.Machine_Multi_PurificationUnitDegasifier.set(
+ new GT_MetaTileEntity_PurificationUnitDegasifier(
+ PURIFICATION_UNIT_DEGASIFIER.ID,
+ "multimachine.purificationunitdegasifier",
+ "Residual Decontaminant Degasser Purification Unit").getStackForm(1L));
+ ItemList.Machine_Multi_PurificationUnitParticleExtractor.set(
+ new GT_MetaTileEntity_PurificationUnitParticleExtractor(
+ PURIFICATION_UNIT_PARTICLE_EXTRACTOR.ID,
+ "multimachine.purificationunitextractor",
+ "Absolute Baryonic Perfection Purification Unit").getStackForm(1L));
+ ItemList.Hatch_DegasifierControl.set(
+ new GT_MetaTileEntity_Hatch_DegasifierControlHatch(
+ HATCH_DEGASIFIER_CONTROL.ID,
+ "hatch.degasifiercontrol",
+ "Degasser Control Hatch",
+ 8).getStackForm(1L));
ItemList.Machine_Multi_LargeBoiler_Bronze.set(
new GT_MetaTileEntity_LargeBoiler_Bronze(
LARGE_BRONZE_BOILER_CONTROLLER.ID,
@@ -4153,6 +4229,17 @@ public class GT_Loader_MetaTileEntities implements Runnable { // TODO CHECK CIRC
"hatch.dataaccess.auto",
"Automatable Data Access Hatch",
8).getStackForm(1L));
+ ItemList.Hatch_pHSensor.set(
+ new GT_MetaTileEntity_pHSensor(HATCH_PH_SENSOR.ID, "hatch.phsensor", "pH Sensor Hatch", 7).getStackForm(1));
+ ItemList.Hatch_LensHousing.set(
+ new GT_MetaTileEntity_LensHousing(HATCH_LENS_HOUSING.ID, "hatch.lenshousing", "Lens Housing")
+ .getStackForm(1L));
+ ItemList.Hatch_LensIndicator.set(
+ new GT_MetaTileEntity_LensIndicator(
+ HATCH_LENS_INDICATOR.ID,
+ "hatch.lensindicator",
+ "Lens Indicator Hatch",
+ 8).getStackForm(1L));
generateWiresAndPipes();
}