Skip to content

Commit

Permalink
Add EBF Pyrometallurgy Recipes (#20)
Browse files Browse the repository at this point in the history
* add pyrometallurgy recipes
  • Loading branch information
TechLord22 authored Jul 5, 2021
1 parent 8f3a3cf commit 70a32f6
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -439,6 +439,14 @@ public static void register() {
public static SimpleDustMaterial Agar = new SimpleDustMaterial(17, "agar", 0x4F7942, ROUGH, of(), 0);
public static SimpleDustMaterial PotassiumDichromate = new SimpleDustMaterial(18, "potassium_dichromate", 0xFF084E, DULL, of(new MaterialStack(Potassium, 2), new MaterialStack(Chrome, 2), new MaterialStack(Oxygen, 7)), GENERATE_SMALL_TINY);
public static SimpleDustMaterial ChromiumTrioxide = new SimpleDustMaterial(19, "chromium_trioxide", 0xFFE4E1, DULL, of(new MaterialStack(Chrome, 1), new MaterialStack(Oxygen, 3)), GENERATE_SMALL_TINY);
public static SimpleDustMaterial AntimonyTrioxide = new SimpleDustMaterial(20, "antimony_trioxide", 0xE6E6F0, DULL, of(new MaterialStack(Antimony, 2), new MaterialStack(Oxygen, 3)), GENERATE_SMALL_TINY);
public static SimpleDustMaterial Zincite = new SimpleDustMaterial(21, "zincite", 0xFFFFF5, DULL, of(new MaterialStack(Zinc, 1), new MaterialStack(Oxygen, 1)), 0);
public static SimpleDustMaterial CupricOxide = new SimpleDustMaterial(22, "cupric_oxide", 0x0F0F0F, DULL, of(new MaterialStack(Copper, 1), new MaterialStack(Oxygen, 1)), 0);
public static SimpleDustMaterial CobaltOxide = new SimpleDustMaterial(23, "cobalt_oxide", 0x788000, DULL, of(new MaterialStack(Cobalt, 1), new MaterialStack(Oxygen, 1)), 0);
public static SimpleDustMaterial ArsenicTrioxide = new SimpleDustMaterial(24, "arsenic_trioxide", 0xFFFFFF, ROUGH, of(new MaterialStack(Arsenic, 2), new MaterialStack(Oxygen, 3)), GENERATE_SMALL_TINY);
public static SimpleDustMaterial Massicot = new SimpleDustMaterial(25, "massicot", 0xFFDD55, DULL, of(new MaterialStack(Lead, 1), new MaterialStack(Oxygen, 1)), 0);
public static SimpleDustMaterial Ferrosilite = new SimpleDustMaterial(26, "ferrosilite", 0x97632A, DULL, of(new MaterialStack(Iron, 1), new MaterialStack(Silicon, 1), new MaterialStack(Oxygen, 3)), 0);


/**
* Organic chemistry
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,9 @@ public static void processDust(OrePrefix dustPrefix, IMaterial<?> mat) {

boolean hasHotIngot = OrePrefix.ingotHot.doGenerateItem(metalMaterial);
ItemStack ingotStack = OreDictUnifier.get(hasHotIngot ? OrePrefix.ingotHot : OrePrefix.ingot, metalMaterial);
ItemStack nuggetStack = OreDictUnifier.get(OrePrefix.nugget, metalMaterial);

if (metalMaterial.blastFurnaceTemperature <= 0) {
ModHandler.addSmeltingRecipe(new UnificationEntry(dustPrefix, metalMaterial), ingotStack);
ModHandler.addSmeltingRecipe(new UnificationEntry(OrePrefix.dustTiny, metalMaterial), nuggetStack);
} else {
int duration = Math.max(1, (int) (metalMaterial.getAverageMass() * metalMaterial.blastFurnaceTemperature / 50L));
ModHandler.removeFurnaceSmelting(new UnificationEntry(OrePrefix.ingot, metalMaterial));
Expand All @@ -114,18 +112,6 @@ public static void processDust(OrePrefix dustPrefix, IMaterial<?> mat) {
}
ingotSmeltingBuilder.buildAndRegister();

if (!hasHotIngot) {
BlastRecipeBuilder nuggetSmeltingBuilder = RecipeMaps.BLAST_RECIPES.recipeBuilder()
.input(OrePrefix.dustTiny, metalMaterial)
.outputs(nuggetStack)
.blastFurnaceTemp(metalMaterial.blastFurnaceTemperature)
.duration(Math.max(1, duration / 9)).EUt(120);
if (circuitRequiringMaterials.contains(metalMaterial)) {
nuggetSmeltingBuilder.inputs(IntCircuitIngredient.getIntegratedCircuit(1));
}
nuggetSmeltingBuilder.buildAndRegister();
}

if (hasHotIngot) {
RecipeMaps.VACUUM_RECIPES.recipeBuilder()
.input(OrePrefix.ingotHot, metalMaterial)
Expand Down
93 changes: 70 additions & 23 deletions src/main/java/gregtech/loaders/recipe/MachineRecipeLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,14 @@
import gregtech.api.recipes.builders.PBFRecipeBuilder;
import gregtech.api.recipes.ingredients.IntCircuitIngredient;
import gregtech.api.unification.OreDictUnifier;
import gregtech.api.unification.material.IMaterial;
import gregtech.api.unification.material.MarkerMaterials;
import gregtech.api.unification.material.MarkerMaterials.Color;
import gregtech.api.unification.material.MarkerMaterials.Tier;
import gregtech.api.unification.material.Materials;
import gregtech.api.unification.material.type.IngotMaterial;
import gregtech.api.unification.material.type.Material;
import gregtech.api.unification.ore.OrePrefix;
import gregtech.api.unification.stack.MaterialStack;
import gregtech.api.unification.stack.UnificationEntry;
import gregtech.api.util.GTUtility;
import gregtech.common.ConfigHolder;
import gregtech.common.blocks.BlockConcrete.ConcreteVariant;
import gregtech.common.blocks.BlockGranite.GraniteVariant;
Expand All @@ -40,16 +38,8 @@
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.Item;
import net.minecraft.item.ItemFood;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.Tuple;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fml.common.registry.ForgeRegistries;

import java.util.Collection;
import java.util.List;

import static gregtech.api.GTValues.L;
import static gregtech.api.recipes.RecipeMaps.*;
Expand Down Expand Up @@ -550,25 +540,82 @@ private static void registerBlastFurnaceRecipes() {
BLAST_RECIPES.recipeBuilder().duration((int) Math.max(VanadiumGallium.getAverageMass() / 40, 1) * VanadiumGallium.blastFurnaceTemperature).EUt(480).input(ingot, Vanadium, 3).input(ingot, Gallium).outputs(OreDictUnifier.get(OrePrefix.ingotHot, Materials.VanadiumGallium, 4), OreDictUnifier.get(OrePrefix.dustSmall, Materials.DarkAsh, 2)).blastFurnaceTemp(VanadiumGallium.blastFurnaceTemperature).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration((int) Math.max(NiobiumTitanium.getAverageMass() / 80, 1) * NiobiumTitanium.blastFurnaceTemperature).EUt(480).input(ingot, Niobium).input(ingot, Titanium).outputs(OreDictUnifier.get(OrePrefix.ingotHot, Materials.NiobiumTitanium, 2), OreDictUnifier.get(OrePrefix.dustSmall, Materials.DarkAsh)).blastFurnaceTemp(NiobiumTitanium.blastFurnaceTemperature).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration((int) Math.max(Nichrome.getAverageMass() / 32, 1) * Nichrome.blastFurnaceTemperature).EUt(480).input(ingot, Nickel, 4).input(ingot, Chrome).outputs(OreDictUnifier.get(OrePrefix.ingotHot, Materials.Nichrome, 5), OreDictUnifier.get(OrePrefix.dustSmall, Materials.DarkAsh, 2)).blastFurnaceTemp(Nichrome.blastFurnaceTemperature).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(400).EUt(100).input(dust, Ruby).outputs(OreDictUnifier.get(nugget, Aluminium, 5), OreDictUnifier.get(dustTiny, DarkAsh, 4)).blastFurnaceTemp(1200).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(320).EUt(100).input(gem, Ruby).outputs(OreDictUnifier.get(nugget, Aluminium, 5), OreDictUnifier.get(dustTiny, DarkAsh, 4)).blastFurnaceTemp(1200).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(400).EUt(100).input(dust, GreenSapphire).output(nugget, Aluminium, 5).output(dustTiny, DarkAsh, 4).blastFurnaceTemp(1200).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(320).EUt(100).input(gem, GreenSapphire).outputs(OreDictUnifier.get(nugget, Aluminium, 5), OreDictUnifier.get(dustTiny, DarkAsh, 4)).blastFurnaceTemp(1200).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(400).EUt(100).input(dust, Sapphire).outputs(OreDictUnifier.get(nugget, Aluminium, 5), OreDictUnifier.get(dustTiny, DarkAsh, 4)).blastFurnaceTemp(1200).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(320).EUt(100).input(gem, Sapphire).outputs(OreDictUnifier.get(nugget, Aluminium, 5), OreDictUnifier.get(dustTiny, DarkAsh, 4)).blastFurnaceTemp(1200).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(400).EUt(100).input(dust, Ruby).output(nugget, Aluminium, 3).output(dustTiny, DarkAsh).blastFurnaceTemp(1200).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(320).EUt(100).input(gem, Ruby).output(nugget, Aluminium, 3).output(dustTiny, DarkAsh).blastFurnaceTemp(1200).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(400).EUt(100).input(dust, GreenSapphire).output(nugget, Aluminium, 3).output(dustTiny, DarkAsh).blastFurnaceTemp(1200).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(320).EUt(100).input(gem, GreenSapphire).output(nugget, Aluminium, 3).output(dustTiny, DarkAsh).blastFurnaceTemp(1200).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(400).EUt(100).input(dust, Sapphire).output(nugget, Aluminium, 3).blastFurnaceTemp(1200).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(320).EUt(100).input(gem, Sapphire).output(nugget, Aluminium, 3).blastFurnaceTemp(1200).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(800).EUt(500).input(dust, Ilmenite, 5).outputs(OreDictUnifier.get(ingot, WroughtIron), OreDictUnifier.get(dust, Rutile, 3)).blastFurnaceTemp(1700).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(800).EUt(480).input(dust, Magnesium, 2).fluidInputs(TitaniumTetrachloride.getFluid(1000)).outputs(OreDictUnifier.get(OrePrefix.ingotHot, Materials.Titanium), OreDictUnifier.get(OrePrefix.dust, Materials.MagnesiumChloride, 6)).blastFurnaceTemp(Materials.Titanium.blastFurnaceTemperature + 200).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(400).EUt(500).input(dust, Galena).fluidInputs(Oxygen.getFluid(2000)).outputs(OreDictUnifier.get(nugget, Silver, 4), OreDictUnifier.get(OrePrefix.nugget, Materials.Lead, 4)).blastFurnaceTemp(1500).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(400).EUt(500).input(dust, Magnetite).fluidInputs(Oxygen.getFluid(2000)).outputs(OreDictUnifier.get(nugget, WroughtIron, 4), OreDictUnifier.get(dustSmall, DarkAsh)).blastFurnaceTemp(1000).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(500).EUt(120).input(ingot, Iron).fluidInputs(Oxygen.getFluid(1000)).outputs(OreDictUnifier.get(ingot, Steel), OreDictUnifier.get(OrePrefix.dustSmall, Materials.DarkAsh)).blastFurnaceTemp(1000).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(100).EUt(120).input(ingot, PigIron).fluidInputs(Oxygen.getFluid(1000)).output(ingot, Steel).output(dustSmall, DarkAsh).blastFurnaceTemp(1000).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(100).EUt(120).input(ingot, WroughtIron).fluidInputs(Oxygen.getFluid(1000)).output(ingot, Steel).output(dustSmall, DarkAsh).blastFurnaceTemp(1000).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(500).EUt(120).input(dust, Copper).fluidInputs(Oxygen.getFluid(1000)).output(ingot, AnnealedCopper).blastFurnaceTemp(1200).notConsumable(new IntCircuitIngredient(1)).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(500).EUt(120).input(ingot, Iron).fluidInputs(Oxygen.getFluid(1000)).output(ingot, Steel).output(dustTiny, Ash).blastFurnaceTemp(1000).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(100).EUt(120).input(ingot, PigIron).fluidInputs(Oxygen.getFluid(1000)).output(ingot, Steel).output(dustTiny, Ash).blastFurnaceTemp(1000).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(100).EUt(120).input(ingot, WroughtIron).fluidInputs(Oxygen.getFluid(1000)).output(ingot, Steel).output(dustTiny, Ash).blastFurnaceTemp(1000).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(200).EUt(120).input(dust, Copper).fluidInputs(Oxygen.getFluid(1000)).output(ingot, AnnealedCopper).blastFurnaceTemp(1200).notConsumable(new IntCircuitIngredient(1)).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(500).EUt(120).input(ingot, Copper).fluidInputs(Oxygen.getFluid(1000)).output(ingot, AnnealedCopper).blastFurnaceTemp(1200).notConsumable(new IntCircuitIngredient(1)).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(500).EUt(1920).input(ingot, Iridium, 3).input(ingot, Osmium).fluidInputs(Helium.getFluid(1000)).output(ingotHot, Osmiridium, 4).blastFurnaceTemp(2900).buildAndRegister();
BLAST_RECIPES.recipeBuilder().duration(500).EUt(30720).input(ingot, Naquadah).input(ingot, Osmiridium).fluidInputs(Argon.getFluid(1000)).output(ingotHot, NaquadahAlloy, 2).blastFurnaceTemp(NaquadahAlloy.blastFurnaceTemperature).buildAndRegister();

registerBlastFurnaceMetallurgyRecipes();
}

private static void registerBlastFurnaceMetallurgyRecipes() {
createSulfurDioxideRecipe(Stibnite, AntimonyTrioxide, 1500);
createSulfurDioxideRecipe(Sphalerite, Zincite, 1000);
createSulfurDioxideRecipe(Pyrite, BandedIron, 2000);
createSulfurDioxideRecipe(Pentlandite, Garnierite, 1000);

BLAST_RECIPES.recipeBuilder().duration(120).EUt(120).blastFurnaceTemp(1200)
.input(dust, Tetrahedrite)
.fluidInputs(Oxygen.getFluid(3000))
.output(dust, CupricOxide)
.output(dustTiny, AntimonyTrioxide, 3)
.fluidOutputs(SulfurDioxide.getFluid(2000))
.buildAndRegister();

BLAST_RECIPES.recipeBuilder().duration(120).EUt(120).blastFurnaceTemp(1200)
.input(dust, Cobaltite)
.fluidInputs(Oxygen.getFluid(3000))
.output(dust, CobaltOxide)
.output(dust, ArsenicTrioxide)
.fluidOutputs(SulfurDioxide.getFluid(1000))
.buildAndRegister();

BLAST_RECIPES.recipeBuilder().duration(120).EUt(120).blastFurnaceTemp(1200)
.input(dust, Galena)
.fluidInputs(Oxygen.getFluid(3000))
.output(dust, Massicot)
.output(nugget, Silver, 6)
.fluidOutputs(SulfurDioxide.getFluid(1000))
.buildAndRegister();

BLAST_RECIPES.recipeBuilder().duration(120).EUt(120).blastFurnaceTemp(1200)
.input(dust, Chalcopyrite)
.input(dust, SiliconDioxide)
.fluidInputs(Oxygen.getFluid(3000))
.output(dust, CupricOxide)
.output(dust, Ferrosilite)
.fluidOutputs(SulfurDioxide.getFluid(2000))
.buildAndRegister();

BLAST_RECIPES.recipeBuilder().duration(240).EUt(120).blastFurnaceTemp(1200)
.input(dust, SiliconDioxide)
.input(dust, Carbon, 2)
.output(ingot, Silicon)
.output(dustTiny, Ash)
.fluidOutputs(CarbonMonoxide.getFluid(2000))
.buildAndRegister();
}

private static void createSulfurDioxideRecipe(IMaterial<?> inputMaterial, IMaterial<?> outputMaterial, int sulfurDioxideAmount) {
BLAST_RECIPES.recipeBuilder().duration(120).EUt(120).blastFurnaceTemp(1200)
.input(dust, inputMaterial)
.fluidInputs(Oxygen.getFluid(3000))
.output(dust, outputMaterial)
.output(dustTiny, Ash)
.fluidOutputs(SulfurDioxide.getFluid(sulfurDioxideAmount))
.buildAndRegister();
}

private static void registerDecompositionRecipes() {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@ public static void init() {
.duration(400).EUt(30).buildAndRegister();

BLAST_RECIPES.recipeBuilder()
.input(dust, FerriteMixture, 6)
.fluidInputs(Oxygen.getFluid(8000))
.output(ingot, NickelZincFerrite, 14)
.input(dust, FerriteMixture)
.fluidInputs(Oxygen.getFluid(2000))
.output(ingot, NickelZincFerrite)
.blastFurnaceTemp(1500)
.duration(3200).EUt(120).buildAndRegister();
.duration(400).EUt(120).buildAndRegister();

FERMENTING_RECIPES.recipeBuilder()
.fluidInputs(Biomass.getFluid(100))
Expand Down

0 comments on commit 70a32f6

Please sign in to comment.