This commit is contained in:
Boblet 2025-12-15 11:03:05 +01:00
parent 0fe125251b
commit fa12cfeec1
10 changed files with 138 additions and 123 deletions

View File

@ -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

View File

@ -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

View File

@ -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"))));

View File

@ -602,50 +602,50 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
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) {

View File

@ -65,6 +65,13 @@ public class PrecAssRecipes extends GenericRecipes<GenericRecipe> {
.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),

View File

@ -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<FluidType, Quintet<FluidStack, FluidStack, FluidStack, FluidStack, ItemStack>> refinery = new HashMap();
private static Map<FluidType, Quartet<FluidStack, FluidStack, FluidStack, FluidStack>> vacuum = new HashMap();
public static HashMap<Object, Object[]> getRefineryRecipe() {
@ -66,25 +59,6 @@ public class RefineryRecipes {
return recipes;
}
public static HashMap getVacuumRecipe() {
HashMap<Object, Object[]> recipes = new HashMap<Object, Object[]>();
for(Entry<FluidType, Quartet<FluidStack, FluidStack, FluidStack, FluidStack>> recipe : vacuum.entrySet()) {
Quartet<FluidStack, FluidStack, FluidStack, FluidStack> 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<FluidStack, FluidStack, FluidStack, FluidStack, ItemStack> getRefinery(FluidType oil) {
return refinery.get(oil);
}
public static Quartet<FluidStack, FluidStack, FluidStack, FluidStack> getVacuum(FluidType oil) {
return vacuum.get(oil);
}
}

View File

@ -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<FluidType, VacuumRefineryRecipe> 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<FluidType, VacuumRefineryRecipe> rec = (Entry<FluidType, VacuumRefineryRecipe>) 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<Object, Object[]> recipes = new HashMap<Object, Object[]>();
for(Entry<FluidType, VacuumRefineryRecipe> 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};
}
}
}

View File

@ -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());

View File

@ -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<FluidStack, FluidStack, FluidStack, FluidStack> 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;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB