From 2c40e0800aea183fd1a64c5b6dd16ba093640d2b Mon Sep 17 00:00:00 2001 From: C-H716 <1536152356@qq.com> Date: Tue, 4 Nov 2025 00:40:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=99=BA=E8=83=BD=E5=80=8D?= =?UTF-8?q?=E5=A2=9E=E7=9A=84=E5=85=A8=E5=B1=80=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/extendedae_plus/config/ModConfig.java | 5 +++-- .../autopattern/CraftingSimulationStateMixin.java | 12 ++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/extendedae_plus/config/ModConfig.java b/src/main/java/com/extendedae_plus/config/ModConfig.java index 5d8a5f6..57a1096 100644 --- a/src/main/java/com/extendedae_plus/config/ModConfig.java +++ b/src/main/java/com/extendedae_plus/config/ModConfig.java @@ -74,8 +74,9 @@ public final class ModConfig { @Configurable @Configurable.Comment(value = { - "全局智能倍增的最大倍数限制(0 表示不限制)", - "此倍数是针对单次样板产出的放大倍数上限,用于限制一次推送中按倍增缩放的规模" + "全局智能倍增的最大倍率限制(0 表示不限制)", + "此限制针对单次样板产出的倍增上限,用于控制一次推送的最大缩放规模", + "优先级低于样板自身的供应器限制" }) @Configurable.Synchronized @Configurable.Range(min = 0, max = Integer.MAX_VALUE) 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 8b57eeb..db5681c 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 @@ -5,6 +5,7 @@ import appeng.crafting.inv.CraftingSimulationState; import appeng.crafting.pattern.AEProcessingPattern; import com.extendedae_plus.ae.api.crafting.ScaledProcessingPattern; import com.extendedae_plus.api.smartDoubling.ISmartDoublingAwarePattern; +import com.extendedae_plus.config.ModConfig; import com.extendedae_plus.util.smartDoubling.PatternScaler; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -30,6 +31,7 @@ public abstract class CraftingSimulationStateMixin { ci.cancel(); if (craftsAmount <= 0 || details == null) return; + // 仅处理 AEProcessingPattern if (!(details instanceof AEProcessingPattern processingPattern)) { crafts.merge(details, craftsAmount, Long::sum); return; @@ -40,15 +42,21 @@ public abstract class CraftingSimulationStateMixin { if (processingPattern instanceof ISmartDoublingAwarePattern aware) { allowScaling = aware.eap$allowScaling(); - perCraftLimit = aware.eap$getMultiplierLimit(); // 已经是最大倍率限制 + perCraftLimit = aware.eap$getMultiplierLimit(); // 样板供应器限制 } - // 不允许缩放或者需求为 1 + // 样板不允许缩放 或者 需求量为 1 → 直接合并 if (!allowScaling || craftsAmount == 1) { crafts.merge(processingPattern, craftsAmount, Long::sum); return; } + // 样板无限制时应用全局配置 + if (perCraftLimit <= 0 && ModConfig.INSTANCE.smartScalingMaxMultiplier > 0) { + perCraftLimit = ModConfig.INSTANCE.smartScalingMaxMultiplier; + } + + // 根据限制处理 if (perCraftLimit <= 0) { // 无限制 → 合并倍率并复用对象 mergeUnlimited(processingPattern, craftsAmount);