mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
539 lines
23 KiB
Java
539 lines
23 KiB
Java
package com.hbm.inventory.recipes;
|
|
|
|
import java.io.IOException;
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
|
|
import com.google.gson.JsonArray;
|
|
import com.google.gson.JsonElement;
|
|
import com.google.gson.JsonObject;
|
|
import com.google.gson.stream.JsonWriter;
|
|
import com.hbm.blocks.ModBlocks;
|
|
import com.hbm.config.GeneralConfig;
|
|
import com.hbm.inventory.FluidStack;
|
|
import static com.hbm.inventory.OreDictManager.*;
|
|
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.SerializableRecipe;
|
|
import com.hbm.items.ModItems;
|
|
import com.hbm.main.MainRegistry;
|
|
|
|
import net.minecraft.init.Blocks;
|
|
import net.minecraft.init.Items;
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
public class ChemplantRecipes extends SerializableRecipe {
|
|
|
|
/**
|
|
* Nice order: The order in which the ChemRecipe are added to the recipes list
|
|
* Meta order: Fixed using the id param, saved in indexMapping
|
|
*/
|
|
|
|
public static HashMap<Integer, ChemRecipe> indexMapping = new HashMap();
|
|
public static List<ChemRecipe> recipes = new ArrayList();
|
|
|
|
@Override
|
|
public void registerDefaults() {
|
|
|
|
//6-30, formerly oil cracking, coal liquefaction and solidifciation
|
|
registerOtherOil();
|
|
|
|
recipes.add(new ChemRecipe(36, "COOLANT", 50)
|
|
.inputItems(new OreDictStack(KNO.dust()))
|
|
.inputFluids(new FluidStack(Fluids.WATER, 1800))
|
|
.outputFluids(new FluidStack(Fluids.COOLANT, 2000)));
|
|
recipes.add(new ChemRecipe(37, "CRYOGEL", 50)
|
|
.inputItems(new ComparableStack(ModItems.powder_ice))
|
|
.inputFluids(new FluidStack(Fluids.COOLANT, 1800))
|
|
.outputFluids(new FluidStack(Fluids.CRYOGEL, 2000)));
|
|
recipes.add(new ChemRecipe(38, "DESH", 300)
|
|
.inputItems(new ComparableStack(ModItems.powder_desh_mix))
|
|
.inputFluids(
|
|
(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) ?
|
|
new FluidStack[] {new FluidStack(Fluids.LIGHTOIL, 200)} :
|
|
new FluidStack[] {new FluidStack(Fluids.MERCURY, 200), new FluidStack(Fluids.LIGHTOIL, 200)})
|
|
.outputItems(new ItemStack(ModItems.ingot_desh)));
|
|
recipes.add(new ChemRecipe(39, "NITAN", 50)
|
|
.inputItems(new ComparableStack(ModItems.powder_nitan_mix))
|
|
.inputFluids(
|
|
new FluidStack(Fluids.KEROSENE, 600),
|
|
new FluidStack(Fluids.MERCURY, 200))
|
|
.outputFluids(new FluidStack(Fluids.NITAN, 1000)));
|
|
recipes.add(new ChemRecipe(40, "PEROXIDE", 50)
|
|
.inputFluids(new FluidStack(Fluids.WATER, 1000))
|
|
.outputFluids(new FluidStack(Fluids.PEROXIDE, 800)));
|
|
recipes.add(new ChemRecipe(90, "SULFURIC_ACID", 50)
|
|
.inputItems(new OreDictStack(S.dust()))
|
|
.inputFluids(
|
|
new FluidStack(Fluids.PEROXIDE, 800),
|
|
new FluidStack(Fluids.WATER, 1_000))
|
|
.outputFluids(new FluidStack(Fluids.SULFURIC_ACID, 2_000)));
|
|
recipes.add(new ChemRecipe(92, "NITRIC_ACID", 50)
|
|
.inputItems(new OreDictStack(KNO.dust()))
|
|
.inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 500))
|
|
.outputFluids(new FluidStack(Fluids.NITRIC_ACID, 1_000)));
|
|
recipes.add(new ChemRecipe(93, "SOLVENT", 50)
|
|
.inputFluids(new FluidStack(Fluids.NAPHTHA, 500), new FluidStack(Fluids.AROMATICS, 500))
|
|
.outputFluids(new FluidStack(Fluids.SOLVENT, 1000)));
|
|
recipes.add(new ChemRecipe(43, "POLYMER", 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)));
|
|
recipes.add(new ChemRecipe(81, "BAKELITE", 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)));
|
|
recipes.add(new ChemRecipe(82, "RUBBER", 100)
|
|
.inputItems(new OreDictStack(S.dust()))
|
|
.inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500, GeneralConfig.enable528 ? 2 : 0))
|
|
.outputItems(new ItemStack(ModItems.ingot_rubber)));
|
|
/*recipes.add(new ChemRecipe(94, "PET", 100)
|
|
.inputItems(new OreDictStack(AL.dust()))
|
|
.inputFluids(
|
|
new FluidStack(Fluids.XYLENE, 500),
|
|
new FluidStack(Fluids.OXYGEN, 100))
|
|
.outputItems(new ItemStack(ModItems.ingot_pet)));*/
|
|
|
|
//Laminate Glass going here
|
|
recipes.add(new ChemRecipe(97, "LAMINATE", 100)
|
|
.inputFluids(
|
|
new FluidStack(Fluids.XYLENE, 250),
|
|
new FluidStack(Fluids.PHOSGENE, 250))
|
|
.inputItems(
|
|
new ComparableStack(ModBlocks.reinforced_glass),
|
|
new OreDictStack(STEEL.bolt(), 4))
|
|
.outputItems(new ItemStack(com.hbm.blocks.ModBlocks.reinforced_laminate)));
|
|
recipes.add(new ChemRecipe(94, "PC", 100)
|
|
.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)));
|
|
recipes.add(new ChemRecipe(96, "PVC", 100)
|
|
.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)));
|
|
recipes.add(new ChemRecipe(89, "DYNAMITE", 50)
|
|
.inputItems(
|
|
new ComparableStack(Items.sugar),
|
|
new OreDictStack(KNO.dust()),
|
|
new OreDictStack("sand"))
|
|
.outputItems(new ItemStack(ModItems.ball_dynamite, 2)));
|
|
recipes.add(new ChemRecipe(83, "TNT", 150)
|
|
.inputItems(new OreDictStack(KNO.dust()))
|
|
.inputFluids(new FluidStack(Fluids.AROMATICS, 500, GeneralConfig.enable528 ? 1 : 0))
|
|
.outputItems(new ItemStack(ModItems.ball_tnt, 4)));
|
|
recipes.add(new ChemRecipe(95, "TATB", 50)
|
|
.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)));
|
|
recipes.add(new ChemRecipe(84, "C4", 150)
|
|
.inputItems(new OreDictStack(KNO.dust()))
|
|
.inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500, GeneralConfig.enable528 ? 1 : 0))
|
|
.outputItems(new ItemStack(ModItems.ingot_c4, 4)));
|
|
//44, formerly deuterium
|
|
//45, formerly steam
|
|
recipes.add(new ChemRecipe(46, "YELLOWCAKE", 250)
|
|
.inputItems(
|
|
new OreDictStack(U.billet(), 2), //12 nuggets: the numbers do match up :)
|
|
new OreDictStack(S.dust(), 2))
|
|
.inputFluids(new FluidStack(Fluids.PEROXIDE, 500))
|
|
.outputItems(new ItemStack(ModItems.powder_yellowcake)));
|
|
recipes.add(new ChemRecipe(47, "UF6", 100)
|
|
.inputItems(
|
|
new ComparableStack(ModItems.powder_yellowcake),
|
|
new OreDictStack(F.dust(), 4))
|
|
.inputFluids(new FluidStack(Fluids.WATER, 1000))
|
|
.outputItems(new ItemStack(ModItems.sulfur, 2))
|
|
.outputFluids(new FluidStack(Fluids.UF6, 1200)));
|
|
recipes.add(new ChemRecipe(48, "PUF6", 150)
|
|
.inputItems(
|
|
new OreDictStack(PU.dust()),
|
|
new OreDictStack(F.dust(), 3))
|
|
.inputFluids(new FluidStack(Fluids.WATER, 1000))
|
|
.outputFluids(new FluidStack(Fluids.PUF6, 900)));
|
|
recipes.add(new ChemRecipe(49, "SAS3", 200)
|
|
.inputItems(
|
|
new OreDictStack(SA326.dust()),
|
|
new OreDictStack(S.dust(), 2))
|
|
.inputFluids(new FluidStack(Fluids.PEROXIDE, 2000))
|
|
.outputFluids(new FluidStack(Fluids.SAS3, 1000)));
|
|
recipes.add(new ChemRecipe(53, "CORDITE", 40)
|
|
.inputItems(
|
|
new OreDictStack(KNO.dust(), 2),
|
|
new OreDictStack(KEY_PLANKS),
|
|
new ComparableStack(Items.sugar))
|
|
.inputFluids(
|
|
(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) ?
|
|
new FluidStack(Fluids.HEATINGOIL, 200) :
|
|
new FluidStack(Fluids.GAS, 200))
|
|
.outputItems(new ItemStack(ModItems.cordite, 4)));
|
|
recipes.add(new ChemRecipe(54, "KEVLAR", 40)
|
|
.inputItems(
|
|
new OreDictStack(KNO.dust(), 2),
|
|
new ComparableStack(Items.brick),
|
|
new OreDictStack(COAL.dust()))
|
|
.inputFluids(new FluidStack(Fluids.PETROLEUM, 100))
|
|
.outputItems(new ItemStack(ModItems.plate_kevlar, 4)));
|
|
recipes.add(new ChemRecipe(55, "CONCRETE", 100)
|
|
.inputItems(
|
|
new ComparableStack(ModItems.powder_cement, 1),
|
|
new ComparableStack(Blocks.gravel, 8),
|
|
new OreDictStack(KEY_SAND, 8))
|
|
.inputFluids(new FluidStack(Fluids.WATER, 2000))
|
|
.outputItems(new ItemStack(ModBlocks.concrete_smooth, 16)));
|
|
recipes.add(new ChemRecipe(56, "CONCRETE_ASBESTOS", 100)
|
|
.inputItems(
|
|
new ComparableStack(ModItems.powder_cement, 1),
|
|
new ComparableStack(Blocks.gravel, 2),
|
|
new OreDictStack(KEY_SAND, 2),
|
|
(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) ?
|
|
new OreDictStack(ASBESTOS.ingot(), 1) :
|
|
new OreDictStack(ASBESTOS.ingot(), 4))
|
|
.inputFluids(new FluidStack(Fluids.WATER, 2000))
|
|
.outputItems(new ItemStack(ModBlocks.concrete_asbestos, 16)));
|
|
recipes.add(new ChemRecipe(79, "DUCRETE", 150)
|
|
.inputItems(
|
|
new ComparableStack(ModItems.powder_cement, 4),
|
|
new ComparableStack(Blocks.gravel, 2),
|
|
new OreDictStack(KEY_SAND, 8),
|
|
new OreDictStack(U238.billet(), 2))
|
|
.inputFluids(new FluidStack(Fluids.WATER, 2000))
|
|
.outputItems(new ItemStack(ModBlocks.ducrete_smooth, 8)));
|
|
recipes.add(new ChemRecipe(57, "SOLID_FUEL", 200)
|
|
.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)));
|
|
recipes.add(new ChemRecipe(58, "ELECTROLYSIS", 150)
|
|
.inputFluids(new FluidStack(Fluids.WATER, 4000))
|
|
.outputFluids(
|
|
new FluidStack(Fluids.HYDROGEN, 400),
|
|
new FluidStack(Fluids.OXYGEN, 400)));
|
|
recipes.add(new ChemRecipe(59, "XENON", 300)
|
|
.inputFluids(new FluidStack(Fluids.NONE, 0))
|
|
.outputFluids(new FluidStack(Fluids.XENON, 50)));
|
|
recipes.add(new ChemRecipe(60, "XENON_OXY", 20)
|
|
.inputFluids(new FluidStack(Fluids.OXYGEN, 250))
|
|
.outputFluids(new FluidStack(Fluids.XENON, 50)));
|
|
recipes.add(new ChemRecipe(62, "BALEFIRE", 100)
|
|
.inputItems(new ComparableStack(ModItems.egg_balefire_shard))
|
|
.inputFluids(new FluidStack(Fluids.KEROSENE, 6000))
|
|
.outputItems(new ItemStack(ModItems.powder_balefire))
|
|
.outputFluids(new FluidStack(Fluids.BALEFIRE, 8000)));
|
|
recipes.add(new ChemRecipe(63, "SCHRABIDIC", 100)
|
|
.inputItems(new ComparableStack(ModItems.pellet_charged))
|
|
.inputFluids(
|
|
new FluidStack(Fluids.SAS3, 8000),
|
|
new FluidStack(Fluids.PEROXIDE, 6000))
|
|
.outputFluids(new FluidStack(Fluids.SCHRABIDIC, 16000)));
|
|
recipes.add(new ChemRecipe(64, "SCHRABIDATE", 150)
|
|
.inputItems(new OreDictStack(IRON.dust()))
|
|
.inputFluids(new FluidStack(Fluids.SCHRABIDIC, 250))
|
|
.outputItems(new ItemStack(ModItems.powder_schrabidate)));
|
|
recipes.add(new ChemRecipe(65, "COLTAN_CLEANING", 60)
|
|
.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)));
|
|
recipes.add(new ChemRecipe(66, "COLTAN_PAIN", 120)
|
|
.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)));
|
|
recipes.add(new ChemRecipe(67, "COLTAN_CRYSTAL", 80)
|
|
.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)));
|
|
recipes.add(new ChemRecipe(68, "VIT_LIQUID", 100)
|
|
.inputItems(new ComparableStack(ModBlocks.sand_lead))
|
|
.inputFluids(new FluidStack(Fluids.WASTEFLUID, 1000))
|
|
.outputItems(new ItemStack(ModItems.nuclear_waste_vitrified)));
|
|
recipes.add(new ChemRecipe(69, "VIT_GAS", 100)
|
|
.inputItems(new ComparableStack(ModBlocks.sand_lead))
|
|
.inputFluids(new FluidStack(Fluids.WASTEGAS, 1000))
|
|
.outputItems(new ItemStack(ModItems.nuclear_waste_vitrified)));
|
|
recipes.add(new ChemRecipe(88, "LUBRICANT", 20)
|
|
.inputFluids(
|
|
new FluidStack(Fluids.HEATINGOIL, 500),
|
|
new FluidStack(Fluids.UNSATURATEDS, 500))
|
|
.outputFluids(new FluidStack(Fluids.LUBRICANT, 1000)));
|
|
recipes.add(new ChemRecipe(70, "TEL", 40)
|
|
.inputItems(
|
|
new OreDictStack(ANY_TAR.any()),
|
|
new OreDictStack(PB.dust()))
|
|
.inputFluids(
|
|
new FluidStack(Fluids.PETROLEUM, 100),
|
|
new FluidStack(Fluids.STEAM, 1000))
|
|
.outputItems(new ItemStack(ModItems.fuel_additive)));
|
|
recipes.add(new ChemRecipe(4, "FR_REOIL", 30)
|
|
.inputFluids(new FluidStack(1000, Fluids.SMEAR))
|
|
.outputFluids(new FluidStack(800, Fluids.RECLAIMED)));
|
|
recipes.add(new ChemRecipe(5, "FR_PETROIL", 30)
|
|
.inputFluids(
|
|
new FluidStack(800, Fluids.RECLAIMED),
|
|
new FluidStack(200, Fluids.LUBRICANT))
|
|
.outputFluids(new FluidStack(1000, Fluids.PETROIL)));
|
|
recipes.add(new ChemRecipe(86, "PETROIL_LEADED", 40)
|
|
.inputItems(new ComparableStack(ModItems.fuel_additive))
|
|
.inputFluids(new FluidStack(Fluids.PETROIL, 10_000))
|
|
.outputFluids(new FluidStack(Fluids.PETROIL_LEADED, 12_000)));
|
|
recipes.add(new ChemRecipe(71, "GASOLINE", 40)
|
|
.inputFluids(new FluidStack(Fluids.NAPHTHA, 1000))
|
|
.outputFluids(new FluidStack(Fluids.GASOLINE, 800)));
|
|
recipes.add(new ChemRecipe(85, "GASOLINE_LEADED", 40)
|
|
.inputItems(new ComparableStack(ModItems.fuel_additive))
|
|
.inputFluids(new FluidStack(Fluids.GASOLINE, 10_000))
|
|
.outputFluids(new FluidStack(Fluids.GASOLINE_LEADED, 12_000)));
|
|
recipes.add(new ChemRecipe(87, "COALGAS_LEADED", 40)
|
|
.inputItems(new ComparableStack(ModItems.fuel_additive))
|
|
.inputFluids(new FluidStack(Fluids.COALGAS, 10_000))
|
|
.outputFluids(new FluidStack(Fluids.COALGAS_LEADED, 12_000)));
|
|
recipes.add(new ChemRecipe(72, "FRACKSOL", 20)
|
|
.inputItems(new OreDictStack(S.dust()))
|
|
.inputFluids(
|
|
new FluidStack(Fluids.PETROLEUM, 100),
|
|
new FluidStack(Fluids.WATER, 1000))
|
|
.outputFluids(new FluidStack(Fluids.FRACKSOL, 1000)));
|
|
recipes.add(new ChemRecipe(73, "HELIUM3", 200)
|
|
.inputItems(new ComparableStack(ModBlocks.moon_turf, 8))
|
|
.outputFluids(new FluidStack(Fluids.HELIUM3, 1000)));
|
|
recipes.add(new ChemRecipe(74, "OSMIRIDIUM_DEATH", 240)
|
|
.inputItems(
|
|
new ComparableStack(ModItems.powder_paleogenite),
|
|
new OreDictStack(F.dust(), 8),
|
|
new ComparableStack(ModItems.nugget_bismuth, 4))
|
|
.inputFluids(new FluidStack(Fluids.PEROXIDE, 1000, 5))
|
|
.outputFluids(new FluidStack(Fluids.DEATH, 1000, 0)));
|
|
//one bucket of ethanol equals 275_000 TU using the diesel baseline0
|
|
//the coal baseline is 400_000 per piece
|
|
//if we assume a burntime of 1.5 ops (300 ticks) for sugar at 100 TU/t that would equal a total of 30_000 TU
|
|
recipes.add(new ChemRecipe(75, "ETHANOL", 50)
|
|
.inputItems(new ComparableStack(Items.sugar, 10))
|
|
.outputFluids(new FluidStack(Fluids.ETHANOL, 1000)));
|
|
recipes.add(new ChemRecipe(76, "METH", 30)
|
|
.inputItems(
|
|
new ComparableStack(Items.wheat),
|
|
new ComparableStack(Items.dye, 2, 3))
|
|
.inputFluids(
|
|
new FluidStack(Fluids.LUBRICANT, 400),
|
|
new FluidStack(Fluids.PEROXIDE, 400))
|
|
.outputItems(new ItemStack(ModItems.chocolate, 4)));
|
|
recipes.add(new ChemRecipe(77, "CO2", 60)
|
|
.inputFluids(new FluidStack(Fluids.GAS, 1000))
|
|
.outputFluids(new FluidStack(Fluids.CARBONDIOXIDE, 1000)));
|
|
recipes.add(new ChemRecipe(78, "HEAVY_ELECTROLYSIS", 150)
|
|
.inputFluids(new FluidStack(Fluids.HEAVYWATER, 2000))
|
|
.outputFluids(
|
|
new FluidStack(Fluids.DEUTERIUM, 200),
|
|
new FluidStack(Fluids.OXYGEN, 200)));
|
|
recipes.add(new ChemRecipe(80, "EPEARL", 100)
|
|
.inputItems(new OreDictStack(DIAMOND.dust(), 1))
|
|
.inputFluids(new FluidStack(Fluids.XPJUICE, 500))
|
|
.outputFluids(new FluidStack(Fluids.ENDERJUICE, 100)));
|
|
recipes.add(new ChemRecipe(98, "SHELL_CHLORINE", 100)
|
|
.inputItems(
|
|
new ComparableStack(ModItems.ammo_arty, 1, 0),
|
|
new OreDictStack(ANY_PLASTIC.ingot(), 1))
|
|
.inputFluids(new FluidStack(Fluids.CHLORINE, 4000))
|
|
.outputItems(new ItemStack(ModItems.ammo_arty, 1, 9)));
|
|
recipes.add(new ChemRecipe(99, "SHELL_PHOSGENE", 100)
|
|
.inputItems(
|
|
new ComparableStack(ModItems.ammo_arty, 1, 0),
|
|
new OreDictStack(ANY_PLASTIC.ingot(), 1))
|
|
.inputFluids(new FluidStack(Fluids.PHOSGENE, 4000))
|
|
.outputItems(new ItemStack(ModItems.ammo_arty, 1, 10)));
|
|
recipes.add(new ChemRecipe(100, "SHELL_MUSTARD", 100)
|
|
.inputItems(
|
|
new ComparableStack(ModItems.ammo_arty, 1, 0),
|
|
new OreDictStack(ANY_PLASTIC.ingot(), 1))
|
|
.inputFluids(new FluidStack(Fluids.MUSTARDGAS, 4000))
|
|
.outputItems(new ItemStack(ModItems.ammo_arty, 1, 11)));
|
|
recipes.add(new ChemRecipe(101, "CC_CENTRIFUGE", 200)
|
|
.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)));
|
|
|
|
recipes.add(new ChemRecipe(102, "THORIUM_SALT", 60)
|
|
.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 ItemStack(ModItems.nugget_u233, 1),
|
|
new ItemStack(ModItems.nuclear_waste_tiny, 1)));
|
|
|
|
recipes.add(new ChemRecipe(103, "MEAT_PROCESSING", 200)
|
|
.inputItems(new OreDictStack(KEY_GLYPHID_MEAT, 3))
|
|
.inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 1000))
|
|
.outputItems(new ItemStack(ModItems.sulfur, 4),
|
|
new ItemStack(ModItems.niter, 3))
|
|
.outputFluids(new FluidStack(Fluids.SALIENT, 250)));
|
|
|
|
}
|
|
|
|
public static void registerOtherOil() {
|
|
recipes.add(new ChemRecipe(31, "BP_BIOGAS", 60)
|
|
.inputItems(new ComparableStack(ModItems.biomass, 16)) //if we assume 1B BF = 500k and translate that to 2B BG = 500k, then each biomass is worth ~31k or roughly 1.5 furnace operations
|
|
.outputFluids(new FluidStack(2000, Fluids.BIOGAS)));
|
|
recipes.add(new ChemRecipe(32, "BP_BIOFUEL", 60)
|
|
.inputFluids(new FluidStack(1500, Fluids.BIOGAS), new FluidStack(250, Fluids.ETHANOL))
|
|
.outputFluids(new FluidStack(1000, Fluids.BIOFUEL)));
|
|
recipes.add(new ChemRecipe(33, "LPG", 100)
|
|
.inputFluids(new FluidStack(2000, Fluids.PETROLEUM))
|
|
.outputFluids(new FluidStack(1000, Fluids.LPG)));
|
|
recipes.add(new ChemRecipe(34, "OIL_SAND", 200)
|
|
.inputItems(new ComparableStack(ModBlocks.ore_oil_sand, 16), new OreDictStack(ANY_TAR.any(), 1))
|
|
.outputItems(new ItemStack(Blocks.sand, 16))
|
|
.outputFluids(new FluidStack(1000, Fluids.BITUMEN)));
|
|
recipes.add(new ChemRecipe(35, "ASPHALT", 100)
|
|
.inputItems(new ComparableStack(Blocks.gravel, 2), new ComparableStack(Blocks.sand, 6))
|
|
.inputFluids(new FluidStack(1000, Fluids.BITUMEN))
|
|
.outputItems(new ItemStack(ModBlocks.asphalt, 16)));
|
|
}
|
|
|
|
public static class ChemRecipe {
|
|
|
|
public int listing;
|
|
private int id;
|
|
public String name;
|
|
public AStack[] inputs;
|
|
public FluidStack[] inputFluids;
|
|
public ItemStack[] outputs;
|
|
public FluidStack[] outputFluids;
|
|
private int duration;
|
|
|
|
public ChemRecipe(int index, String name, int duration) {
|
|
this.id = index;
|
|
this.name = name;
|
|
this.duration = duration;
|
|
this.listing = recipes.size();
|
|
|
|
this.inputs = new AStack[4];
|
|
this.outputs = new ItemStack[4];
|
|
this.inputFluids = new FluidStack[2];
|
|
this.outputFluids = new FluidStack[2];
|
|
|
|
if(!indexMapping.containsKey(id)) {
|
|
indexMapping.put(id, this);
|
|
} else {
|
|
throw new IllegalStateException("Chemical plant recipe " + name + " has been registered with duplicate id " + id + " used by " + indexMapping.get(id).name + "!");
|
|
}
|
|
}
|
|
|
|
public ChemRecipe inputItems(AStack... in) {
|
|
for(int i = 0; i < in.length; i++) this.inputs[i] = in[i];
|
|
return this;
|
|
}
|
|
|
|
public ChemRecipe inputFluids(FluidStack... in) {
|
|
for(int i = 0; i < in.length; i++) this.inputFluids[i] = in[i];
|
|
return this;
|
|
}
|
|
|
|
public ChemRecipe outputItems(ItemStack... out) {
|
|
for(int i = 0; i < out.length; i++) this.outputs[i] = out[i];
|
|
return this;
|
|
}
|
|
|
|
public ChemRecipe outputFluids(FluidStack... out) {
|
|
for(int i = 0; i < out.length; i++) this.outputFluids[i] = out[i];
|
|
return this;
|
|
}
|
|
|
|
public int getId() {
|
|
return this.id;
|
|
}
|
|
|
|
public int getDuration() {
|
|
return this.duration;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public String getFileName() {
|
|
return "hbmChemplant.json";
|
|
}
|
|
|
|
@Override
|
|
public Object getRecipeObject() {
|
|
return this.recipes;
|
|
}
|
|
|
|
@Override
|
|
public void readRecipe(JsonElement recipe) {
|
|
JsonObject obj = (JsonObject) recipe;
|
|
int id = obj.get("id").getAsInt();
|
|
String name = obj.get("name").getAsString();
|
|
int duration = obj.get("duration").getAsInt();
|
|
|
|
recipes.add(new ChemRecipe(id, name, duration)
|
|
.inputFluids( this.readFluidArray( (JsonArray) obj.get("fluidInput")))
|
|
.inputItems( this.readAStackArray( (JsonArray) obj.get("itemInput")))
|
|
.outputFluids( this.readFluidArray( (JsonArray) obj.get("fluidOutput")))
|
|
.outputItems( this.readItemStackArray( (JsonArray) obj.get("itemOutput"))));
|
|
}
|
|
|
|
@Override
|
|
public void writeRecipe(Object recipe, JsonWriter writer) throws IOException {
|
|
try {
|
|
ChemRecipe chem = (ChemRecipe) recipe;
|
|
writer.name("id").value(chem.id);
|
|
writer.name("name").value(chem.name);
|
|
writer.name("duration").value(chem.duration);
|
|
//Fluid IN
|
|
writer.name("fluidInput").beginArray();
|
|
for(FluidStack input : chem.inputFluids) { if(input != null) this.writeFluidStack(input, writer); }
|
|
writer.endArray();
|
|
//Item IN
|
|
writer.name("itemInput").beginArray();
|
|
for(AStack input : chem.inputs) { if(input != null) this.writeAStack(input, writer); }
|
|
writer.endArray();
|
|
//Fluid OUT
|
|
writer.name("fluidOutput").beginArray();
|
|
for(FluidStack output : chem.outputFluids) { if(output != null) this.writeFluidStack(output, writer); }
|
|
writer.endArray();
|
|
//Item OUT
|
|
writer.name("itemOutput").beginArray();
|
|
for(ItemStack output : chem.outputs) { if(output != null) this.writeItemStack(output, writer); }
|
|
writer.endArray();
|
|
} catch(Exception ex) {
|
|
MainRegistry.logger.error(ex);
|
|
ex.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public String getComment() {
|
|
return "Rules: All in- and output arrays need to be present, even if empty. IDs need to be unique, but not sequential. It's safe if you add your own"
|
|
+ " recipes starting with ID 1000. Template order depends on the order of the recipes in this JSON file. The 'name' field is responsible for"
|
|
+ " the texture being loaded for the template. Custom dynamic texture generation is not yet implemented, you will have to throw the texture into"
|
|
+ " the JAR manually.";
|
|
}
|
|
|
|
@Override
|
|
public void deleteRecipes() {
|
|
this.indexMapping.clear();
|
|
this.recipes.clear();
|
|
}
|
|
}
|