aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/loaders/postload/chains/GT_PurifiedWaterRecipes.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/loaders/postload/chains/GT_PurifiedWaterRecipes.java')
-rw-r--r--src/main/java/gregtech/loaders/postload/chains/GT_PurifiedWaterRecipes.java263
1 files changed, 263 insertions, 0 deletions
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);
+ }
+}