From 4bfce2ba92a389a2829809510f6a834ffac2105b Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 10 Jan 2026 14:39:59 +0100 Subject: [PATCH] Auto stash before merge of "master" and "origin/master" --- changelog | 4 +++- .../java/com/hbm/handler/nei/NEIUniversalHandler.java | 2 +- .../hbm/inventory/recipes/AssemblyMachineRecipes.java | 8 ++++---- .../hbm/inventory/recipes/loader/GenericRecipe.java | 11 +++++++++-- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/changelog b/changelog index 100a12032..31c62c549 100644 --- a/changelog +++ b/changelog @@ -17,4 +17,6 @@ * Fixed fluid counter valve not having a recipe * Fixed issue where `/ntmreload` would break registered fluids from addons * Fixed yet another issue regarding crates -* Fixed RBMK fluid heaters losing their tank types when unable to boil anything \ No newline at end of file +* Fixed RBMK fluid heaters losing their tank types when unable to boil anything +* Fixed the FEnSU, cyclotron and reliant robin missile being uncraftable due to stacksize limitations + * The system for detecting impossible recipe has been improved, instead of a fixed 64 item limit, it now uses the actual limit of the item (or 64 for ore dictionary inputs) \ No newline at end of file diff --git a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java index 471469d49..2e1b46619 100644 --- a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java +++ b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java @@ -23,7 +23,7 @@ import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -@Deprecated +@Deprecated // an experiment that i had to staple more and more features to until it ended up a bloated decaying corpse public abstract class NEIUniversalHandler extends TemplateRecipeHandler implements ICompatNHNEI { public LinkedList transferRectsRec = new LinkedList(); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index 5013ba2ba..aee6c4b70 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -424,7 +424,7 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.fensusan").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.machine_battery_redd, 1)) .inputItems(new ComparableStack(ModItems.ingot_electronium, 64), - new ComparableStack(ModItems.battery_pack, 16, EnumBatteryPack.BATTERY_QUANTUM), + new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_QUANTUM), new OreDictStack(OSMIRIDIUM.plateWelded(), 64), new OreDictStack(OSMIRIDIUM.plateWelded(), 64), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 64), @@ -436,7 +436,7 @@ public class AssemblyMachineRecipes extends GenericRecipes { new ComparableStack(ModItems.ingot_cft, 64), new ComparableStack(ModItems.ingot_cft, 64)) .inputItemsEx(new ComparableStack(ModItems.ingot_electronium, 64), - new ComparableStack(ModItems.battery_pack, 16, EnumBatteryPack.BATTERY_QUANTUM), + new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_QUANTUM), new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.BRONZE_TUBES), new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.FERRO_PLATING), new OreDictStack(OSMIRIDIUM.plateWelded(), 64), @@ -461,7 +461,7 @@ public class AssemblyMachineRecipes extends GenericRecipes { // accelerators this.register(new GenericRecipe("ass.cyclotron").setup(600, 100).outputItems(new ItemStack(ModBlocks.machine_cyclotron, 1)) - .inputItems(new ComparableStack(ModItems.battery_pack, 3, EnumBatteryPack.BATTERY_LITHIUM), new OreDictStack(ND.wireDense(), 32), new OreDictStack(STEEL.ingot(), 16), new OreDictStack(STEEL.plate(), 32), new OreDictStack(AL.plate(), 32), new OreDictStack(ANY_PLASTIC.ingot(), 24), new OreDictStack(RUBBER.ingot(), 24), new OreDictStack(CU.plateCast(), 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC)) + .inputItems(new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LITHIUM), new OreDictStack(ND.wireDense(), 32), new OreDictStack(STEEL.ingot(), 16), new OreDictStack(STEEL.plate(), 32), new OreDictStack(AL.plate(), 32), new OreDictStack(ANY_PLASTIC.ingot(), 24), new OreDictStack(RUBBER.ingot(), 24), new OreDictStack(CU.plateCast(), 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.FERRO_PLATING), new OreDictStack(ND.wireDense(), 32), new OreDictStack(AL.plateWelded(), 16), new OreDictStack(RUBBER.ingot(), 32), new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.CIRCUIT))); this.register(new GenericRecipe("ass.beamline").setup(200, 100).outputItems(new ItemStack(ModBlocks.pa_beamline, 1)) .inputItems(new OreDictStack(STEEL.plateCast(), 8), new OreDictStack(CU.plate(), 16), new OreDictStack(GOLD.wireDense(), 4)) @@ -872,7 +872,7 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.stealthmissile").setup(1_200, 100).outputItems(new ItemStack(ModItems.missile_stealth, 1)) .inputItems(new OreDictStack(TI.plate(), 20), new OreDictStack(AL.plate(), 20), new OreDictStack(KEY_BLACK, 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(STEEL.bolt(), 32))); this.register(new GenericRecipe("ass.shuttlemissile").setup(200, 100).outputItems(new ItemStack(ModItems.missile_shuttle, 1)) - .inputItems(new ComparableStack(ModItems.missile_generic, 2), new ComparableStack(ModItems.missile_strong, 1), new OreDictStack(KEY_ORANGE, 5), new ComparableStack(ModItems.canister_full, 24, Fluids.GASOLINE_LEADED.getID()), new OreDictStack(FIBER.ingot(), 12), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.BASIC), new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 8), new OreDictStack(KEY_ANYPANE, 6), new OreDictStack(STEEL.plate(), 4))); + .inputItems(new ComparableStack(ModItems.missile_generic, 1), new ComparableStack(ModItems.missile_strong, 1), new OreDictStack(KEY_ORANGE, 5), new ComparableStack(ModItems.canister_full, 24, Fluids.GASOLINE_LEADED.getID()), new OreDictStack(FIBER.ingot(), 12), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.BASIC), new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 8), new OreDictStack(KEY_ANYPANE, 6), new OreDictStack(STEEL.plate(), 4))); this.register(new GenericRecipe("ass.launchpad").setup(200, 100).outputItems(new ItemStack(ModBlocks.launch_pad_large, 1)) .inputItems(new OreDictStack(STEEL.plateCast(), 6), new OreDictStack(ANY_CONCRETE.any(), 64), new OreDictStack(ANY_PLASTIC.ingot(), 16), new ComparableStack(ModBlocks.steel_scaffold, 24), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.ADVANCED))); this.register(new GenericRecipe("ass.launchpadsilo").setup(200, 100).outputItems(new ItemStack(ModBlocks.launch_pad, 1)) diff --git a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java index eab7c3543..f2be9414a 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java @@ -7,6 +7,7 @@ import java.util.Locale; 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.recipes.loader.GenericRecipes.ChanceOutput; import com.hbm.inventory.recipes.loader.GenericRecipes.ChanceOutputMulti; import com.hbm.inventory.recipes.loader.GenericRecipes.IOutput; @@ -73,12 +74,18 @@ public class GenericRecipe { public GenericRecipe setPools528(String... pools) { if(GeneralConfig.enable528) { this.blueprintPools = pools; for(String pool : pools) GenericRecipes.addToPool(pool, this); } return this; } public GenericRecipe setGroup(String autoSwitch, GenericRecipes set) { this.autoSwitchGroup = autoSwitch; set.addToGroup(autoSwitch, this); return this; } - public GenericRecipe inputItems(AStack... input) { this.inputItem = input; for(AStack stack : this.inputItem) if(stack.stacksize > 64) throw new IllegalArgumentException("AStack in " + this.name + " exceeds stack limit!"); return this; } - public GenericRecipe inputItemsEx(AStack... input) { if(!GeneralConfig.enableExpensiveMode) return this; this.inputItem = input; for(AStack stack : this.inputItem) if(stack.stacksize > 64) throw new IllegalArgumentException("AStack in " + this.name + " exceeds stack limit!"); return this; } + public GenericRecipe inputItems(AStack... input) { this.inputItem = input; for(AStack stack : this.inputItem) if(exceedsStackLimit(stack)) throw new IllegalArgumentException("AStack in " + this.name + " exceeds stack limit!"); return this; } + public GenericRecipe inputItemsEx(AStack... input) { if(!GeneralConfig.enableExpensiveMode) return this; this.inputItem = input; for(AStack stack : this.inputItem) if(exceedsStackLimit(stack)) throw new IllegalArgumentException("AStack in " + this.name + " exceeds stack limit!"); return this; } public GenericRecipe inputFluids(FluidStack... input) { this.inputFluid = input; return this; } public GenericRecipe inputFluidsEx(FluidStack... input) { if(!GeneralConfig.enableExpensiveMode) return this; this.inputFluid = input; return this; } public GenericRecipe outputItems(IOutput... output) { this.outputItem = output; return this; } public GenericRecipe outputFluids(FluidStack... output) { this.outputFluid = output; return this; } + + private boolean exceedsStackLimit(AStack stack) { + if(stack instanceof ComparableStack && stack.stacksize > ((ComparableStack) stack).item.getItemStackLimit(((ComparableStack) stack).toStack())) return true; + if(stack.stacksize > 64) return true; + return false; + } public GenericRecipe outputItems(ItemStack... output) { this.outputItem = new IOutput[output.length];