aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/loaders/postload/chains
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/loaders/postload/chains')
-rw-r--r--src/main/java/gregtech/loaders/postload/chains/GT_BauxiteRefineChain.java297
-rw-r--r--src/main/java/gregtech/loaders/postload/chains/GT_NaniteChain.java240
-rw-r--r--src/main/java/gregtech/loaders/postload/chains/GT_PCBFactoryRecipes.java702
3 files changed, 1239 insertions, 0 deletions
diff --git a/src/main/java/gregtech/loaders/postload/chains/GT_BauxiteRefineChain.java b/src/main/java/gregtech/loaders/postload/chains/GT_BauxiteRefineChain.java
new file mode 100644
index 0000000000..aaf25812e4
--- /dev/null
+++ b/src/main/java/gregtech/loaders/postload/chains/GT_BauxiteRefineChain.java
@@ -0,0 +1,297 @@
+package gregtech.loaders.postload.chains;
+
+import static gregtech.api.recipe.RecipeMaps.centrifugeRecipes;
+import static gregtech.api.recipe.RecipeMaps.chemicalBathRecipes;
+import static gregtech.api.recipe.RecipeMaps.crackingRecipes;
+import static gregtech.api.recipe.RecipeMaps.mixerRecipes;
+import static gregtech.api.recipe.RecipeMaps.multiblockChemicalReactorRecipes;
+import static gregtech.api.util.GT_RecipeBuilder.SECONDS;
+import static gregtech.api.util.GT_RecipeBuilder.TICKS;
+
+import net.minecraftforge.fluids.FluidStack;
+
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.MaterialsOreAlum;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.enums.TierEU;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.api.util.GT_Utility;
+
+public class GT_BauxiteRefineChain {
+
+ public static void run() {
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_OreDictUnificator.get(OrePrefixes.crushed, Materials.Bauxite, 32),
+ Materials.SodiumHydroxide.getDust(9),
+ Materials.Quicklime.getDust(4),
+ GT_Utility.getIntegratedCircuit(8))
+ .fluidInputs(Materials.Water.getFluid(5000))
+ .fluidOutputs(MaterialsOreAlum.BauxiteSlurry.getFluid(8000))
+ .duration(10 * SECONDS)
+ .eut(TierEU.RECIPE_MV)
+ .addTo(mixerRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_OreDictUnificator.get(OrePrefixes.crushedPurified, Materials.Bauxite, 32),
+ Materials.SodiumHydroxide.getDust(9),
+ Materials.Quicklime.getDust(4),
+ GT_Utility.getIntegratedCircuit(8))
+ .fluidInputs(Materials.Water.getFluid(5000))
+ .fluidOutputs(MaterialsOreAlum.BauxiteSlurry.getFluid(8000))
+ .duration(10 * SECONDS)
+ .eut(TierEU.RECIPE_MV)
+ .addTo(mixerRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_Utility.getIntegratedCircuit(1))
+ .fluidInputs(MaterialsOreAlum.BauxiteSlurry.getFluid(32000), GT_ModHandler.getSteam(2000))
+ .fluidOutputs(MaterialsOreAlum.HeatedBauxiteSlurry.getFluid(32000))
+ .duration(8 * SECONDS)
+ .eut(400)
+ .addTo(crackingRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(Materials.Aluminiumhydroxide.getDust(1))
+ .itemOutputs(
+ Materials.Aluminiumoxide.getDust(64),
+ Materials.Aluminiumoxide.getDust(16),
+ Materials.SodiumCarbonate.getDust(9),
+ Materials.Calcite.getDust(10),
+ MaterialsOreAlum.BauxiteSlag.getDust(16))
+ .fluidInputs(Materials.CarbonDioxide.getGas(5000), MaterialsOreAlum.HeatedBauxiteSlurry.getFluid(8000))
+ .fluidOutputs(MaterialsOreAlum.SluiceJuice.getFluid(5000))
+ .duration(15 * SECONDS)
+ .eut(TierEU.RECIPE_HV)
+ .addTo(multiblockChemicalReactorRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(MaterialsOreAlum.BauxiteSlag.getDust(1))
+ .itemOutputs(
+ Materials.Rutile.getDust(1),
+ Materials.Gallium.getDust(1),
+ Materials.Quicklime.getDust(1),
+ Materials.SiliconDioxide.getDust(1),
+ Materials.Iron.getDust(1))
+ .outputChances(10000, 3000, 2000, 9000, 8000)
+ .duration(2 * SECONDS)
+ .eut(TierEU.RECIPE_MV)
+ .addTo(centrifugeRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_OreDictUnificator.get(OrePrefixes.crushedPurified, Materials.Ilmenite, 1))
+ .itemOutputs(Materials.Rutile.getDust(2), MaterialsOreAlum.IlmeniteSlag.getDust(1))
+ .outputChances(10000, 3000)
+ .fluidInputs(Materials.SulfuricAcid.getFluid(1000))
+ .fluidOutputs(new FluidStack(ItemList.sGreenVitriol, 2000))
+ .duration(21 * SECONDS)
+ .eut(1000)
+ .addTo(chemicalBathRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_OreDictUnificator.get(OrePrefixes.crushed, Materials.Ilmenite, 1))
+ .itemOutputs(Materials.Rutile.getDust(2), MaterialsOreAlum.IlmeniteSlag.getDust(1))
+ .outputChances(10000, 6000)
+ .fluidInputs(Materials.SulfuricAcid.getFluid(1000))
+ .fluidOutputs(new FluidStack(ItemList.sGreenVitriol, 2000))
+ .duration(21 * SECONDS)
+ .eut(1000)
+ .addTo(chemicalBathRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(MaterialsOreAlum.IlmeniteSlag.getDust(1))
+ .itemOutputs(
+ Materials.Iron.getDust(1),
+ Materials.Niobium.getDust(1),
+ Materials.Tantalum.getDust(1),
+ Materials.Manganese.getDust(1),
+ Materials.Magnesium.getDust(1))
+ .outputChances(8000, 500, 2000, 5000, 6000)
+ .duration(2 * SECONDS)
+ .eut(TierEU.RECIPE_MV)
+ .addTo(centrifugeRecipes);
+
+ OrePrefixes[] washable = new OrePrefixes[] { OrePrefixes.crushed, OrePrefixes.crushedPurified,
+ OrePrefixes.dustImpure, OrePrefixes.dustPure };
+
+ for (OrePrefixes ore : washable) {
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_OreDictUnificator.get(ore, Materials.Sapphire, 1),
+ GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.SodiumHydroxide, 1),
+ GT_Utility.getIntegratedCircuit(1))
+ .fluidInputs(Materials.HydrochloricAcid.getFluid(1000))
+ .fluidOutputs(MaterialsOreAlum.SapphireJuice.getFluid(1000))
+ .duration(2 * SECONDS)
+ .eut(100)
+ .addTo(mixerRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_OreDictUnificator.get(ore, Materials.GreenSapphire, 1),
+ GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.SodiumHydroxide, 1),
+ GT_Utility.getIntegratedCircuit(1))
+ .fluidInputs(Materials.HydrochloricAcid.getFluid(1000))
+ .fluidOutputs(MaterialsOreAlum.GreenSapphireJuice.getFluid(1000))
+ .duration(2 * SECONDS)
+ .eut(100)
+ .addTo(mixerRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_OreDictUnificator.get(ore, Materials.Ruby, 1),
+ GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.SodiumHydroxide, 1),
+ GT_Utility.getIntegratedCircuit(1))
+ .fluidInputs(Materials.HydrochloricAcid.getFluid(1000))
+ .fluidOutputs(MaterialsOreAlum.RubyJuice.getFluid(1000))
+ .duration(2 * SECONDS)
+ .eut(100)
+ .addTo(mixerRecipes);
+ }
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_Utility.getIntegratedCircuit(1))
+ .itemOutputs(
+ Materials.Aluminiumhydroxide.getDust(3),
+ Materials.Iron.getDust(1),
+ Materials.Vanadium.getDust(1),
+ Materials.Magnesium.getDust(1))
+ .outputChances(10000, 300, 200, 200)
+ .fluidInputs(MaterialsOreAlum.SapphireJuice.getFluid(1000))
+ .fluidOutputs(Materials.HydrochloricAcid.getFluid(1000))
+ .duration(2 * SECONDS + 5 * TICKS)
+ .eut(100)
+ .addTo(centrifugeRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_Utility.getIntegratedCircuit(1))
+ .itemOutputs(
+ Materials.Aluminiumhydroxide.getDust(3),
+ Materials.Iron.getDust(1),
+ Materials.Vanadium.getDust(1),
+ Materials.Manganese.getDust(1),
+ Materials.Beryllium.getDust(1))
+ .outputChances(10000, 300, 200, 200, 200)
+ .fluidInputs(MaterialsOreAlum.GreenSapphireJuice.getFluid(1000))
+ .fluidOutputs(Materials.HydrochloricAcid.getFluid(1000))
+ .duration(2 * SECONDS + 5 * TICKS)
+ .eut(100)
+ .addTo(centrifugeRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_Utility.getIntegratedCircuit(1))
+ .itemOutputs(
+ Materials.Aluminiumhydroxide.getDust(3),
+ Materials.Chrome.getDust(1),
+ Materials.Iron.getDust(1),
+ Materials.Vanadium.getDust(1),
+ Materials.Magnesium.getDust(1))
+ .outputChances(10000, 5000, 300, 200, 200)
+ .fluidInputs(MaterialsOreAlum.RubyJuice.getFluid(1000))
+ .fluidOutputs(Materials.HydrochloricAcid.getFluid(1000))
+ .duration(2 * SECONDS + 5 * TICKS)
+ .eut(100)
+ .addTo(centrifugeRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(Materials.Pyrope.getDust(1))
+ .itemOutputs(
+ Materials.Aluminiumoxide.getDust(1),
+ Materials.Magnesia.getDust(1),
+ Materials.Silver.getDust(1),
+ Materials.Iron.getDust(1),
+ Materials.Calcite.getDust(1),
+ Materials.Vanadium.getDust(1))
+ .outputChances(5000, 4000, 300, 300, 300, 200)
+ .fluidInputs(Materials.NitricAcid.getFluid(10))
+ .fluidOutputs(MaterialsOreAlum.SluiceJuice.getFluid(10))
+ .duration(2 * SECONDS + 5 * TICKS)
+ .eut(TierEU.RECIPE_MV)
+ .addTo(centrifugeRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(Materials.Almandine.getDust(1))
+ .itemOutputs(
+ Materials.Aluminiumoxide.getDust(1),
+ Materials.Iron.getDust(1),
+ Materials.Gold.getDust(1),
+ Materials.Calcite.getDust(1),
+ Materials.Chrome.getDust(1),
+ Materials.Vanadium.getDust(1))
+ .outputChances(5000, 4000, 300, 300, 200, 200)
+ .fluidInputs(Materials.NitricAcid.getFluid(10))
+ .fluidOutputs(MaterialsOreAlum.SluiceJuice.getFluid(10))
+ .duration(2 * SECONDS + 5 * TICKS)
+ .eut(TierEU.RECIPE_MV)
+ .addTo(centrifugeRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(Materials.Spessartine.getDust(1))
+ .itemOutputs(
+ Materials.Aluminiumoxide.getDust(1),
+ Materials.Pyrolusite.getDust(1),
+ Materials.Iron.getDust(1),
+ Materials.Calcite.getDust(1),
+ Materials.Magnesium.getDust(1),
+ Materials.Tantalum.getDust(1))
+ .outputChances(5000, 4000, 300, 300, 300, 200)
+ .fluidInputs(Materials.NitricAcid.getFluid(10))
+ .fluidOutputs(MaterialsOreAlum.SluiceJuice.getFluid(10))
+ .duration(2 * SECONDS + 5 * TICKS)
+ .eut(TierEU.RECIPE_MV)
+ .addTo(centrifugeRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(Materials.Andradite.getDust(1))
+ .itemOutputs(
+ Materials.Quicklime.getDust(1),
+ Materials.Iron.getDust(1),
+ Materials.Aluminiumoxide.getDust(1),
+ Materials.Gold.getDust(1),
+ Materials.Vanadium.getDust(1),
+ Materials.Rutile.getDust(1))
+ .outputChances(5000, 4000, 300, 300, 200, 600)
+ .fluidInputs(Materials.NitricAcid.getFluid(10))
+ .fluidOutputs(MaterialsOreAlum.SluiceJuice.getFluid(10))
+ .duration(2 * SECONDS + 5 * TICKS)
+ .eut(TierEU.RECIPE_MV)
+ .addTo(centrifugeRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(Materials.Uvarovite.getDust(1))
+ .itemOutputs(
+ Materials.Quicklime.getDust(1),
+ Materials.Chrome.getDust(1),
+ Materials.Iron.getDust(1),
+ Materials.Silver.getDust(1),
+ Materials.Aluminiumoxide.getDust(1),
+ Materials.Manganese.getDust(1))
+ .outputChances(5000, 1000, 300, 300, 200, 200)
+ .fluidInputs(Materials.NitricAcid.getFluid(10))
+ .fluidOutputs(MaterialsOreAlum.SluiceJuice.getFluid(10))
+ .duration(2 * SECONDS + 5 * TICKS)
+ .eut(TierEU.RECIPE_MV)
+ .addTo(centrifugeRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(Materials.Grossular.getDust(1))
+ .itemOutputs(
+ Materials.Quicklime.getDust(1),
+ Materials.Aluminiumoxide.getDust(1),
+ Materials.Iron.getDust(1),
+ Materials.Gold.getDust(1),
+ Materials.Calcite.getDust(1),
+ Materials.Vanadium.getDust(1))
+ .outputChances(5000, 4000, 300, 300, 300, 200)
+ .fluidInputs(Materials.NitricAcid.getFluid(10))
+ .fluidOutputs(MaterialsOreAlum.SluiceJuice.getFluid(10))
+ .duration(2 * SECONDS + 5 * TICKS)
+ .eut(TierEU.RECIPE_MV)
+ .addTo(centrifugeRecipes);
+ }
+}
diff --git a/src/main/java/gregtech/loaders/postload/chains/GT_NaniteChain.java b/src/main/java/gregtech/loaders/postload/chains/GT_NaniteChain.java
new file mode 100644
index 0000000000..dabcd93a8d
--- /dev/null
+++ b/src/main/java/gregtech/loaders/postload/chains/GT_NaniteChain.java
@@ -0,0 +1,240 @@
+package gregtech.loaders.postload.chains;
+
+import static gregtech.api.enums.Mods.BartWorks;
+import static gregtech.api.enums.Mods.GTPlusPlus;
+import static gregtech.api.enums.Mods.GoodGenerator;
+import static gregtech.api.enums.Mods.NewHorizonsCoreMod;
+import static gregtech.api.util.GT_ModHandler.getModItem;
+import static gregtech.api.util.GT_RecipeBuilder.HOURS;
+import static gregtech.api.util.GT_RecipeBuilder.MINUTES;
+import static gregtech.api.util.GT_RecipeBuilder.SECONDS;
+import static gregtech.api.util.GT_RecipeConstants.AssemblyLine;
+import static gregtech.api.util.GT_RecipeConstants.RESEARCH_ITEM;
+import static gregtech.api.util.GT_RecipeConstants.RESEARCH_TIME;
+
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+
+import gregtech.api.enums.GT_Values;
+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.RecipeMaps;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.api.util.GT_RecipeBuilder;
+
+public class GT_NaniteChain {
+
+ public static void run() {
+
+ ItemStack aUVTierLens = getModItem(NewHorizonsCoreMod.ID, "item.MysteriousCrystalLens", 0);
+ ItemStack aUHVTierLens = getModItem(NewHorizonsCoreMod.ID, "item.ChromaticLens", 0);
+ ItemStack aUEVTierLens = getModItem(NewHorizonsCoreMod.ID, "item.RadoxPolymerLens", 0);
+ ItemStack aUIVTierLens = ItemList.EnergisedTesseract.get(0);
+ ItemStack aUMVTierLens = GT_OreDictUnificator.get(OrePrefixes.lens, Materials.Dilithium, 0, false);
+
+ // Carbon Nanite Recipe Before Nano Forge
+ Fluid solderIndalloy = FluidRegistry.getFluid("molten.indalloy140") != null
+ ? FluidRegistry.getFluid("molten.indalloy140")
+ : FluidRegistry.getFluid("molten.solderingalloy");
+
+ GT_Values.RA.stdBuilder()
+ .metadata(RESEARCH_ITEM, Materials.Carbon.getNanite(1))
+ .metadata(RESEARCH_TIME, 1 * HOURS)
+ .itemInputs(
+ ItemList.Hull_UV.get(16),
+ Materials.Carbon.getNanite(16),
+ ItemList.Field_Generator_ZPM.get(16),
+ ItemList.Conveyor_Module_UV.get(16),
+ ItemList.Electric_Motor_UV.get(32),
+ new Object[] { OrePrefixes.circuit.get(Materials.Master), 16 },
+ GT_OreDictUnificator.get(OrePrefixes.wireGt08, Materials.Naquadah, 32))
+ .fluidInputs(
+ new FluidStack(solderIndalloy, 144 * 32),
+ Materials.HSSS.getMolten(144L * 32),
+ Materials.Osmiridium.getMolten(144L * 16))
+ .itemOutputs(ItemList.NanoForge.get(1))
+ .eut(TierEU.RECIPE_ZPM)
+ .duration(5 * MINUTES)
+ .addTo(AssemblyLine);
+
+ GT_Values.RA.stdBuilder()
+ .metadata(RESEARCH_ITEM, ItemList.Circuit_Crystalmainframe.get(1))
+ .metadata(RESEARCH_TIME, 2 * HOURS)
+ .itemInputs(
+ new Object[] { OrePrefixes.circuit.get(Materials.SuperconductorUHV), 16 },
+ ItemList.Robot_Arm_UV.get(16),
+ ItemList.Circuit_Chip_Stemcell.get(32),
+ GT_OreDictUnificator.get(OrePrefixes.ring, Materials.NaquadahAlloy, 32),
+ GT_OreDictUnificator.get(OrePrefixes.stick, Materials.NaquadahAlloy, 16),
+ Materials.Carbon.getDust(64))
+ .fluidInputs(Materials.UUMatter.getFluid(10000), new FluidStack(solderIndalloy, 144 * 32))
+ .itemOutputs(Materials.Carbon.getNanite(2))
+ .eut(TierEU.RECIPE_UV)
+ .duration(50 * SECONDS)
+ .addTo(AssemblyLine);
+
+ /*
+ * General Rules for making nanite recipes: 1. Never make a nanite that takes a long time to make and only gives
+ * 1, just to be consumed. 2. Nanites meant to be consumed should either have a short duration or a big output.
+ * 3. Nanites which aren't consumed should have a long duration and output less than 16. 4. Nanites should
+ * always take UUM as a fluid and a lot of power to make.
+ */
+
+ // Carbon Nanites - Used to make more Nano Forge Controllers
+ GT_Values.RA.addNanoForgeRecipe(
+ new ItemStack[] { aUVTierLens, getModItem(BartWorks.ID, "bw.werkstoffblockscasingadvanced.01", 8, 31776),
+ ItemList.Circuit_Chip_SoC.get(64) },
+ new FluidStack[] { Materials.UUMatter.getFluid(200_000) },
+ new ItemStack[] { Materials.Carbon.getNanite(64), },
+ null,
+ null,
+ 500 * 20,
+ 10_000_000,
+ 1);
+
+ // Silver Nanites - Used in Tier 2 PCB Factory to improve board production
+ GT_Values.RA.addNanoForgeRecipe(
+ new ItemStack[] { aUEVTierLens, Materials.Silver.getBlocks(8), ItemList.Circuit_Chip_SoC.get(16) },
+ new FluidStack[] { Materials.UUMatter.getFluid(200000) },
+ new ItemStack[] { Materials.Silver.getNanite(1) },
+ null,
+ null,
+ 750 * 20,
+ 10_000_000,
+ 2);
+
+ // Neutronium Nanites - Used to upgrade the Nano Forge to Tier 2
+ GT_Values.RA.addNanoForgeRecipe(
+ new ItemStack[] { aUHVTierLens, Materials.Neutronium.getBlocks(8), ItemList.Circuit_Chip_SoC2.get(64),
+ ItemList.Circuit_Chip_SoC2.get(32) },
+ new FluidStack[] { Materials.UUMatter.getFluid(200000) },
+ new ItemStack[] { Materials.Neutronium.getNanite(1) },
+ null,
+ null,
+ 100 * 20,
+ 100_000_000,
+ 1);
+
+ // Glowstone Nanites - Used in the optical circuit line
+ GT_Values.RA.addNanoForgeRecipe(
+ new ItemStack[] { aUEVTierLens, getModItem(GTPlusPlus.ID, "blockCompressedObsidian", 8, 7), // Double
+ // compressed
+ // glowstone
+ // blocks
+ // (yes, it's
+ // not
+ // obsidian)
+ ItemList.Circuit_Chip_SoC2.get(64) },
+ new FluidStack[] { Materials.UUMatter.getFluid(50000) },
+ new ItemStack[] { Materials.Glowstone.getNanite(64) },
+ null,
+ null,
+ 200 * 20,
+ 50_000_000,
+ 2);
+
+ // Gold Nanites - Used in Tier 3 PCB Factory to improve board production
+ GT_Values.RA.addNanoForgeRecipe(
+ new ItemStack[] { aUMVTierLens, Materials.Gold.getBlocks(8), ItemList.Circuit_Chip_SoC.get(16) },
+ new FluidStack[] { Materials.UUMatter.getFluid(300000) },
+ new ItemStack[] { Materials.Gold.getNanite(1) },
+ null,
+ null,
+ 1_000 * 20,
+ 100_000_000,
+ 3);
+
+ // Transcendent Metal Nanites - Used to upgrade the Nano Forge to Tier 3
+ GT_Values.RA.addNanoForgeRecipe(
+ new ItemStack[] { aUIVTierLens, MaterialsUEVplus.TranscendentMetal.getBlocks(8),
+ ItemList.Circuit_Chip_SoC2.get(64), ItemList.Circuit_Chip_SoC2.get(64),
+ ItemList.Circuit_Chip_SoC2.get(64) },
+ new FluidStack[] { Materials.UUMatter.getFluid(2000000) },
+ new ItemStack[] { MaterialsUEVplus.TranscendentMetal.getNanite(1) },
+ null,
+ null,
+ 750 * 20,
+ 1_000_000_000,
+ 2);
+
+ // White Dwarf Matter Nanites. Used to make Magnetohydrodynamically constrained star matter.
+ GT_Values.RA.addNanoForgeRecipe(
+ new ItemStack[] { aUMVTierLens, getModItem(BartWorks.ID, "gt.bwMetaGeneratedlens", 0, 36), // Magneto
+ // lens
+ getModItem(GTPlusPlus.ID, "MU-metaitem.01", 0, 32105), // Quantum Anomaly, couldn't find any
+ // better naming
+ MaterialsUEVplus.WhiteDwarfMatter.getBlocks(8), getModItem(NewHorizonsCoreMod.ID, "item.PicoWafer", 32),
+ getModItem(GoodGenerator.ID, "huiCircuit", 1, 4) // Paradox circuit
+ },
+ new FluidStack[] { Materials.UUMatter.getFluid(500_000), MaterialsUEVplus.RawStarMatter.getFluid(50_000),
+ MaterialsUEVplus.Space.getMolten(720), },
+ new ItemStack[] { MaterialsUEVplus.WhiteDwarfMatter.getNanite(4) },
+ null,
+ null,
+ 750 * 20,
+ 2_000_000_000,
+ 3);
+
+ // Black Dwarf Matter Nanites. Used to make Magnetohydrodynamically constrained star matter.
+ GT_Values.RA.addNanoForgeRecipe(
+ new ItemStack[] { aUMVTierLens, getModItem(BartWorks.ID, "gt.bwMetaGeneratedlens", 0, 36), // Magneto
+ // lens
+ getModItem(GTPlusPlus.ID, "MU-metaitem.01", 0, 32105), // Quantum Anomaly, couldn't find any
+ // better naming
+ MaterialsUEVplus.BlackDwarfMatter.getBlocks(8), getModItem(NewHorizonsCoreMod.ID, "item.PicoWafer", 32),
+ getModItem(GoodGenerator.ID, "huiCircuit", 1, 4) // Paradox circuit
+ },
+ new FluidStack[] { Materials.UUMatter.getFluid(500_000), MaterialsUEVplus.RawStarMatter.getFluid(50_000),
+ MaterialsUEVplus.Time.getMolten(720), },
+ new ItemStack[] { MaterialsUEVplus.BlackDwarfMatter.getNanite(4) },
+ null,
+ null,
+ 750 * 20,
+ 2_000_000_000,
+ 3);
+
+ // Universium nanites.
+ GT_Values.RA.addNanoForgeRecipe(
+ new ItemStack[] { aUMVTierLens,
+ // Quantum Anomaly, couldn't find any better naming.
+ getModItem(GTPlusPlus.ID, "MU-metaitem.01", 0, 32105), MaterialsUEVplus.Universium.getBlocks(8),
+
+ ItemList.Optically_Perfected_CPU.get(16), ItemList.Optically_Compatible_Memory.get(16),
+ getModItem(GoodGenerator.ID, "huiCircuit", 1, 4) // Paradox circuit
+ },
+ new FluidStack[] { MaterialsUEVplus.SpaceTime.getMolten(144), Materials.Infinity.getMolten(576),
+ MaterialsUEVplus.PrimordialMatter.getFluid(64_000), },
+ new ItemStack[] { MaterialsUEVplus.Universium.getNanite(2) },
+ null,
+ null,
+ 750 * 20,
+ 2_000_000_000,
+ 3);
+
+ // Eternity nanites
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_OreDictUnificator.get(OrePrefixes.lens, Materials.Forcicium, 0, false),
+ // Quantum Anomaly
+ getModItem(GTPlusPlus.ID, "MU-metaitem.01", 0, 32105),
+ MaterialsUEVplus.TranscendentMetal.getNanite(1),
+ MaterialsUEVplus.Eternity.getBlocks(8),
+ getModItem(NewHorizonsCoreMod.ID, "item.PicoWafer", 32),
+ ItemList.Timepiece.get(4))
+ .itemOutputs(MaterialsUEVplus.Eternity.getNanite(4))
+ .fluidInputs(
+ MaterialsUEVplus.Space.getMolten(1152),
+ MaterialsUEVplus.ExcitedDTSC.getFluid(50000),
+ MaterialsUEVplus.PrimordialMatter.getFluid(64_000))
+ .duration(750 * GT_RecipeBuilder.SECONDS)
+ .eut(TierEU.RECIPE_MAX)
+ .specialValue(3)
+ .addTo(RecipeMaps.nanoForgeRecipes);
+
+ }
+}
diff --git a/src/main/java/gregtech/loaders/postload/chains/GT_PCBFactoryRecipes.java b/src/main/java/gregtech/loaders/postload/chains/GT_PCBFactoryRecipes.java
new file mode 100644
index 0000000000..392e6fa154
--- /dev/null
+++ b/src/main/java/gregtech/loaders/postload/chains/GT_PCBFactoryRecipes.java
@@ -0,0 +1,702 @@
+package gregtech.loaders.postload.chains;
+
+import static gregtech.api.enums.Mods.BartWorks;
+import static gregtech.api.enums.Mods.GTPlusPlus;
+import static gregtech.api.recipe.RecipeMaps.assemblerRecipes;
+import static gregtech.api.recipe.metadata.PCBFactoryUpgrade.BIO;
+import static gregtech.api.util.GT_RecipeBuilder.MINUTES;
+import static gregtech.api.util.GT_RecipeBuilder.SECONDS;
+import static gregtech.api.util.GT_RecipeConstants.AssemblyLine;
+import static gregtech.api.util.GT_RecipeConstants.RESEARCH_ITEM;
+import static gregtech.api.util.GT_RecipeConstants.RESEARCH_TIME;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+
+import gregtech.api.enums.GT_Values;
+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.RecipeMaps;
+import gregtech.api.recipe.metadata.PCBFactoryTierKey;
+import gregtech.api.recipe.metadata.PCBFactoryUpgradeKey;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.api.util.GT_PCBFactoryManager;
+import gregtech.api.util.GT_Utility;
+
+@SuppressWarnings("SpellCheckingInspection")
+public class GT_PCBFactoryRecipes {
+
+ private static final PCBFactoryTierKey TIER = PCBFactoryTierKey.INSTANCE;
+ private static final PCBFactoryUpgradeKey UPGRADE = PCBFactoryUpgradeKey.INSTANCE;
+
+ public static void load() {
+ final Fluid solderLuV = FluidRegistry.getFluid("molten.indalloy140") != null
+ ? FluidRegistry.getFluid("molten.indalloy140")
+ : FluidRegistry.getFluid("molten.solderingalloy");
+
+ // Load Multi Recipes
+ GT_Values.RA.stdBuilder()
+ .metadata(RESEARCH_ITEM, ItemList.Circuit_Board_Wetware.get(1))
+ .metadata(RESEARCH_TIME, 3 * MINUTES)
+ .itemInputs(
+ GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Neutronium, 32),
+ ItemList.Machine_ZPM_CircuitAssembler.get(4),
+ new Object[] { OrePrefixes.circuit.get(Materials.Master), 16 },
+ ItemList.Robot_Arm_ZPM.get(8))
+ .fluidInputs(new FluidStack(solderLuV, 144 * 36), Materials.Naquadah.getMolten(144 * 18))
+ .itemOutputs(ItemList.PCBFactory.get(1))
+ .eut(TierEU.RECIPE_UV)
+ .duration(5 * MINUTES)
+ .addTo(AssemblyLine);
+
+ if (GTPlusPlus.isModLoaded()) {
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.NaquadahAlloy, 1),
+ Materials.get("Artherium-Sn")
+ .getPlates(6))
+ .itemOutputs(ItemList.BasicPhotolithographicFrameworkCasing.get(1))
+ .duration(30 * SECONDS)
+ .eut(TierEU.RECIPE_ZPM)
+ .addTo(assemblerRecipes);
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Infinity, 1),
+ Materials.EnrichedHolmium.getPlates(6))
+ .itemOutputs(ItemList.ReinforcedPhotolithographicFrameworkCasing.get(1))
+ .duration(30 * SECONDS)
+ .eut(TierEU.RECIPE_UHV)
+ .addTo(assemblerRecipes);
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_ModHandler.getModItem(GTPlusPlus.ID, "blockFrameGtCelestialTungsten", 1),
+ Materials.get("Quantum")
+ .getPlates(6))
+ .itemOutputs(ItemList.RadiationProofPhotolithographicFrameworkCasing.get(1))
+ .duration(30 * SECONDS)
+ .eut(TierEU.RECIPE_UIV)
+ .addTo(assemblerRecipes);
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_ModHandler.getModItem(GTPlusPlus.ID, "blockFrameGtHypogen", 1),
+ GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.Infinity, 2),
+ Materials.Thulium.getPlates(6))
+ .itemOutputs(ItemList.InfinityCooledCasing.get(1))
+ .fluidInputs(MaterialsUEVplus.SpaceTime.getMolten(8 * 144))
+ .duration(10 * SECONDS)
+ .eut(TierEU.RECIPE_UMV)
+ .addTo(assemblerRecipes);
+ }
+
+ // Load CircuitBoard Recipes
+
+ // Plastic Circuit Board
+ for (int tier = 1; tier <= GT_PCBFactoryManager.mTiersOfPlastics; tier++) {
+ int amountOfBoards = (int) Math.ceil(8 * (Math.sqrt(Math.pow(2, tier - 1))));
+ List<ItemStack> aBoards = new ArrayList<>();
+ for (int i = amountOfBoards; i > 64; i -= 64) {
+ aBoards.add(ItemList.Circuit_Board_Plastic_Advanced.get(64));
+ amountOfBoards -= 64;
+ }
+ aBoards.add(ItemList.Circuit_Board_Plastic_Advanced.get(amountOfBoards));
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_Utility.getIntegratedCircuit(1),
+ GT_PCBFactoryManager.getPlasticMaterialFromTier(tier)
+ .getPlates(1),
+ GT_OreDictUnificator
+ .get(OrePrefixes.foil, Materials.AnnealedCopper, (long) (16 * (Math.sqrt(tier)))),
+ GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Copper, (long) (16 * (Math.sqrt(tier)))))
+ .fluidInputs(
+ Materials.SulfuricAcid.getFluid((long) (500 * (Math.sqrt(tier)))),
+ Materials.IronIIIChloride.getFluid((long) (250 * (Math.sqrt(tier)))))
+ .itemOutputs(aBoards.toArray(new ItemStack[0]))
+ .duration((int) Math.ceil(600 / Math.sqrt(Math.pow(1.5, tier - 1.5))))
+ .eut((int) GT_Values.VP[tier] * 3 / 4)
+ .metadata(TIER, 1)
+ .addTo(RecipeMaps.pcbFactoryRecipes);
+ }
+ for (int tier = 1; tier <= GT_PCBFactoryManager.mTiersOfPlastics; tier++) {
+ int amountOfBoards = (int) Math.ceil(8 * (Math.sqrt(Math.pow(2, tier - 0.5))));
+ List<ItemStack> aBoards = new ArrayList<>();
+ for (int i = amountOfBoards; i > 64; i -= 64) {
+ aBoards.add(ItemList.Circuit_Board_Plastic_Advanced.get(64));
+ amountOfBoards -= 64;
+ }
+ aBoards.add(ItemList.Circuit_Board_Plastic_Advanced.get(amountOfBoards));
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_Utility.getIntegratedCircuit(2),
+ GT_Utility.getNaniteAsCatalyst(Materials.Silver),
+ GT_PCBFactoryManager.getPlasticMaterialFromTier(tier)
+ .getPlates(1),
+ GT_OreDictUnificator
+ .get(OrePrefixes.foil, Materials.AnnealedCopper, (long) (16 * (Math.sqrt(tier)))),
+ GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Copper, (long) (16 * (Math.sqrt(tier)))))
+ .fluidInputs(
+ Materials.SulfuricAcid.getFluid((long) (500 * (Math.sqrt(tier)))),
+ Materials.IronIIIChloride.getFluid((long) (250 * (Math.sqrt(tier)))))
+ .itemOutputs(aBoards.toArray(new ItemStack[0]))
+ .duration((int) Math.ceil(500 / Math.sqrt(Math.pow(1.5, tier - 1.5))))
+ .eut((int) GT_Values.VP[tier + 1] * 3 / 4)
+ .metadata(TIER, 2)
+ .addTo(RecipeMaps.pcbFactoryRecipes);
+ }
+ for (int tier = 1; tier <= GT_PCBFactoryManager.mTiersOfPlastics; tier++) {
+ int amountOfBoards = (int) Math.ceil(8 * (Math.sqrt(Math.pow(2, tier))));
+ List<ItemStack> aBoards = new ArrayList<>();
+ for (int i = amountOfBoards; i > 64; i -= 64) {
+ aBoards.add(ItemList.Circuit_Board_Plastic_Advanced.get(64));
+ amountOfBoards -= 64;
+ }
+ aBoards.add(ItemList.Circuit_Board_Plastic_Advanced.get(amountOfBoards));
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_Utility.getIntegratedCircuit(3),
+ GT_Utility.getNaniteAsCatalyst(Materials.Gold),
+ GT_PCBFactoryManager.getPlasticMaterialFromTier(tier)
+ .getPlates(1),
+ GT_OreDictUnificator
+ .get(OrePrefixes.foil, Materials.AnnealedCopper, (long) (16 * (Math.sqrt(tier)))),
+ GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Copper, (long) (16 * (Math.sqrt(tier)))))
+ .fluidInputs(
+ Materials.SulfuricAcid.getFluid((long) (500 * (Math.sqrt(tier)))),
+ Materials.IronIIIChloride.getFluid((long) (250 * (Math.sqrt(tier)))))
+ .itemOutputs(aBoards.toArray(new ItemStack[0]))
+ .duration((int) Math.ceil(400 / Math.sqrt(Math.pow(1.5, tier - 1.5))))
+ .eut((int) GT_Values.VP[tier + 1] * 3 / 4)
+ .metadata(TIER, 3)
+ .addTo(RecipeMaps.pcbFactoryRecipes);
+ }
+
+ // Advanced Circuit Board
+ for (int tier = 2; tier <= GT_PCBFactoryManager.mTiersOfPlastics; tier++) {
+ int amountOfBoards = (int) Math.ceil(8 * (Math.sqrt(Math.pow(2, tier - 2))));
+ List<ItemStack> aBoards = new ArrayList<>();
+ for (int i = amountOfBoards; i > 64; i -= 64) {
+ aBoards.add(ItemList.Circuit_Board_Epoxy_Advanced.get(i));
+ amountOfBoards -= 64;
+ }
+ aBoards.add(ItemList.Circuit_Board_Epoxy_Advanced.get(amountOfBoards));
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_Utility.getIntegratedCircuit(1),
+ GT_PCBFactoryManager.getPlasticMaterialFromTier(tier)
+ .getPlates(1),
+ GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Gold, (long) (16 * (Math.sqrt(tier - 1)))),
+ GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Electrum, (long) (16 * (Math.sqrt(tier - 1)))))
+ .fluidInputs(
+ Materials.SulfuricAcid.getFluid((long) (500 * (Math.sqrt(tier - 1)))),
+ Materials.IronIIIChloride.getFluid((long) (500 * (Math.sqrt(tier - 1)))))
+ .itemOutputs(aBoards.toArray(new ItemStack[0]))
+ .duration((int) Math.ceil(600 / Math.sqrt(Math.pow(1.5, tier - 2.5))))
+ .eut((int) GT_Values.VP[tier] * 3 / 4)
+ .metadata(TIER, 1)
+ .addTo(RecipeMaps.pcbFactoryRecipes);
+ }
+ for (int tier = 2; tier <= GT_PCBFactoryManager.mTiersOfPlastics; tier++) {
+ int amountOfBoards = (int) Math.ceil(8 * (Math.sqrt(Math.pow(2, tier - 1.5))));
+ List<ItemStack> aBoards = new ArrayList<>();
+ for (int i = amountOfBoards; i > 64; i -= 64) {
+ aBoards.add(ItemList.Circuit_Board_Epoxy_Advanced.get(i));
+ amountOfBoards -= 64;
+ }
+ aBoards.add(ItemList.Circuit_Board_Epoxy_Advanced.get(amountOfBoards));
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_Utility.getIntegratedCircuit(2),
+ GT_Utility.getNaniteAsCatalyst(Materials.Silver),
+ GT_PCBFactoryManager.getPlasticMaterialFromTier(tier)
+ .getPlates(1),
+ GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Gold, (long) (16 * (Math.sqrt(tier - 1)))),
+ GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Electrum, (long) (16 * (Math.sqrt(tier - 1)))))
+ .fluidInputs(
+ Materials.SulfuricAcid.getFluid((long) (500 * (Math.sqrt(tier - 1)))),
+ Materials.IronIIIChloride.getFluid((long) (500 * (Math.sqrt(tier - 1)))))
+ .itemOutputs(aBoards.toArray(new ItemStack[0]))
+ .duration((int) Math.ceil(500 / Math.sqrt(Math.pow(1.5, tier - 2.5))))
+ .eut((int) GT_Values.VP[tier + 1] * 3 / 4)
+ .metadata(TIER, 2)
+ .addTo(RecipeMaps.pcbFactoryRecipes);
+ }
+ for (int tier = 2; tier <= GT_PCBFactoryManager.mTiersOfPlastics; tier++) {
+ int amountOfBoards = (int) Math.ceil(8 * (Math.sqrt(Math.pow(2, tier - 1))));
+ List<ItemStack> aBoards = new ArrayList<>();
+ for (int i = amountOfBoards; i > 64; i -= 64) {
+ aBoards.add(ItemList.Circuit_Board_Epoxy_Advanced.get(i));
+ amountOfBoards -= 64;
+ }
+ aBoards.add(ItemList.Circuit_Board_Epoxy_Advanced.get(amountOfBoards));
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_Utility.getIntegratedCircuit(3),
+ GT_Utility.getNaniteAsCatalyst(Materials.Gold),
+ GT_PCBFactoryManager.getPlasticMaterialFromTier(tier)
+ .getPlates(1),