aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/bartworks/common/loaders/recipes
diff options
context:
space:
mode:
authorNotAPenguin <michiel.vandeginste@gmail.com>2024-09-02 23:17:17 +0200
committerGitHub <noreply@github.com>2024-09-02 23:17:17 +0200
commit1b820de08a05070909a267e17f033fcf58ac8710 (patch)
tree02831a025986a06b20f87e5bcc69d1e0c639a342 /src/main/java/bartworks/common/loaders/recipes
parentafd3fd92b6a6ab9ab0d0dc3214e6bc8ff7a86c9b (diff)
downloadGT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.gz
GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.bz2
GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.zip
The Great Renaming (#3014)
* move kekztech to a single root dir * move detrav to a single root dir * move gtnh-lanthanides to a single root dir * move tectech and delete some gross reflection in gt++ * remove more reflection inside gt5u * delete more reflection in gt++ * fix imports * move bartworks and bwcrossmod * fix proxies * move galactigreg and ggfab * move gtneioreplugin * try to fix gt++ bee loader * apply the rename rules to BW * apply rename rules to bwcrossmod * apply rename rules to detrav scanner mod * apply rename rules to galacticgreg * apply rename rules to ggfab * apply rename rules to goodgenerator * apply rename rules to gtnh-lanthanides * apply rename rules to gt++ * apply rename rules to kekztech * apply rename rules to kubatech * apply rename rules to tectech * apply rename rules to gt apply the rename rules to gt * fix tt import * fix mui hopefully * fix coremod except intergalactic * rename assline recipe class * fix a class name i stumbled on * rename StructureUtility to GTStructureUtility to prevent conflict with structurelib * temporary rename of GTTooltipDataCache to old name * fix gt client/server proxy names
Diffstat (limited to 'src/main/java/bartworks/common/loaders/recipes')
-rw-r--r--src/main/java/bartworks/common/loaders/recipes/Assembler.java270
-rw-r--r--src/main/java/bartworks/common/loaders/recipes/AssemblyLine.java81
-rw-r--r--src/main/java/bartworks/common/loaders/recipes/Autoclave.java40
-rw-r--r--src/main/java/bartworks/common/loaders/recipes/Centrifuge.java141
-rw-r--r--src/main/java/bartworks/common/loaders/recipes/ChemicalBath.java83
-rw-r--r--src/main/java/bartworks/common/loaders/recipes/ChemicalReactor.java28
-rw-r--r--src/main/java/bartworks/common/loaders/recipes/CraftingRecipes.java468
-rw-r--r--src/main/java/bartworks/common/loaders/recipes/Electrolyzer.java151
-rw-r--r--src/main/java/bartworks/common/loaders/recipes/Extractor.java44
-rw-r--r--src/main/java/bartworks/common/loaders/recipes/FakeRecipes.java11
-rw-r--r--src/main/java/bartworks/common/loaders/recipes/FluidHeater.java26
-rw-r--r--src/main/java/bartworks/common/loaders/recipes/FluidSolidifier.java102
-rw-r--r--src/main/java/bartworks/common/loaders/recipes/FormingPress.java76
-rw-r--r--src/main/java/bartworks/common/loaders/recipes/LaserEngraver.java27
-rw-r--r--src/main/java/bartworks/common/loaders/recipes/Mixer.java62
-rw-r--r--src/main/java/bartworks/common/loaders/recipes/Pulverizer.java97
-rw-r--r--src/main/java/bartworks/common/loaders/recipes/PyrolyseOven.java27
17 files changed, 1734 insertions, 0 deletions
diff --git a/src/main/java/bartworks/common/loaders/recipes/Assembler.java b/src/main/java/bartworks/common/loaders/recipes/Assembler.java
new file mode 100644
index 0000000000..912b0f8c9a
--- /dev/null
+++ b/src/main/java/bartworks/common/loaders/recipes/Assembler.java
@@ -0,0 +1,270 @@
+package bartworks.common.loaders.recipes;
+
+import static gregtech.api.recipe.RecipeMaps.assemblerRecipes;
+import static gregtech.api.util.GTRecipeBuilder.HOURS;
+import static gregtech.api.util.GTRecipeBuilder.SECONDS;
+import static gregtech.api.util.GTRecipeBuilder.TICKS;
+
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.FluidRegistry;
+
+import bartworks.common.loaders.ItemRegistry;
+import bartworks.system.material.WerkstoffLoader;
+import gregtech.api.GregTechAPI;
+import gregtech.api.enums.GTValues;
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.enums.TierEU;
+import gregtech.api.util.GTOreDictUnificator;
+import gregtech.api.util.GTUtility;
+
+public class Assembler implements Runnable {
+
+ @Override
+ public void run() {
+ Materials[] cables = { // Cable material used in the acid gen, diode and energy distributor below
+ Materials.Lead, // ULV
+ Materials.Tin, // LV
+ Materials.AnnealedCopper, // MV
+ Materials.Gold, // HV
+ Materials.Aluminium, // EV
+ Materials.Tungsten, // IV
+ Materials.VanadiumGallium, // LuV
+ Materials.Naquadah, // ZPM
+ Materials.NaquadahAlloy, // UV
+ Materials.SuperconductorUV // UHV
+ };
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(
+ new ItemStack(ItemRegistry.BW_BLOCKS[0], 1, 0),
+ Materials.Lapis.getPlates(9),
+ GTOreDictUnificator.get(OrePrefixes.circuit, Materials.HV, 2L),
+ GTUtility.getIntegratedCircuit(17))
+ .itemOutputs(new ItemStack(ItemRegistry.BW_BLOCKS[0], 1, 1))
+ .fluidInputs(FluidRegistry.getFluidStack("ic2coolant", 1000))
+ .duration(5 * SECONDS)
+ .eut(TierEU.RECIPE_HV)
+ .addTo(assemblerRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(
+ new ItemStack(ItemRegistry.BW_BLOCKS[0], 1, 1),
+ Materials.Lapis.getBlocks(8),
+ GTUtility.getIntegratedCircuit(17))
+ .itemOutputs(new ItemStack(ItemRegistry.BW_BLOCKS[1]))
+ .duration(5 * SECONDS)
+ .eut(TierEU.RECIPE_HV)
+ .addTo(assemblerRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(ItemList.Machine_Multi_BlastFurnace.get(64), GTUtility.getIntegratedCircuit(17))
+ .itemOutputs(ItemRegistry.megaMachines[0])
+ .fluidInputs(Materials.SolderingAlloy.getMolten(9216))
+ .duration(1 * HOURS)
+ .eut(TierEU.RECIPE_HV)
+ .addTo(assemblerRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(ItemList.Machine_Multi_VacuumFreezer.get(64), GTUtility.getIntegratedCircuit(17))
+ .itemOutputs(ItemRegistry.megaMachines[1])
+ .fluidInputs(Materials.SolderingAlloy.getMolten(9216))
+ .duration(1 * HOURS)
+ .eut(TierEU.RECIPE_HV)
+ .addTo(assemblerRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(ItemList.Distillation_Tower.get(64), GTUtility.getIntegratedCircuit(17))
+ .itemOutputs(ItemRegistry.megaMachines[2])
+ .fluidInputs(Materials.SolderingAlloy.getMolten(9216))
+ .duration(1 * HOURS)
+ .eut(TierEU.RECIPE_HV)
+ .addTo(assemblerRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(ItemList.Machine_Multi_LargeChemicalReactor.get(64), GTUtility.getIntegratedCircuit(17))
+ .itemOutputs(ItemRegistry.megaMachines[3])
+ .fluidInputs(Materials.SolderingAlloy.getMolten(9216))
+ .duration(1 * HOURS)
+ .eut(TierEU.RECIPE_HV)
+ .addTo(assemblerRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(ItemList.OilCracker.get(64), GTUtility.getIntegratedCircuit(17))
+ .itemOutputs(ItemRegistry.megaMachines[4])
+ .fluidInputs(Materials.SolderingAlloy.getMolten(9216))
+ .duration(1 * HOURS)
+ .eut(TierEU.RECIPE_HV)
+ .addTo(assemblerRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(
+ GTOreDictUnificator.get(OrePrefixes.wireFine, Materials.AnnealedCopper, 64L),
+ GTUtility.getIntegratedCircuit(17))
+ .itemOutputs(new ItemStack(ItemRegistry.BW_BLOCKS[2], 1, 1))
+ .fluidInputs(Materials.Plastic.getMolten(1152L))
+ .duration(1 * TICKS)
+ .eut(TierEU.RECIPE_HV)
+ .addTo(assemblerRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(
+ GTOreDictUnificator.get(OrePrefixes.circuit, Materials.MV, 1L),
+ Materials.Aluminium.getPlates(1),
+ ItemList.Circuit_Board_Plastic.get(1L),
+ ItemList.Battery_RE_LV_Lithium.get(1L))
+ .itemOutputs(new ItemStack(ItemRegistry.CIRCUIT_PROGRAMMER))
+ .fluidInputs(Materials.SolderingAlloy.getMolten(288L))
+ .duration(30 * SECONDS)
+ .eut(TierEU.RECIPE_MV)
+ .addTo(assemblerRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(
+ ItemList.Circuit_Parts_GlassFiber.get(32),
+ GTOreDictUnificator.get(OrePrefixes.foil, Materials.Electrum, 8),
+ WerkstoffLoader.CubicZirconia.get(OrePrefixes.gemExquisite, 2))
+ .itemOutputs(
+ new ItemStack(
+ ItemRegistry.TecTechPipeEnergyLowPower.getItem(),
+ 1,
+ ItemRegistry.TecTechPipeEnergyLowPower.getItemDamage()))
+ .fluidInputs(Materials.Polytetrafluoroethylene.getMolten(72))
+ .duration(10 * SECONDS)
+ .eut(TierEU.RECIPE_EV)
+ .addTo(assemblerRecipes);
+
+ ItemStack[][] converters = ItemRegistry.TecTechLaserAdditions[0];
+ ItemStack[][] input = ItemRegistry.TecTechLaserAdditions[1];
+ ItemStack[][] dynamo = ItemRegistry.TecTechLaserAdditions[2];
+
+ ItemList[] emitters = { ItemList.Emitter_EV, ItemList.Emitter_IV, ItemList.Emitter_LuV, ItemList.Emitter_ZPM };
+
+ ItemList[] sensors = { ItemList.Sensor_EV, ItemList.Sensor_IV, ItemList.Sensor_LuV, ItemList.Sensor_ZPM };
+
+ OrePrefixes[] prefixes = { OrePrefixes.cableGt04, OrePrefixes.cableGt08, OrePrefixes.cableGt12,
+ OrePrefixes.cableGt16 };
+
+ for (int j = 0; j < 4; j++) {
+ for (int i = 0; i < 4; i++) {
+ ItemStack converter = converters[j][i];
+ ItemStack eInput = input[j][i];
+ ItemStack eDynamo = dynamo[j][i];
+ long recipeConsumption = switch (i) {
+ case 0 -> TierEU.RECIPE_EV;
+ case 1 -> TierEU.RECIPE_IV;
+ case 2 -> TierEU.RECIPE_LuV;
+ case 3 -> TierEU.RECIPE_ZPM;
+ default -> TierEU.RECIPE_EV;
+ };
+
+ int solderingAmount = Math.max(144 * i, 72) * (j + 1);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(
+
+ new ItemStack(
+ ItemRegistry.TecTechPipeEnergyLowPower.getItem(),
+ ((j + 1) * 16),
+ ItemRegistry.TecTechPipeEnergyLowPower.getItemDamage()),
+ WerkstoffLoader.CubicZirconia.get(OrePrefixes.lens),
+ GTOreDictUnificator.get(prefixes[j], cables[i + 4], 8),
+ emitters[i].get(2 * (j + 1)),
+ sensors[i].get(2 * (j + 1)),
+ ItemList.TRANSFORMERS[4 + i].get(2 * (j + 1)))
+ .itemOutputs(converter)
+ .fluidInputs(Materials.SolderingAlloy.getMolten(solderingAmount))
+ .duration((10 * (j + 1)) * SECONDS)
+ .eut(recipeConsumption)
+ .addTo(assemblerRecipes);
+ GTValues.RA.stdBuilder()
+ .itemInputs(
+ new ItemStack(
+ ItemRegistry.TecTechPipeEnergyLowPower.getItem(),
+ ((j + 1) * 16),
+ ItemRegistry.TecTechPipeEnergyLowPower.getItemDamage()),
+ WerkstoffLoader.CubicZirconia.get(OrePrefixes.lens),
+ GTOreDictUnificator.get(prefixes[j], cables[i + 4], 8),
+ emitters[i].get(2 * (j + 1)),
+ sensors[i].get(2 * (j + 1)),
+ ItemList.TRANSFORMERS[4 + i].get(2 * (j + 1)))
+ .itemOutputs(converter)
+ .fluidInputs(Materials.SolderingAlloy.getMolten(solderingAmount))
+ .duration((10 * (j + 1)) * SECONDS)
+ .eut(recipeConsumption)
+ .addTo(assemblerRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(
+ new ItemStack(
+ ItemRegistry.TecTechPipeEnergyLowPower.getItem(),
+ (j + 1) * 16,
+ ItemRegistry.TecTechPipeEnergyLowPower.getItemDamage()),
+ WerkstoffLoader.CubicZirconia.get(OrePrefixes.lens),
+ GTOreDictUnificator.get(prefixes[j], cables[i + 4], 8),
+ sensors[i].get(2 * (j + 1)),
+ ItemList.HATCHES_ENERGY[4 + i].get(2 * (j + 1)))
+ .itemOutputs(eInput)
+ .fluidInputs(Materials.SolderingAlloy.getMolten(solderingAmount))
+ .duration((10 * (j + 1)) * SECONDS)
+ .eut(recipeConsumption)
+ .addTo(assemblerRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(
+ new ItemStack(
+ ItemRegistry.TecTechPipeEnergyLowPower.getItem(),
+ (j + 1) * 16,
+ ItemRegistry.TecTechPipeEnergyLowPower.getItemDamage()),
+ WerkstoffLoader.CubicZirconia.get(OrePrefixes.lens),
+ GTOreDictUnificator.get(prefixes[j], cables[i + 4], 8),
+ emitters[i].get(2 * (j + 1)),
+ ItemList.HATCHES_DYNAMO[4 + i].get(2 * (j + 1)))
+ .itemOutputs(eDynamo)
+ .fluidInputs(Materials.SolderingAlloy.getMolten(solderingAmount))
+ .duration((10 * (j + 1) * SECONDS))
+ .eut(recipeConsumption)
+ .addTo(assemblerRecipes);
+ }
+ }
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(
+ ItemList.Hatch_Input_HV.get(64),
+ Materials.LiquidAir.getCells(1),
+ GTUtility.getIntegratedCircuit(17))
+ .itemOutputs(ItemRegistry.compressedHatch.copy())
+ .duration(15 * SECONDS)
+ .eut(TierEU.RECIPE_HV)
+ .addTo(assemblerRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(ItemList.Hatch_Output_HV.get(64), GTUtility.getIntegratedCircuit(17))
+ .itemOutputs(ItemRegistry.giantOutputHatch.copy())
+ .duration(15 * SECONDS)
+ .eut(TierEU.RECIPE_HV)
+ .addTo(assemblerRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(
+ GTOreDictUnificator.get(OrePrefixes.plateDense, Materials.Lead, 6),
+ GTOreDictUnificator.get(OrePrefixes.frameGt, Materials.TungstenSteel, 1))
+ .itemOutputs(new ItemStack(GregTechAPI.sBlockCasings3, 1, 12))
+ .fluidInputs(Materials.Concrete.getMolten(1296))
+ .duration(2 * SECONDS)
+ .eut(TierEU.RECIPE_IV)
+ .addTo(assemblerRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(
+ new ItemStack(GregTechAPI.sBlockCasings3, 1, 12),
+ GTOreDictUnificator.get(OrePrefixes.foil, Materials.Europium, 6),
+ GTOreDictUnificator.get(OrePrefixes.screw, Materials.Europium, 24))
+ .itemOutputs(new ItemStack(GregTechAPI.sBlockCasings8, 1, 5))
+ .fluidInputs(Materials.Lead.getMolten(864))
+ .duration(10 * SECONDS)
+ .eut(TierEU.RECIPE_LuV)
+ .addTo(assemblerRecipes);
+ }
+}
diff --git a/src/main/java/bartworks/common/loaders/recipes/AssemblyLine.java b/src/main/java/bartworks/common/loaders/recipes/AssemblyLine.java
new file mode 100644
index 0000000000..650bb02918
--- /dev/null
+++ b/src/main/java/bartworks/common/loaders/recipes/AssemblyLine.java
@@ -0,0 +1,81 @@
+package bartworks.common.loaders.recipes;
+
+import static gregtech.api.util.GTRecipeBuilder.HOURS;
+import static gregtech.api.util.GTRecipeBuilder.MINUTES;
+import static gregtech.api.util.GTRecipeBuilder.SECONDS;
+import static gregtech.api.util.GTRecipeConstants.AssemblyLine;
+import static gregtech.api.util.GTRecipeConstants.RESEARCH_ITEM;
+import static gregtech.api.util.GTRecipeConstants.RESEARCH_TIME;
+
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+
+import bartworks.common.loaders.ItemRegistry;
+import bartworks.system.material.WerkstoffLoader;
+import gregtech.api.enums.GTValues;
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.enums.TierEU;
+import gregtech.api.util.GTOreDictUnificator;
+
+public class AssemblyLine implements Runnable {
+
+ @Override
+ public void run() {
+ Fluid solderIndalloy = FluidRegistry.getFluid("molten.indalloy140") != null
+ ? FluidRegistry.getFluid("molten.indalloy140")
+ : FluidRegistry.getFluid("molten.solderingalloy");
+ GTValues.RA.stdBuilder()
+ .metadata(RESEARCH_ITEM, ItemList.Pump_IV.get(1L))
+ .metadata(RESEARCH_TIME, 1 * HOURS)
+ .itemInputs(
+ ItemList.Pump_IV.get(16),
+ GTOreDictUnificator.get(OrePrefixes.pipeLarge, Materials.Ultimate, 32L),
+ GTOreDictUnificator.get(OrePrefixes.gearGt, Materials.HSSE, 16L),
+ GTOreDictUnificator.get(OrePrefixes.gearGt, Materials.HSSE, 16L),
+ ItemList.Field_Generator_LuV.get(8))
+ .fluidInputs(
+ new FluidStack(solderIndalloy, 32 * 144),
+ Materials.Polytetrafluoroethylene.getMolten(32 * 144))
+ .itemOutputs(ItemRegistry.dehp)
+ .eut(TierEU.RECIPE_LuV)
+ .duration(4 * MINUTES + 10 * SECONDS)
+ .addTo(AssemblyLine);
+
+ GTValues.RA.stdBuilder()
+ .metadata(RESEARCH_ITEM, ItemList.OreDrill4.get(1L))
+ .metadata(RESEARCH_TIME, 25 * MINUTES + 36 * SECONDS)
+ .itemInputs(
+ ItemList.OreDrill4.get(1L),
+ GTOreDictUnificator.get(OrePrefixes.frameGt, Materials.Tritanium, 9L),
+ Materials.Europium.getPlates(3),
+ ItemList.Electric_Motor_LuV.get(9L),
+ ItemList.Sensor_LuV.get(9L),
+ ItemList.Field_Generator_LuV.get(9L),
+ GTOreDictUnificator.get(OrePrefixes.screw, Materials.Europium, 36L))
+ .fluidInputs(new FluidStack(solderIndalloy, 1440), WerkstoffLoader.Neon.getFluidOrGas(20000))
+ .itemOutputs(ItemRegistry.voidminer[0].copy())
+ .eut(TierEU.RECIPE_LuV)
+ .duration(5 * MINUTES)
+ .addTo(AssemblyLine);
+
+ GTValues.RA.stdBuilder()
+ .metadata(RESEARCH_ITEM, ItemList.Machine_LuV_CircuitAssembler.get(1L))
+ .metadata(RESEARCH_TIME, 20 * MINUTES)
+ .itemInputs(
+ ItemList.Machine_LuV_CircuitAssembler.get(1L),
+ ItemList.Robot_Arm_LuV.get(4L),
+ ItemList.Electric_Motor_LuV.get(4L),
+ ItemList.Field_Generator_LuV.get(1L),
+ ItemList.Emitter_LuV.get(1L),
+ ItemList.Sensor_LuV.get(1L),
+ WerkstoffLoader.LuVTierMaterial.get(OrePrefixes.plate, 8))
+ .fluidInputs(new FluidStack(solderIndalloy, 1440))
+ .itemOutputs(ItemRegistry.cal.copy())
+ .eut(TierEU.RECIPE_LuV)
+ .duration(20 * MINUTES)
+ .addTo(AssemblyLine);
+ }
+}
diff --git a/src/main/java/bartworks/common/loaders/recipes/Autoclave.java b/src/main/java/bartworks/common/loaders/recipes/Autoclave.java
new file mode 100644
index 0000000000..12140611f7
--- /dev/null
+++ b/src/main/java/bartworks/common/loaders/recipes/Autoclave.java
@@ -0,0 +1,40 @@
+package bartworks.common.loaders.recipes;
+
+import static gregtech.api.recipe.RecipeMaps.autoclaveRecipes;
+import static gregtech.api.util.GTRecipeBuilder.SECONDS;
+
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+
+import bartworks.common.loaders.BioItemList;
+import gregtech.api.enums.GTValues;
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.TierEU;
+
+public class Autoclave implements Runnable {
+
+ @Override
+ public void run() {
+ Materials[] sterilizers = { Materials.Ammonia, Materials.Chlorine, Materials.Ethanol, Materials.Methanol };
+ for (Materials used : sterilizers) {
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(ItemList.Circuit_Parts_PetriDish.get(1L))
+ .itemOutputs(BioItemList.getPetriDish(null))
+ .fluidInputs(used.getGas(10L) != null ? used.getGas(8L) : used.getFluid(16L))
+ .duration(5 * SECONDS)
+ .eut(TierEU.RECIPE_LV)
+ .addTo(autoclaveRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(new ItemStack(Items.glass_bottle))
+ .itemOutputs(BioItemList.getDNASampleFlask(null))
+ .fluidInputs(used.getGas(10L) != null ? used.getGas(8L) : used.getFluid(16L))
+ .duration(5 * SECONDS)
+ .eut(TierEU.RECIPE_LV)
+ .addTo(autoclaveRecipes);
+
+ }
+ }
+}
diff --git a/src/main/java/bartworks/common/loaders/recipes/Centrifuge.java b/src/main/java/bartworks/common/loaders/recipes/Centrifuge.java
new file mode 100644
index 0000000000..a689d39ce8
--- /dev/null
+++ b/src/main/java/bartworks/common/loaders/recipes/Centrifuge.java
@@ -0,0 +1,141 @@
+package bartworks.common.loaders.recipes;
+
+import static gregtech.api.recipe.RecipeMaps.centrifugeRecipes;
+import static gregtech.api.util.GTRecipeBuilder.MINUTES;
+import static gregtech.api.util.GTRecipeBuilder.SECONDS;
+
+import java.util.Arrays;
+
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.FluidStack;
+
+import bartworks.common.loaders.BioCultureLoader;
+import bartworks.common.loaders.BioItemList;
+import bartworks.common.loaders.FluidLoader;
+import bartworks.common.tileentities.multis.MTEHighTempGasCooledReactor;
+import bartworks.common.tileentities.multis.MTEThoriumHighTempReactor;
+import bartworks.system.material.WerkstoffLoader;
+import gregtech.api.enums.GTValues;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.enums.TierEU;
+import gregtech.api.util.GTRecipeBuilder;
+import gregtech.api.util.GTUtility;
+
+public class Centrifuge implements Runnable {
+
+ @Override
+ public void run() {
+ GTValues.RA.stdBuilder()
+ .itemInputs(Materials.Thorium.getDust(1))
+ .itemOutputs(
+ Materials.Thorium.getDust(1),
+ Materials.Thorium.getDust(1),
+ WerkstoffLoader.Thorium232.get(OrePrefixes.dust, 1),
+ WerkstoffLoader.Thorium232.get(OrePrefixes.dust, 1),
+ WerkstoffLoader.Thorium232.get(OrePrefixes.dust, 1))
+ .outputChances(800, 375, 22, 22, 5)
+ .duration(8 * MINUTES + 20 * SECONDS)
+ .eut(TierEU.RECIPE_EV)
+ .addTo(centrifugeRecipes);
+
+ ItemStack[] pellets = new ItemStack[6];
+ Arrays.fill(pellets, new ItemStack(MTEThoriumHighTempReactor.THTRMaterials.aTHTR_Materials, 64, 4));
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(
+ new ItemStack(MTEThoriumHighTempReactor.THTRMaterials.aTHTR_Materials, 1, 3),
+ GTUtility.getIntegratedCircuit(17))
+ .itemOutputs(pellets)
+ .duration(40 * MINUTES)
+ .eut(TierEU.RECIPE_LV)
+ .addTo(centrifugeRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(
+ new ItemStack(MTEThoriumHighTempReactor.THTRMaterials.aTHTR_Materials, 1, 5),
+ GTUtility.getIntegratedCircuit(17))
+ .itemOutputs(new ItemStack(MTEThoriumHighTempReactor.THTRMaterials.aTHTR_Materials, 64, 6))
+ .duration(40 * MINUTES)
+ .eut(TierEU.RECIPE_LV)
+ .addTo(centrifugeRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(new ItemStack(MTEThoriumHighTempReactor.THTRMaterials.aTHTR_Materials, 1, 6))
+ .itemOutputs(Materials.Lead.getDust(1))
+ .outputChances(300)
+ .duration(60 * SECONDS)
+ .eut(TierEU.RECIPE_LV)
+ .addTo(centrifugeRecipes);
+
+ int i = 0;
+ for (MTEHighTempGasCooledReactor.HTGRMaterials.Fuel_ fuel : MTEHighTempGasCooledReactor.HTGRMaterials.sHTGR_Fuel) {
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(
+ new ItemStack(MTEHighTempGasCooledReactor.HTGRMaterials.aHTGR_Materials, 1, i + 3),
+ GTUtility.getIntegratedCircuit(17))
+ .itemOutputs(
+ new ItemStack(MTEHighTempGasCooledReactor.HTGRMaterials.aHTGR_Materials, 64, i + 4),
+ new ItemStack(MTEHighTempGasCooledReactor.HTGRMaterials.aHTGR_Materials, 64, i + 4),
+ new ItemStack(MTEHighTempGasCooledReactor.HTGRMaterials.aHTGR_Materials, 64, i + 4),
+ new ItemStack(MTEHighTempGasCooledReactor.HTGRMaterials.aHTGR_Materials, 64, i + 4))
+ .duration(10 * MINUTES)
+ .eut(TierEU.RECIPE_LV)
+ .addTo(centrifugeRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(
+ new ItemStack(MTEHighTempGasCooledReactor.HTGRMaterials.aHTGR_Materials, 1, i + 5),
+ GTUtility.getIntegratedCircuit(17))
+ .itemOutputs(new ItemStack(MTEHighTempGasCooledReactor.HTGRMaterials.aHTGR_Materials, 64, i + 6))
+ .duration(2 * MINUTES + 30 * SECONDS)
+ .eut(TierEU.RECIPE_LV)
+ .addTo(centrifugeRecipes);
+
+ GTRecipeBuilder recipeBuilder = GTValues.RA.stdBuilder()
+ .itemInputs(new ItemStack(MTEHighTempGasCooledReactor.HTGRMaterials.aHTGR_Materials, 1, i + 6))
+ .itemOutputs(
+ fuel.recycledItems[0],
+ fuel.recycledItems[1],
+ fuel.recycledItems[2],
+ fuel.recycledItems[3],
+ fuel.recycledItems[4])
+ .outputChances(fuel.recycleChances);
+ if (fuel.recycledFluid != null) {
+ recipeBuilder.fluidOutputs(fuel.recycledFluid);
+ }
+ recipeBuilder.duration(1 * MINUTES)
+ .eut(TierEU.RECIPE_LV)
+ .addTo(centrifugeRecipes);
+
+ i += MTEHighTempGasCooledReactor.HTGRMaterials.MATERIALS_PER_FUEL;
+ }
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(GTUtility.getIntegratedCircuit(17))
+ .itemOutputs(BioItemList.getOther(4))
+ .fluidInputs(new FluidStack(BioCultureLoader.eColi.getFluid(), 1000))
+ .fluidOutputs(new FluidStack(FluidLoader.BioLabFluidMaterials[1], 10))
+ .duration(60 * SECONDS)
+ .eut(TierEU.RECIPE_HV)
+ .addTo(centrifugeRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(GTUtility.getIntegratedCircuit(17))
+ .fluidInputs(new FluidStack(FluidLoader.BioLabFluidMaterials[1], 1000))
+ .fluidOutputs(new FluidStack(FluidLoader.BioLabFluidMaterials[3], 250))
+ .duration(60 * SECONDS)
+ .eut(TierEU.RECIPE_HV)
+ .addTo(centrifugeRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(GTUtility.getIntegratedCircuit(17))
+ .fluidInputs(new FluidStack(BioCultureLoader.CommonYeast.getFluid(), 1000))
+ .fluidOutputs(new FluidStack(FluidLoader.BioLabFluidMaterials[2], 10))
+ .duration(60 * SECONDS)
+ .eut(TierEU.RECIPE_HV)
+ .addTo(centrifugeRecipes);
+
+ }
+}
diff --git a/src/main/java/bartworks/common/loaders/recipes/ChemicalBath.java b/src/main/java/bartworks/common/loaders/recipes/ChemicalBath.java
new file mode 100644
index 0000000000..478acdb81f
--- /dev/null
+++ b/src/main/java/bartworks/common/loaders/recipes/ChemicalBath.java
@@ -0,0 +1,83 @@
+package bartworks.common.loaders.recipes;
+
+import static gregtech.api.recipe.RecipeMaps.chemicalBathRecipes;
+import static gregtech.api.util.GTRecipeBuilder.SECONDS;
+import static gregtech.api.util.GTRecipeBuilder.TICKS;
+
+import net.minecraft.item.ItemStack;
+
+import bartworks.common.loaders.ItemRegistry;
+import gregtech.api.enums.Dyes;
+import gregtech.api.enums.GTValues;
+import gregtech.api.enums.Materials;
+
+public class ChemicalBath implements Runnable {
+
+ @Override
+ public void run() {
+
+ for (int i = 0; i < Dyes.dyeBrown.getSizeOfFluidList(); ++i) {
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(new ItemStack(ItemRegistry.bw_glasses[0], 1, 0))
+ .itemOutputs(new ItemStack(ItemRegistry.bw_glasses[0], 1, 6))
+ .fluidInputs(Dyes.dyeRed.getFluidDye(i, 36))
+ .duration(3 * SECONDS + 4 * TICKS)
+ .eut(2)
+ .addTo(chemicalBathRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(new ItemStack(ItemRegistry.bw_glasses[0], 1, 0))
+ .itemOutputs(new ItemStack(ItemRegistry.bw_glasses[0], 1, 7))
+ .fluidInputs(Dyes.dyeGreen.getFluidDye(i, 36))
+ .duration(3 * SECONDS + 4 * TICKS)
+ .eut(2)
+ .addTo(chemicalBathRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(new ItemStack(ItemRegistry.bw_glasses[0], 1, 0))
+ .itemOutputs(new ItemStack(ItemRegistry.bw_glasses[0], 1, 8))
+ .fluidInputs(Dyes.dyePurple.getFluidDye(i, 36))
+ .duration(3 * SECONDS + 4 * TICKS)
+ .eut(2)
+ .addTo(chemicalBathRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(new ItemStack(ItemRegistry.bw_glasses[0], 1, 0))
+ .itemOutputs(new ItemStack(ItemRegistry.bw_glasses[0], 1, 9))
+ .fluidInputs(Dyes.dyeYellow.getFluidDye(i, 36))
+ .duration(3 * SECONDS + 4 * TICKS)
+ .eut(2)
+ .addTo(chemicalBathRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(new ItemStack(ItemRegistry.bw_glasses[0], 1, 0))
+ .itemOutputs(new ItemStack(ItemRegistry.bw_glasses[0], 1, 10))
+ .fluidInputs(Dyes.dyeLime.getFluidDye(i, 36))
+ .duration(3 * SECONDS + 4 * TICKS)
+ .eut(2)
+ .addTo(chemicalBathRecipes);
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(new ItemStack(ItemRegistry.bw_glasses[0], 1, 0))
+ .itemOutputs(new ItemStack(ItemRegistry.bw_glasses[0], 1, 11))
+ .fluidInputs(Dyes.dyeBrown.getFluidDye(i, 36))
+ .duration(3 * SECONDS + 4 * TICKS)
+ .eut(2)
+ .addTo(chemicalBathRecipes);
+
+ }
+
+ for (int i = 6; i < 11; i++) {
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(new ItemStack(ItemRegistry.bw_glasses[0], 1, i))
+ .itemOutputs(new ItemStack(ItemRegistry.bw_glasses[0], 1, 0))
+ .fluidInputs(Materials.Chlorine.getGas(50))
+ .duration(3 * SECONDS + 4 * TICKS)
+ .eut(2)
+ .addTo(chemicalBathRecipes);
+
+ }
+ }
+}
diff --git a/src/main/java/bartworks/common/loaders/recipes/ChemicalReactor.java b/src/main/java/bartworks/common/loaders/recipes/ChemicalReactor.java
new file mode 100644
index 0000000000..0270a31355
--- /dev/null
+++ b/src/main/java/bartworks/common/loaders/recipes/ChemicalReactor.java
@@ -0,0 +1,28 @@
+package bartworks.common.loaders.recipes;
+
+import static gregtech.api.util.GTRecipeBuilder.SECONDS;
+import static gregtech.api.util.GTRecipeBuilder.TICKS;
+import static gregtech.api.util.GTRecipeConstants.UniversalChemical;
+
+import net.minecraftforge.fluids.FluidStack;
+
+import bartworks.common.loaders.FluidLoader;
+import gregtech.api.enums.GTValues;
+import gregtech.api.enums.TierEU;
+import gregtech.api.util.GTUtility;
+
+public class ChemicalReactor implements Runnable {
+
+ @Override
+ public void run() {
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(GTUtility.getIntegratedCircuit(10))
+ .fluidInputs(new FluidStack(FluidLoader.heatedfulvicAcid, 1000))
+ .fluidOutputs(new FluidStack(FluidLoader.Kerogen, 1000))
+ .duration(3 * SECONDS + 15 * TICKS)
+ .eut(TierEU.RECIPE_MV)
+ .addTo(UniversalChemical);
+
+ }
+}
diff --git a/src/main/java/bartworks/common/loaders/recipes/CraftingRecipes.java b/src/main/java/bartworks/common/loaders/recipes/CraftingRecipes.java
new file mode 100644
index 0000000000..2cb768ec70
--- /dev/null
+++ b/src/main/java/bartworks/common/loaders/recipes/CraftingRecipes.java
@@ -0,0 +1,468 @@
+package bartworks.common.loaders.recipes;
+
+import static gregtech.api.enums.MetaTileEntityIDs.BioLab_EV;
+import static gregtech.api.enums.MetaTileEntityIDs.BioLab_HV;
+import static gregtech.api.enums.MetaTileEntityIDs.BioLab_IV;
+import static gregtech.api.enums.MetaTileEntityIDs.BioLab_LuV;
+import static gregtech.api.enums.MetaTileEntityIDs.BioLab_MAX;
+import static gregtech.api.enums.MetaTileEntityIDs.BioLab_UEV;
+import static gregtech.api.enums.MetaTileEntityIDs.BioLab_UHV;
+import static gregtech.api.enums.MetaTileEntityIDs.BioLab_UIV;
+import static gregtech.api.enums.MetaTileEntityIDs.BioLab_UMV;
+import static gregtech.api.enums.MetaTileEntityIDs.BioLab_UV;
+import static gregtech.api.enums.MetaTileEntityIDs.BioLab_UXV;
+import static gregtech.api.enums.MetaTileEntityIDs.BioLab_ZPM;
+import static gregtech.api.enums.MetaTileEntityIDs.BioVat;
+import static gregtech.api.enums.MetaTileEntityIDs.LESU;
+import static gregtech.api.enums.MetaTileEntityIDs.ManualTrafo;
+import static gregtech.api.enums.MetaTileEntityIDs.RadioHatch_EV;
+import static gregtech.api.enums.MetaTileEntityIDs.RadioHatch_HV;
+import static gregtech.api.enums.MetaTileEntityIDs.RadioHatch_IV;
+import static gregtech.api.