From fa12cfeec162c52bd403b01d49970f015bb2b305 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 15 Dec 2025 11:03:05 +0100 Subject: [PATCH] ow --- changelog | 64 +---------- .../hbm/handler/nei/VacuumRecipeHandler.java | 4 +- .../inventory/recipes/AnnihilatorRecipes.java | 2 + .../recipes/AssemblyMachineRecipes.java | 24 ++-- .../hbm/inventory/recipes/PrecAssRecipes.java | 7 ++ .../inventory/recipes/RefineryRecipes.java | 43 ------- .../recipes/VacuumRefineryRecipes.java | 108 ++++++++++++++++++ .../recipes/loader/SerializableRecipe.java | 1 + .../oil/TileEntityMachineVacuumDistill.java | 8 +- .../hbm/textures/gui/processing/gui_mixer.png | Bin 3194 -> 3236 bytes 10 files changed, 138 insertions(+), 123 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/recipes/VacuumRefineryRecipes.java diff --git a/changelog b/changelog index 0ed93ec83..a75b72d1f 100644 --- a/changelog +++ b/changelog @@ -1,65 +1,5 @@ -## Added -* Precision assembler - * Can create blueprint folders - * Used extensively in 528 mode - * Replaces recipes for micro chips, controllers and upgrades - * All recipes only have a chance to be completed, broken items yielded otherwise need to be recycled - * Can do precise recipes, but it very unreliable. Many recipes have a high chance of outputting a broken version of the made item - * Broken items can be recycled in the precision assembler, returning some of the ingredients -* Annihilator - * Destroys items and fluids and keeps track of how much has been destroyed - * In 528 mode, destroying quantities of certain items yield unique progression relevant blueprints - ## Changed -* Updated chinese localization -* Changed the way 528 mode works - * May of the old tantalium requirements no longer exist since the assembler rework - * Some important recipes have been moved to the precision assembler - * Many key "milestone" recipes now require 528 mode exclusive blueprints - * 528 exclusive blueprints are obtained from annihilating large quantities of certain items - * AE2 blocks, by default, will detonate when interacted with - * Synergizes with expensive mode, many recycling probabilities of the precision assembler are massively lowered with expensive mode enabled, increasing effective cost massively - * :) -* New fusion reactor and particle accelerator parts now have OpenComputers compat -* Irradiation recipe config now has the `fusionOnly` flag, preventing the recipe from being done in the RBMK irradiation channel -* Removed legacy fusion reactor parts from the creative inventory -* Removed the legacy fusion reactor core components -* If a legacy fusion reactor explodes, it is now destroyed forever and cannot be reassembled -* Legacy fusion reactors no longer disassemble when being mined, rather they drop as one block -* Legacy templates are no longer listed in the creative tab -* Removed the old meltdown achievement -* Eating canned fists now hurts -* Due to repeated incidents regarding canned black holes, the mechanics have changed - * Vortices spawned now have a flag set that prevents them from breaking blocks entirely - * Vortices decay 4x faster than those spawned by singularity items, it should last about 2.5 seconds in total - * It will still very much kill you instantly and destroy your items -* Storage crates can no longer be placed into containment boxes -* Expensive mode now has a new microcrafting item, being made from multiple types of plastic -* Fusion reactor parts now have expensive mode recipes -* Both types of blueprint booklets are now obtainable via precision assembler - * The recipes are lengthy, require a lot of power and have a low chance of succeeding - * Recipes require the divine pufferfish, driver of all innovation - * Where can you get this much pufferfish? Go figure it out -* Chance output stacks no longer do an RNG call to determine if the whole stack is provided or none, rather, each single item of the stack has its own RNG call -* Hiperf bedrock ore processing of heavy metals now yields tantalium -* Bedrock coltan is no longer a dedicated bedrock ore type -* Alt fire is now available for 10ga double barrel shotguns, allowing only a single barrel to be fired at once -* The custom mapping function on RoR torches now supports up to 32 characters instead of 15 -* Drainage pipes, flare stacks and the annihilator now have the default fluid priority of LOW, meaning that excess removal using those no longer requires flow control pumps -* Halved base energy consumption for the solidifier and liquefactor -* Changed cracking tower recipe to use desh instead of polymer, as well as a little bit more niobium in favor of all the clay catalysts it used to have -* Iron and corroded barrels have been deprecated and are no longer obtainable -* Steel barrels and 256k tanks no longer use tar in their recipes (except in expensive mode) -* Solidifying biogas into compressed biomass now yields 4x more, making the biogas route twice as efficient as simply compressing biomass -* Finally removed the long deprecated ambience radiation generator and geothermal generator -* Nerfed the ballistic jackets, as they are comically cheap and made some zombies impossible to kill in early game -* RBMK fuel rod items can now be inserted directly into fuel rods via right click, instead of having to open the GUI -* Containment boxes now use ferrouranium instead of raw U-238 -* Added missing recipes to two legendary weapons +* Changed the recipe change button on the mixer to be bright red with arrows on it (since the "C" looked too much like it meant "clear") ## Fixed -* Fixed gamebreaking issue causing crashes and world corruption where the multi detonator had its tooltip misspelled -* Fixed panzerschreck equip animation not speeding up with the sawed off mod -* Fixed FENSU not keeping its charge when broken -* Removed skeletonizer reloading from `/ntmreload` as it wasn't usable for end users and just caused error messages on servers -* Added more null checks to world generation, hopefully preventing weird one-off crashes +* Fixed atomic clock precision assembler recipe not working \ No newline at end of file diff --git a/src/main/java/com/hbm/handler/nei/VacuumRecipeHandler.java b/src/main/java/com/hbm/handler/nei/VacuumRecipeHandler.java index 527bcc7b5..ff7118dc3 100644 --- a/src/main/java/com/hbm/handler/nei/VacuumRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/VacuumRecipeHandler.java @@ -1,12 +1,12 @@ package com.hbm.handler.nei; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.recipes.RefineryRecipes; +import com.hbm.inventory.recipes.VacuumRefineryRecipes; public class VacuumRecipeHandler extends NEIUniversalHandler { public VacuumRecipeHandler() { - super("Vacuum Refinery", ModBlocks.machine_vacuum_distill, RefineryRecipes.getVacuumRecipe()); + super("Vacuum Refinery", ModBlocks.machine_vacuum_distill, VacuumRefineryRecipes.getVacuumRecipe()); } @Override diff --git a/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java b/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java index d184a28b8..2a1ae355d 100644 --- a/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java @@ -45,6 +45,7 @@ public class AnnihilatorRecipes extends SerializableRecipe { * RUBBER -> FRACKER (ASSEM) * URANIUM -> GASCENT (ASSEM) * FERRO -> RBMK (ASSEM) + * STRONTIUM -> ATOMIC CLOCK (PRECASS) * BISMUTH -> BIS CHIPS (PRECASS) * HARDPLASTIC -> OIL 3.5 (ASSEM) * TCALLOY -> FUSION, WATZ (ASSEM) @@ -67,6 +68,7 @@ public class AnnihilatorRecipes extends SerializableRecipe { recipes.put(ANY_PLASTIC.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("512"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "plastic")))); recipes.put(RUBBER.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("512"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "rubber")))); recipes.put(FERRO.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "ferrouranium")))); + recipes.put(SR.dust(), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "strontium")))); recipes.put(ANY_HARDPLASTIC.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "hardplastic")))); recipes.put(ANY_RESISTANTALLOY.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "tcalloy")))); recipes.put(ModItems.powder_chlorophyte, new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")))); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index 34633620f..74bc229d0 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -602,50 +602,50 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.icfcell").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CELL.ordinal())) .inputItems(new ComparableStack(ModItems.ingot_cft, 2), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new ComparableStack(ModBlocks.glass_quartz, 16)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.BRONZE_TUBES), new ComparableStack(ModItems.ingot_cft, 8), new ComparableStack(ModBlocks.glass_quartz, 16)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfemitter").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.EMITTER.ordinal())) .inputItems(new OreDictStack(W.plateWelded(), 4), new OreDictStack(MAGTUNG.wireDense(), 16)) .inputItemsEx(new OreDictStack(W.plateWelded(), 8), new OreDictStack(MAGTUNG.wireDense(), 16)) .inputFluids(new FluidStack(Fluids.XENON, 16_000)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfcapacitor").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CAPACITOR.ordinal())) .inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 1), new OreDictStack(ND.wireDense(), 16), new OreDictStack(SBD.wireDense(), 2)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.FERRO_PLATING), new OreDictStack(ND.wireDense(), 16), new OreDictStack(SBD.wireDense(), 2)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfturbo").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.TURBO.ordinal())) .inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 2), new OreDictStack(DNT.wireDense(), 4), new OreDictStack(SBD.wireDense(), 4)) .inputItemsEx(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(DNT.wireDense(), 8), new OreDictStack(SBD.wireDense(), 4)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfcasing").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CASING.ordinal())) .inputItems(new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new OreDictStack(BIGMT.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(BIGMT.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfport").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.PORT.ordinal())) .inputItems(new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ND.wireDense(), 16)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ND.wireDense(), 16)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfcontroller").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_controller, 1)) .inputItems(new ComparableStack(ModItems.ingot_cft, 16), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.BRONZE_TUBES), new ComparableStack(ModItems.ingot_cft, 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.COMPUTER)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfscaffold").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_component, 1, 0)) .inputItems(new OreDictStack(STEEL.plateWelded(), 4), new OreDictStack(TI.plateWelded(), 2)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.STEEL_PLATING)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfvessel").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_component, 1, 1)) .inputItems(new ComparableStack(ModItems.ingot_cft, 1), new OreDictStack(CMB.plateCast(), 1), new OreDictStack(W.plateWelded(), 2)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfstructural").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_component, 1, 3)) .inputItems(new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(CU.plateWelded(), 2), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 1)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(STEEL.plateWelded(), 8)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfcore").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.struct_icf_core, 1)) .inputItems(new OreDictStack(CMB.plateWelded(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 16), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 16), new OreDictStack(SBD.wireDense(), 32), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.BISMOID), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.QUANTUM)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(CMB.plateWelded(), 16), new OreDictStack(SBD.wireDense(), 32), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.QUANTUM), new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.COMPUTER)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfpress").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_icf_press, 1)) .inputItems(new OreDictStack(GOLD.plateCast(), 8), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); // upgrades if(no528) { diff --git a/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java b/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java index ee47ebc85..6c06125da 100644 --- a/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java @@ -65,6 +65,13 @@ public class PrecAssRecipes extends GenericRecipes { .inputFluids(new FluidStack(Fluids.HELIUM4, 4_000)).setPools(POOL_PREFIX_528 + "chip_quantum"), DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_QUANTUM), 50, GeneralConfig.enableExpensiveMode ? 10 : 50); + registerPair(new GenericRecipe("precass.atomic_clock").setup(200, 2_000L) + .inputItems(new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CHIP), + new OreDictStack(ANY_PLASTIC.ingot(), 4), + new OreDictStack(ZR.wireFine(), 8), + new OreDictStack(SR.dust(), 1)).setPools(POOL_PREFIX_528 + "strontium"), + DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ATOMIC_CLOCK), 50, GeneralConfig.enableExpensiveMode ? 10 : 50); + registerPair(new GenericRecipe("precass.controller").setup(400, 15_000L) .inputItems(new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CHIP), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CAPACITOR), diff --git a/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java b/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java index edf2d005b..7b913597c 100644 --- a/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java @@ -12,7 +12,6 @@ import com.hbm.items.ItemEnums.EnumTarType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; import com.hbm.util.ItemStackUtil; -import com.hbm.util.Tuple.Quartet; import com.hbm.util.Tuple.Quintet; import net.minecraft.item.ItemStack; @@ -38,13 +37,7 @@ public class RefineryRecipes { public static final int crackds_frac_aroma = 15; public static final int crackds_frac_unsat = 15; - public static final int vac_frac_heavy = 40; - public static final int vac_frac_reform = 25; - public static final int vac_frac_light = 20; - public static final int vac_frac_sour = 15; - private static Map> refinery = new HashMap(); - private static Map> vacuum = new HashMap(); public static HashMap getRefineryRecipe() { @@ -66,25 +59,6 @@ public class RefineryRecipes { return recipes; } - public static HashMap getVacuumRecipe() { - - HashMap recipes = new HashMap(); - - for(Entry> recipe : vacuum.entrySet()) { - - Quartet fluids = recipe.getValue(); - - recipes.put(ItemFluidIcon.make(recipe.getKey(), 1000, 2), - new ItemStack[] { - ItemFluidIcon.make(fluids.getW().type, fluids.getW().fill * 10), - ItemFluidIcon.make(fluids.getX().type, fluids.getX().fill * 10), - ItemFluidIcon.make(fluids.getY().type, fluids.getY().fill * 10), - ItemFluidIcon.make(fluids.getZ().type, fluids.getZ().fill * 10) }); - } - - return recipes; - } - public static void registerRefinery() { refinery.put(Fluids.HOTOIL, new Quintet( new FluidStack(Fluids.HEAVYOIL, oil_frac_heavy), @@ -114,26 +88,9 @@ public class RefineryRecipes { new FluidStack(Fluids.UNSATURATEDS, crackds_frac_unsat), DictFrame.fromOne(ModItems.oil_tar, EnumTarType.PARAFFIN) )); - - vacuum.put(Fluids.OIL, new Quartet( - new FluidStack(Fluids.HEAVYOIL_VACUUM, vac_frac_heavy), - new FluidStack(Fluids.REFORMATE, vac_frac_reform), - new FluidStack(Fluids.LIGHTOIL_VACUUM, vac_frac_light), - new FluidStack(Fluids.SOURGAS, vac_frac_sour) - )); - vacuum.put(Fluids.OIL_DS, new Quartet( - new FluidStack(Fluids.HEAVYOIL_VACUUM, vac_frac_heavy), - new FluidStack(Fluids.REFORMATE, vac_frac_reform), - new FluidStack(Fluids.LIGHTOIL_VACUUM, vac_frac_light), - new FluidStack(Fluids.REFORMGAS, vac_frac_sour) - )); } public static Quintet getRefinery(FluidType oil) { return refinery.get(oil); } - - public static Quartet getVacuum(FluidType oil) { - return vacuum.get(oil); - } } diff --git a/src/main/java/com/hbm/inventory/recipes/VacuumRefineryRecipes.java b/src/main/java/com/hbm/inventory/recipes/VacuumRefineryRecipes.java new file mode 100644 index 000000000..74e8c64d5 --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/VacuumRefineryRecipes.java @@ -0,0 +1,108 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map.Entry; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.machine.ItemFluidIcon; + +import net.minecraft.item.ItemStack; + +public class VacuumRefineryRecipes extends SerializableRecipe { + + public static final int vac_frac_heavy = 40; + public static final int vac_frac_reform = 25; + public static final int vac_frac_light = 20; + public static final int vac_frac_sour = 15; + + public static HashMap recipes = new HashMap(); + + @Override + public void registerDefaults() { + + recipes.put(Fluids.OIL, new VacuumRefineryRecipe( + new FluidStack(Fluids.HEAVYOIL_VACUUM, vac_frac_heavy), + new FluidStack(Fluids.REFORMATE, vac_frac_reform), + new FluidStack(Fluids.LIGHTOIL_VACUUM, vac_frac_light), + new FluidStack(Fluids.SOURGAS, vac_frac_sour) + )); + recipes.put(Fluids.OIL_DS, new VacuumRefineryRecipe( + new FluidStack(Fluids.HEAVYOIL_VACUUM, vac_frac_heavy), + new FluidStack(Fluids.REFORMATE, vac_frac_reform), + new FluidStack(Fluids.LIGHTOIL_VACUUM, vac_frac_light), + new FluidStack(Fluids.REFORMGAS, vac_frac_sour) + )); + } + + public static VacuumRefineryRecipe getVacuum(FluidType oil) { + return recipes.get(oil); + } + + @Override public String getFileName() { return "hbmVacRefinery.json"; } + @Override public Object getRecipeObject() { return recipes; } + @Override public void deleteRecipes() { recipes.clear(); } + + @Override public String getComment() { + return "Inputs always assume 100mB, input ammount cannot be changed."; + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = recipe.getAsJsonObject(); + + FluidType type = Fluids.fromName(obj.get("input").getAsString()); + FluidStack o0 = this.readFluidStack(obj.get("output0").getAsJsonArray()); + FluidStack o1 = this.readFluidStack(obj.get("output1").getAsJsonArray()); + FluidStack o2 = this.readFluidStack(obj.get("output2").getAsJsonArray()); + FluidStack o3 = this.readFluidStack(obj.get("output3").getAsJsonArray()); + + recipes.put(type, new VacuumRefineryRecipe(o0, o1, o2, o3)); + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + Entry rec = (Entry) recipe; + + writer.name("input").value(rec.getKey().getName()); + + for(int i = 0; i < 4; i++) { + writer.name("output" + i); + this.writeFluidStack(rec.getValue().outputs[i], writer); + } + } + + public static HashMap getVacuumRecipe() { + + HashMap recipes = new HashMap(); + + for(Entry recipe : VacuumRefineryRecipes.recipes.entrySet()) { + + VacuumRefineryRecipe fluids = recipe.getValue(); + + recipes.put(ItemFluidIcon.make(recipe.getKey(), 1000, 2), + new ItemStack[] { + ItemFluidIcon.make(fluids.outputs[0].type, fluids.outputs[0].fill * 10), + ItemFluidIcon.make(fluids.outputs[1].type, fluids.outputs[1].fill * 10), + ItemFluidIcon.make(fluids.outputs[2].type, fluids.outputs[2].fill * 10), + ItemFluidIcon.make(fluids.outputs[3].type, fluids.outputs[3].fill * 10) }); + } + + return recipes; + } + + public static class VacuumRefineryRecipe { + + public FluidStack[] outputs; + + public VacuumRefineryRecipe(FluidStack f0, FluidStack f1, FluidStack f2, FluidStack f3) { + this.outputs = new FluidStack[] {f0, f1, f2, f3}; + } + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java index 0dd33edd2..5cff196be 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java @@ -59,6 +59,7 @@ public abstract class SerializableRecipe { recipeHandlers.add(new CrucibleRecipes()); recipeHandlers.add(new CentrifugeRecipes()); recipeHandlers.add(new CrystallizerRecipes()); + recipeHandlers.add(new VacuumRefineryRecipes()); recipeHandlers.add(new FractionRecipes()); recipeHandlers.add(new CrackingRecipes()); recipeHandlers.add(new ReformingRecipes()); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java index 3653b2138..97689217e 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java @@ -6,7 +6,8 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineVacuumDistill; -import com.hbm.inventory.recipes.RefineryRecipes; +import com.hbm.inventory.recipes.VacuumRefineryRecipes; +import com.hbm.inventory.recipes.VacuumRefineryRecipes.VacuumRefineryRecipe; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; @@ -14,7 +15,6 @@ import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; -import com.hbm.util.Tuple.Quartet; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IEnergyReceiverMK2; @@ -155,13 +155,13 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem } private void refine() { - Quartet refinery = RefineryRecipes.getVacuum(tanks[0].getTankType()); + VacuumRefineryRecipe refinery = VacuumRefineryRecipes.getVacuum(tanks[0].getTankType()); if(refinery == null) { for(int i = 1; i < 5; i++) tanks[i].setTankType(Fluids.NONE); return; } - FluidStack[] stacks = new FluidStack[] {refinery.getW(), refinery.getX(), refinery.getY(), refinery.getZ()}; + FluidStack[] stacks = refinery.outputs; for(int i = 0; i < stacks.length; i++) tanks[i + 1].setTankType(stacks[i].type); if(power < 10_000) return; diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png index a04e3e7a7aa6e466705f4cae7b27c2ba3b8cc458..871440cc4f80f6397e63912c17032efb0948361f 100644 GIT binary patch literal 3236 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 literal 3194 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 Qmm8?o7WU*~Gs=~}1EiZ{`v3p{