package com.hbm.inventory.recipes; import static com.hbm.inventory.OreDictManager.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import com.hbm.inventory.FluidStack; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.loader.GenericRecipe; import com.hbm.inventory.recipes.loader.GenericRecipes; import com.hbm.items.ItemEnums.EnumFuelAdditive; import com.hbm.items.ItemGenericPart.EnumPartType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; public class ChemicalPlantRecipes extends GenericRecipes { public static final ChemicalPlantRecipes INSTANCE = new ChemicalPlantRecipes(); @Override public int inputItemLimit() { return 3; } @Override public int inputFluidLimit() { return 3; } @Override public int outputItemLimit() { return 3; } @Override public int outputFluidLimit() { return 3; } @Override public String getFileName() { return "hbmChemicalPlant.json"; } @Override public GenericRecipe instantiateRecipe(String name) { return new GenericRecipe(name); } @Override public void registerDefaults() { /// REGULAR FLUIDS /// this.register(new GenericRecipe("chem.hydrogen").setupNamed(20, 400).setIcon(ModItems.gas_full, Fluids.HYDROGEN.getID()) .inputItems(new OreDictStack(COAL.gem(), 1)) .inputFluids(new FluidStack(Fluids.WATER, 8_000)) .outputFluids(new FluidStack(Fluids.HYDROGEN, 500))); this.register(new GenericRecipe("chem.hydrogencoke").setupNamed(20, 400).setIcon(ModItems.gas_full, Fluids.HYDROGEN.getID()) .inputItems(new OreDictStack(ANY_COKE.gem(), 1)) .inputFluids(new FluidStack(Fluids.WATER, 8_000)) .outputFluids(new FluidStack(Fluids.HYDROGEN, 500))); this.register(new GenericRecipe("chem.oxygen").setupNamed(20, 400).setIcon(ModItems.gas_full, Fluids.OXYGEN.getID()) .inputFluids(new FluidStack(Fluids.AIR, 8_000)) .outputFluids(new FluidStack(Fluids.OXYGEN, 500))); this.register(new GenericRecipe("chem.xenon").setupNamed(300, 1_000).setIcon(ModItems.gas_full, Fluids.XENON.getID()) .inputFluids(new FluidStack(Fluids.AIR, 16_000)) .outputFluids(new FluidStack(Fluids.XENON, 50))); this.register(new GenericRecipe("chem.xenonoxy").setupNamed(20, 1_000).setIcon(ModItems.gas_full, Fluids.XENON.getID()) .inputFluids(new FluidStack(Fluids.AIR, 8_000), new FluidStack(Fluids.OXYGEN, 250)) .outputFluids(new FluidStack(Fluids.XENON, 50))); this.register(new GenericRecipe("chem.helium3").setupNamed(200, 2_000).setIcon(ModItems.gas_full, Fluids.HELIUM3.getID()) .inputItems(new ComparableStack(ModBlocks.moon_turf, 8)) .outputFluids(new FluidStack(Fluids.HELIUM3, 1_000))); this.register(new GenericRecipe("chem.co2").setup(60, 100) .inputFluids(new FluidStack(Fluids.GAS, 1_000)) .outputFluids(new FluidStack(Fluids.CARBONDIOXIDE, 1_000))); this.register(new GenericRecipe("chem.perfluoromethyl").setup(20, 100) .inputItems(new OreDictStack(F.dust())) .inputFluids(new FluidStack(Fluids.PETROLEUM, 1_000), new FluidStack(Fluids.UNSATURATEDS, 500)) .outputFluids(new FluidStack(Fluids.PERFLUOROMETHYL, 1_000))); this.register(new GenericRecipe("chem.cccentrifuge").setup(200, 100) .inputFluids(new FluidStack(Fluids.CHLOROCALCITE_CLEANED, 500), new FluidStack(Fluids.SULFURIC_ACID, 8_000)) .outputFluids(new FluidStack(Fluids.POTASSIUM_CHLORIDE, 250), new FluidStack(Fluids.CALCIUM_CHLORIDE, 250))); /// OILS /// this.register(new GenericRecipe("chem.ethanol").setupNamed(50, 100).setIcon(ModItems.canister_full, Fluids.ETHANOL.getID()) .inputItems(new ComparableStack(Items.sugar, 10)) .outputFluids(new FluidStack(Fluids.ETHANOL, 1000))); this.register(new GenericRecipe("chem.biogas").setupNamed(60, 100).setIcon(ModItems.gas_full, Fluids.BIOGAS.getID()) .inputItems(new ComparableStack(ModItems.biomass, 16)) .inputFluids(new FluidStack(Fluids.AIR, 4_000)) .outputFluids(new FluidStack(Fluids.BIOGAS, 2_000))); this.register(new GenericRecipe("chem.biofuel").setupNamed(60, 100).setIcon(ModItems.canister_full, Fluids.BIOFUEL.getID()) .inputFluids(new FluidStack(Fluids.BIOGAS, 1_500), new FluidStack(Fluids.ETHANOL, 250)) .outputFluids(new FluidStack(Fluids.BIOFUEL, 1_000))); this.register(new GenericRecipe("chem.reoil").setupNamed(40, 100).setIcon(ModItems.canister_full, Fluids.RECLAIMED.getID()) .inputFluids(new FluidStack(Fluids.SMEAR, 1_000)) .outputFluids(new FluidStack(Fluids.RECLAIMED, 800))); this.register(new GenericRecipe("chem.gasoline").setupNamed(40, 100).setIcon(ModItems.canister_full, Fluids.GASOLINE.getID()) .inputFluids(new FluidStack(Fluids.NAPHTHA, 1000)) .outputFluids(new FluidStack(Fluids.GASOLINE, 800))); this.register(new GenericRecipe("chem.tarsand").setupNamed(200, 100).setIcon(ModBlocks.ore_oil_sand) .inputItems(new ComparableStack(ModBlocks.ore_oil_sand, 16), new OreDictStack(ANY_TAR.any(), 1)) .outputItems(new ItemStack(Blocks.sand, 16)) .outputFluids(new FluidStack(Fluids.BITUMEN, 1_000))); this.register(new GenericRecipe("chem.tel").setup(40, 100) .inputItems(new OreDictStack(ANY_TAR.any()), new OreDictStack(PB.dust())) .inputFluids(new FluidStack(Fluids.PETROLEUM, 100), new FluidStack(Fluids.STEAM, 1000)) .outputItems(DictFrame.fromOne(ModItems.fuel_additive, EnumFuelAdditive.ANTIKNOCK))); this.register(new GenericRecipe("chem.deicer").setup(40, 100) .inputFluids(new FluidStack(Fluids.GAS, 100), new FluidStack(Fluids.HYDROGEN, 50)) .outputItems(DictFrame.fromOne(ModItems.fuel_additive, EnumFuelAdditive.DEICER))); /// THE CONC AND ASPHALE /// this.register(new GenericRecipe("chem.concrete").setup(100, 100) .inputItems(new ComparableStack(ModItems.powder_cement, 1), new ComparableStack(Blocks.gravel, 8), new OreDictStack(KEY_SAND, 8)) .inputFluids(new FluidStack(Fluids.WATER, 2_000)) .outputItems(new ItemStack(ModBlocks.concrete_smooth, 16))); this.register(new GenericRecipe("chem.concreteasbestos").setup(100, 100) .inputItems(new ComparableStack(ModItems.powder_cement, 4), new OreDictStack(ASBESTOS.ingot(), (GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) ? 1 : 4), new OreDictStack(KEY_SAND, 8)) .inputFluids(new FluidStack(Fluids.WATER, 2_000)) .outputItems(new ItemStack(ModBlocks.concrete_asbestos, 16))); this.register(new GenericRecipe("chem.ducrete").setup(150, 100) .inputItems(new ComparableStack(ModItems.powder_cement, 4), new OreDictStack(FERRO.ingot()), new OreDictStack(KEY_SAND, 8)) .inputFluids(new FluidStack(Fluids.WATER, 2_000)) .outputItems(new ItemStack(ModBlocks.ducrete_smooth, 8))); this.register(new GenericRecipe("chem.asphalt").setup(100, 100) .inputItems(new ComparableStack(Blocks.gravel, 2), new OreDictStack(KEY_SAND, 6)) .inputFluids(new FluidStack(Fluids.BITUMEN, 1_000)) .outputItems(new ItemStack(ModBlocks.asphalt, 16))); /// SOLIDS /// this.register(new GenericRecipe("chem.desh").setup(100, 100) .inputItems(new ComparableStack(ModItems.powder_desh_mix)) .inputFluids((GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) ? new FluidStack[] {new FluidStack(Fluids.LIGHTOIL, 200)} : new FluidStack[] {new FluidStack(Fluids.LIGHTOIL, 200), new FluidStack(Fluids.MERCURY, 200)}) .outputItems(new ItemStack(ModItems.ingot_desh))); this.register(new GenericRecipe("chem.polymer").setup(100, 100) .inputItems(new OreDictStack(COAL.dust(), 2), new OreDictStack(F.dust())) .inputFluids(new FluidStack(Fluids.PETROLEUM, 500, GeneralConfig.enable528 ? 1 : 0)) .outputItems(new ItemStack(ModItems.ingot_polymer))); this.register(new GenericRecipe("chem.bakelite").setup(100, 100) .inputFluids(new FluidStack(Fluids.AROMATICS, 500, GeneralConfig.enable528 ? 1 : 0), new FluidStack(Fluids.PETROLEUM, 500, GeneralConfig.enable528 ? 1 : 0)) .outputItems(new ItemStack(ModItems.ingot_bakelite))); this.register(new GenericRecipe("chem.rubber").setup(100, 200) .inputItems(new OreDictStack(S.dust())) .inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500, GeneralConfig.enable528 ? 2 : 0)) .outputItems(new ItemStack(ModItems.ingot_rubber))); this.register(new GenericRecipe("chem.hardplastic").setup(100, 1_000) .inputFluids(new FluidStack(Fluids.XYLENE, 500, GeneralConfig.enable528 ? 2 : 0), new FluidStack(Fluids.PHOSGENE, 500, GeneralConfig.enable528 ? 2 : 0)) .outputItems(new ItemStack(ModItems.ingot_pc))); this.register(new GenericRecipe("chem.pvc").setup(100, 1_000) .inputItems(new OreDictStack(CD.dust())) .inputFluids(new FluidStack(Fluids.UNSATURATEDS, 250, GeneralConfig.enable528 ? 2 : 0), new FluidStack(Fluids.CHLORINE, 250, GeneralConfig.enable528 ? 2 : 0)) .outputItems(new ItemStack(ModItems.ingot_pvc, 2))); this.register(new GenericRecipe("chem.kevlar").setup(60, 300) .inputFluids(new FluidStack(Fluids.AROMATICS, 200), new FluidStack(Fluids.NITRIC_ACID, 100), new FluidStack(GeneralConfig.enable528 ? Fluids.PHOSGENE : Fluids.CHLORINE, 100)) .outputItems(new ItemStack(ModItems.plate_kevlar, 4))); this.register(new GenericRecipe("chem.meth").setup(60, 300) .inputItems(new ComparableStack(Items.wheat), new ComparableStack(Items.dye, 2, 3)) .inputFluids(new FluidStack(Fluids.LUBRICANT, 400), new FluidStack(Fluids.PEROXIDE, 500)) .outputItems(new ItemStack(ModItems.chocolate, 4))); this.register(new GenericRecipe("chem.epearl").setup(100, 300) .inputItems(new OreDictStack(DIAMOND.dust(), 1)) .inputFluids(new FluidStack(Fluids.XPJUICE, 500)) .outputFluids(new FluidStack(Fluids.ENDERJUICE, 100))); this.register(new GenericRecipe("chem.meatprocessing").setupNamed(200, 200).setIcon(ModItems.glyphid_meat) .inputItems(new OreDictStack(KEY_GLYPHID_MEAT, 3)) .inputFluids(new FluidStack(Fluids.WATER, 1_000)) .outputItems(new ItemStack(ModItems.sulfur, 4), new ItemStack(ModItems.niter, 3)) .outputFluids(new FluidStack(Fluids.SALIENT, 250))); this.register(new GenericRecipe("chem.rustysteel").setup(40, 100) .inputItems(new ComparableStack(ModBlocks.deco_steel, 8)) .inputFluids(new FluidStack(Fluids.WATER, 1000)) .outputItems(new ItemStack(ModBlocks.deco_rusty_steel, 8))); /// ACIDS /// this.register(new GenericRecipe("chem.peroxide").setup(50, 100) .inputFluids(new FluidStack(Fluids.WATER, 1_000)) .outputFluids(new FluidStack(Fluids.PEROXIDE, 1_000))); this.register(new GenericRecipe("chem.sulfuricacid").setup(50, 100) .inputItems(new OreDictStack(S.dust())) .inputFluids(new FluidStack(Fluids.PEROXIDE, 1_000), new FluidStack(Fluids.WATER, 1_000)) .outputFluids(new FluidStack(Fluids.SULFURIC_ACID, 2_000))); this.register(new GenericRecipe("chem.nitricacid").setup(50, 100) .inputItems(new OreDictStack(KNO.dust())) .inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 500)) .outputFluids(new FluidStack(Fluids.NITRIC_ACID, 1_000))); this.register(new GenericRecipe("chem.birkeland").setupNamed(200, 5_000) .inputFluids(new FluidStack(Fluids.AIR, 8_000), new FluidStack(Fluids.WATER, 2_000)) .outputFluids(new FluidStack(Fluids.NITRIC_ACID, 1_000))); this.register(new GenericRecipe("chem.schrabidic").setup(100, 5_000) .inputItems(new ComparableStack(ModItems.pellet_charged)) .inputFluids(new FluidStack(Fluids.SAS3, 8000), new FluidStack(Fluids.PEROXIDE, 6000)) .outputFluids(new FluidStack(Fluids.SCHRABIDIC, 16000))); this.register(new GenericRecipe("chem.schrabidate").setup(150, 5_000) .inputItems(new OreDictStack(IRON.dust())) .inputFluids(new FluidStack(Fluids.SCHRABIDIC, 250)) .outputItems(new ItemStack(ModItems.powder_schrabidate))); /// COLTAN /// this.register(new GenericRecipe("chem.coltancleaning").setup(60, 100) .inputItems(new OreDictStack(COLTAN.dust(), 2), new OreDictStack(COAL.dust())) .inputFluids(new FluidStack(Fluids.PEROXIDE, 250), new FluidStack(Fluids.HYDROGEN, 500)) .outputItems(new ItemStack(ModItems.powder_coltan), new ItemStack(ModItems.powder_niobium), new ItemStack(ModItems.dust)) .outputFluids(new FluidStack(Fluids.WATER, 500))); this.register(new GenericRecipe("chem.coltanpain").setup(120, 100) .inputItems(new ComparableStack(ModItems.powder_coltan), new OreDictStack(F.dust())) .inputFluids(new FluidStack(Fluids.GAS, 1000), new FluidStack(Fluids.OXYGEN, 500)) .outputFluids(new FluidStack(Fluids.PAIN, 1000))); this.register(new GenericRecipe("chem.coltancrystal").setup(80, 100) .inputFluids(new FluidStack(Fluids.PAIN, 1000), new FluidStack(Fluids.PEROXIDE, 500)) .outputItems(new ItemStack(ModItems.gem_tantalium), new ItemStack(ModItems.dust, 3)) .outputFluids(new FluidStack(Fluids.WATER, 250))); /// EXPLOSIVES /// this.register(new GenericRecipe("chem.cordite").setup(40, 100) .inputItems(new OreDictStack(KNO.dust(), 2), new ComparableStack(ModItems.powder_sawdust, 2)) .inputFluids((GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) ? new FluidStack(Fluids.HEATINGOIL, 200) : new FluidStack(Fluids.GAS, 200)) .outputItems(new ItemStack(ModItems.cordite, 4))); this.register(new GenericRecipe("chem.rocketfuel").setup(200, 100) .inputItems(new ComparableStack(ModItems.solid_fuel, 2)) .inputFluids(new FluidStack(Fluids.PETROLEUM, 200, GeneralConfig.enable528 ? 1 : 0), new FluidStack(Fluids.NITRIC_ACID, 100)) .outputItems(new ItemStack(ModItems.rocket_fuel, 4))); this.register(new GenericRecipe("chem.dynamite").setup(50, 100) .inputItems(new ComparableStack(Items.sugar), new OreDictStack(KNO.dust()), new OreDictStack(KEY_SAND)) .outputItems(new ItemStack(ModItems.ball_dynamite, 2))); this.register(new GenericRecipe("chem.tnt").setup(100, 1_000) .inputItems(new OreDictStack(KNO.dust())) .inputFluids(new FluidStack(Fluids.AROMATICS, 500, GeneralConfig.enable528 ? 1 : 0)) .outputItems(new ItemStack(ModItems.ball_tnt, 4))); this.register(new GenericRecipe("chem.tatb").setup(50, 5_000) .inputItems(new ComparableStack(ModItems.ball_tnt)) .inputFluids(new FluidStack(Fluids.SOURGAS, 200, 1), new FluidStack(Fluids.NITRIC_ACID, 10)) .outputItems(new ItemStack(ModItems.ball_tatb))); this.register(new GenericRecipe("chem.c4").setup(100, 1_000) .inputItems(new OreDictStack(KNO.dust())) .inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500, GeneralConfig.enable528 ? 1 : 0)) .outputItems(new ItemStack(ModItems.ingot_c4, 4))); /// GLASS /// this.register(new GenericRecipe("chem.laminate").setup(20, 100) .inputFluids(new FluidStack(Fluids.XYLENE, 50), new FluidStack(Fluids.PHOSGENE, 50)) .inputItems(new OreDictStack(KEY_ANYGLASS), new OreDictStack(STEEL.bolt(), 4)) .outputItems(new ItemStack(ModBlocks.reinforced_laminate))); this.register(new GenericRecipe("chem.polarized").setup(100, 500) .inputFluids(new FluidStack(Fluids.PETROLEUM, 1_000)) .inputItems(new OreDictStack(KEY_ANYPANE)) .outputItems(DictFrame.fromOne(ModItems.part_generic, EnumPartType.GLASS_POLARIZED, 16))); /// NUCLEAR PROCESSING /// this.register(new GenericRecipe("chem.yellowcake").setup(250, 500) .inputItems(new OreDictStack(U.billet(), 2), new OreDictStack(S.dust(), 2)) .inputFluids(new FluidStack(Fluids.PEROXIDE, 500)) .outputItems(new ItemStack(ModItems.powder_yellowcake))); this.register(new GenericRecipe("chem.uf6").setup(100, 500).setIcon(ModItems.fluid_icon, Fluids.UF6.getID()) .inputItems(new ComparableStack(ModItems.powder_yellowcake), new OreDictStack(F.dust(), 4)) .inputFluids(new FluidStack(Fluids.WATER, 1_000)) .outputItems(new ItemStack(ModItems.sulfur, 2)) .outputFluids(new FluidStack(Fluids.UF6, 1_200))); this.register(new GenericRecipe("chem.puf6").setup(200, 500) .inputItems(new OreDictStack(PU.dust()), new OreDictStack(F.dust(), 3)) .inputFluids(new FluidStack(Fluids.WATER, 1_000)) .outputFluids(new FluidStack(Fluids.PUF6, 900))); this.register(new GenericRecipe("chem.sas3").setup(200, 5_000) .inputItems(new OreDictStack(SA326.dust()), new OreDictStack(S.dust(), 2)) .inputFluids(new FluidStack(Fluids.PEROXIDE, 2_000)) .outputFluids(new FluidStack(Fluids.SAS3, 1_000))); this.register(new GenericRecipe("chem.balefire").setup(100, 10_000).setIcon(ModItems.fluid_icon, Fluids.BALEFIRE.getID()) .inputItems(new ComparableStack(ModItems.egg_balefire_shard)) .inputFluids(new FluidStack(Fluids.KEROSENE, 6_000)) .outputItems(new ItemStack(ModItems.powder_balefire)) .outputFluids(new FluidStack(Fluids.BALEFIRE, 8_000))); this.register(new GenericRecipe("chem.thoriumsalt").setup(100, 10_000).setIcon(ModItems.fluid_icon, Fluids.THORIUM_SALT.getID()) .inputFluids(new FluidStack(Fluids.THORIUM_SALT_DEPLETED, 16_000)) .inputItems(new OreDictStack(TH232.nugget(), 2)) .outputFluids(new FluidStack(Fluids.THORIUM_SALT, 16_000)) .outputItems( new ChanceOutput(new ItemStack(ModItems.nugget_u233, 1), 0.5F), new ChanceOutput(new ItemStack(ModItems.nuclear_waste_tiny, 1), 0.25F))); /// VITRIFICATION /// this.register(new GenericRecipe("chem.vitliquid").setup(100, 1_000) .inputItems(new ComparableStack(ModBlocks.sand_lead)) .inputFluids(new FluidStack(Fluids.WASTEFLUID, 1_000)) .outputItems(new ItemStack(ModItems.nuclear_waste_vitrified))); this.register(new GenericRecipe("chem.vitgaseous").setup(100, 1_000) .inputItems(new ComparableStack(ModBlocks.sand_lead)) .inputFluids(new FluidStack(Fluids.WASTEGAS, 1_000)) .outputItems(new ItemStack(ModItems.nuclear_waste_vitrified))); this.register(new GenericRecipe("chem.vitsolid").setup(300, 1_000) .inputItems(new ComparableStack(ModBlocks.sand_lead), new ComparableStack(ModItems.nuclear_waste, 4)) .outputItems(new ItemStack(ModItems.nuclear_waste_vitrified, 4))); /// OSMIRIDIUM /// this.register(new GenericRecipe("chem.osmiridiumdeath").setup(240, 1_000) .inputItems(new ComparableStack(ModItems.powder_paleogenite), new OreDictStack(F.dust(), 8), new ComparableStack(ModItems.nugget_bismuth, 4)) .inputFluids(new FluidStack(Fluids.PEROXIDE, 1_000, 5)) .outputFluids(new FluidStack(Fluids.DEATH, 1_000, 0))); } public static HashMap getRecipes() { HashMap recipes = new HashMap(); for(GenericRecipe recipe : INSTANCE.recipeOrderedList) { List input = new ArrayList(); if(recipe.inputItem != null) for(AStack stack : recipe.inputItem) input.add(stack); if(recipe.inputFluid != null) for(FluidStack stack : recipe.inputFluid) input.add(ItemFluidIcon.make(stack)); List output = new ArrayList(); if(recipe.outputItem != null) for(IOutput stack : recipe.outputItem) output.add(stack.getAllPossibilities()); if(recipe.outputFluid != null) for(FluidStack stack : recipe.outputFluid) output.add(ItemFluidIcon.make(stack)); recipes.put(input.toArray(), output.toArray()); } return recipes; } }