From 55c58ff89f8ee6bb6c8a704bef37a5dc75eca9d8 Mon Sep 17 00:00:00 2001 From: C-H716 <1536152356@qq.com> Date: Tue, 11 Nov 2025 12:45:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=99=BA=E8=83=BD=E5=80=8D=E5=A2=9E=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=81=A5=E5=85=A8=E6=80=A7=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CraftingSimulationStateMixin.java | 7 +++++-- .../util/smartDoubling/PatternScaler.java | 21 ++++++++++--------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingSimulationStateMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingSimulationStateMixin.java index c63a769..f6e8a7a 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingSimulationStateMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingSimulationStateMixin.java @@ -26,7 +26,10 @@ public abstract class CraftingSimulationStateMixin { * 替换 CraftingPlan 构建逻辑,在此统一处理样板倍率 */ @Inject(method = "buildCraftingPlan", at = @At("HEAD")) - private static void onBuildCraftingPlan(CraftingSimulationState state, CraftingCalculation calculation, long calculatedAmount, CallbackInfoReturnable cir) { + private static void onBuildCraftingPlan(CraftingSimulationState state, + CraftingCalculation calculation, + long calculatedAmount, + CallbackInfoReturnable cir) { CraftingSimulationStateAccessor accessor = (CraftingSimulationStateAccessor) state; Map crafts = accessor.getCrafts(); // 存放最终分配后的 crafts @@ -108,4 +111,4 @@ public abstract class CraftingSimulationStateMixin { crafts.clear(); crafts.putAll(finalCrafts); } -} +} \ No newline at end of file diff --git a/src/main/java/com/extendedae_plus/util/smartDoubling/PatternScaler.java b/src/main/java/com/extendedae_plus/util/smartDoubling/PatternScaler.java index a0a7d1b..20f6bf6 100644 --- a/src/main/java/com/extendedae_plus/util/smartDoubling/PatternScaler.java +++ b/src/main/java/com/extendedae_plus/util/smartDoubling/PatternScaler.java @@ -73,17 +73,19 @@ public final class PatternScaler { for (IPatternDetails.IInput input : proc.getInputs()) { long amt = input.getMultiplier(); if (amt <= 0) continue; + var possible = input.getPossibleInputs(); + if (possible == null || possible.length == 0) continue; + AEKey key = possible[0].what(); + long unitMul = getUnitMultiplier(key); + long limitInUnit = (long) limit * unitMul; - AEKey key = input.getPossibleInputs()[0].what(); - long unitMultiplier = getUnitMultiplier(key); - long limitInAEUnit = (long) limit * unitMultiplier; - - long allowedMul = limitInAEUnit / amt; - allowedMul = Math.max(1, allowedMul); // 至少 1 - minMul = Math.min(minMul, allowedMul); + long allowed = limitInUnit / amt; + allowed = Math.max(1L, allowed); + minMul = Math.min(minMul, allowed); } - return minMul != Long.MAX_VALUE ? (int) Math.min(minMul, Integer.MAX_VALUE) : 0; + if (minMul == Long.MAX_VALUE) return 0; // 无有效输入 → 不限制 + return minMul > Integer.MAX_VALUE ? Integer.MAX_VALUE : (int) minMul; } private static long getUnitMultiplier(AEKey key) { @@ -95,8 +97,7 @@ public final class PatternScaler { if ("me.ramidzkh.mekae2.ae2.MekanismKey".equals(key.getClass().getName())) { return 1000L; } - } catch (Exception ignored) { - } + } catch (Exception ignored) {} return 1L; } } \ No newline at end of file