From 5a9e7bfc7cc72ef7eaaaeb28fb7cc1f9e0626b27 Mon Sep 17 00:00:00 2001 From: C-H716 <1536152356@qq.com> Date: Sat, 20 Sep 2025 21:25:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E9=80=80=E6=A0=B7=E6=9D=BF=E4=BE=9B?= =?UTF-8?q?=E5=BA=94=E5=99=A8=E6=8C=89=E9=92=AE=E5=80=8D=E5=A2=9E=E7=9A=84?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ContainerExPatternProviderMixin.java | 26 +++++-------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/extendedae_plus/mixin/extendedae/container/ContainerExPatternProviderMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/container/ContainerExPatternProviderMixin.java index 145bc62..d4fa16c 100644 --- a/src/main/java/com/extendedae_plus/mixin/extendedae/container/ContainerExPatternProviderMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/extendedae/container/ContainerExPatternProviderMixin.java @@ -20,7 +20,6 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import java.util.ArrayList; import java.util.List; @Pseudo @@ -107,7 +106,7 @@ public abstract class ContainerExPatternProviderMixin extends PatternProviderMen } @Unique - private boolean eap$checkModify(List stacks, int scale, boolean div) { + private boolean eap$checkModify(java.util.List stacks, int scale, boolean div) { if (stacks == null) return false; if (div) { for (var stack : stacks) { @@ -121,12 +120,10 @@ public abstract class ContainerExPatternProviderMixin extends PatternProviderMen } else { for (var stack : stacks) { if (stack != null) { - long amt = stack.amount(); - // 先检查乘法是否会导致超出 Long.MAX_VALUE,避免溢出 - if (amt > Integer.MAX_VALUE / scale) { + long upper = 999999L * stack.what().getAmountPerUnit(); + if (stack.amount() * scale > upper) { return false; } - // 已移除原有的业务上限检查(999999 * amountPerUnit),仅保留溢出检查 } } return true; @@ -134,23 +131,12 @@ public abstract class ContainerExPatternProviderMixin extends PatternProviderMen } @Unique - private List eap$modifyStacks(List src, int scale, boolean div) { - var dst = new ArrayList(src.size()); + private java.util.List eap$modifyStacks(java.util.List src, int scale, boolean div) { + var dst = new java.util.ArrayList(src.size()); for (var stack : src) { if (stack != null) { long amt = stack.amount(); - long newAmt; - if (div) { // 如果是除法操作 - newAmt = amt / scale; // 执行除法 - } else { // 如果是乘法操作 - // 防御性检查:确保不会发生溢出,尽管上层应已验证 - if (amt > Integer.MAX_VALUE / scale) { - // 遇到潜在溢出时跳过,保持为 null;调用方应通过 eap$checkModify 避免此分支 - dst.add(null); - continue; - } - newAmt = amt * scale; // 执行乘法 - } + long newAmt = div ? (amt / scale) : (amt * scale); dst.add(new GenericStack(stack.what(), newAmt)); } else { dst.add(null);