diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/CraftingCalculationMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/CraftingCalculationMixin.java deleted file mode 100644 index 1936c79..0000000 --- a/src/main/java/com/extendedae_plus/mixin/ae2/CraftingCalculationMixin.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.extendedae_plus.mixin.ae2; - -import appeng.crafting.CraftingCalculation; -import com.extendedae_plus.config.ModConfig; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.Constant; -import org.spongepowered.asm.mixin.injection.ModifyConstant; - -/** - * Mixin 用于增加 CraftingCalculation.handlePausing() 中 incTime 的阈值。 - * 调整 CRAFTING_PAUSE_THRESHOLD 可以控制计算让出控制权的频率。 - */ -@Mixin(value = CraftingCalculation.class, remap = false) -public abstract class CraftingCalculationMixin { - // 可调节的阈值:在执行 pause 检查前 handlePausing 被调用的次数。 - // 增大此值可以减少 wait/notify 的频率(提升吞吐量但降低响应速度)。 - @ModifyConstant(method = "handlePausing", constant = @Constant(intValue = 100)) - private int modifyIncTimeThreshold(int original) { - return ModConfig.INSTANCE.craftingPauseThreshold; - } -} \ No newline at end of file diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingTreeNodeMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingTreeNodeMixin.java index b2651d5..1c4f00b 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingTreeNodeMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingTreeNodeMixin.java @@ -10,21 +10,14 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.LocalCapture; -@Mixin(value = CraftingTreeNode.class,remap = false) +@Mixin(value = CraftingTreeNode.class,remap = false,priority = 2000) public class CraftingTreeNodeMixin { - @Inject(method = "request(Lappeng/crafting/inv/CraftingSimulationState;JLappeng/api/stacks/KeyCounter;)V", + @Inject(method = "ultraFastRequest(Lappeng/crafting/inv/CraftingSimulationState;JLappeng/api/stacks/KeyCounter;)V", at = @At(value = "INVOKE", target = "Lappeng/crafting/CraftingTreeNode;addContainerItems(Lappeng/api/stacks/AEKey;JLappeng/api/stacks/KeyCounter;)V"), locals = LocalCapture.CAPTURE_FAILHARD) private void captureRequestedAmount(CraftingSimulationState inv, long requestedAmount, KeyCounter containerItems, CallbackInfo ci) { // push the requestedAmount before addContainerItems is called - RequestedAmountHolder.push(requestedAmount); - } - - @Inject(method = "request(Lappeng/crafting/inv/CraftingSimulationState;JLappeng/api/stacks/KeyCounter;)V", - at = @At(value = "RETURN")) - private void clearRequestedAmountOnReturn(CraftingSimulationState inv, long requestedAmount, KeyCounter containerItems, CallbackInfo ci) { - // pop the pushed requested amount on return - RequestedAmountHolder.pop(); + RequestedAmountHolder.push(requestedAmount); } } diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingTreeProcessMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingTreeProcessMixin.java index 8f96a90..b8359ab 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingTreeProcessMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingTreeProcessMixin.java @@ -56,6 +56,7 @@ public abstract class CraftingTreeProcessMixin { CraftingTreeNodeAccessor parentAcc = (CraftingTreeNodeAccessor) craftingTreeNode; AEKey parentTarget = parentAcc.eap$getWhat(); long requested = RequestedAmountHolder.get(); + RequestedAmountHolder.pop(); // 根据配置决定是否在 provider 间轮询分配请求量(默认开启) long perProvider = 1L; diff --git a/src/main/resources/extendedae_plus.mixins.json b/src/main/resources/extendedae_plus.mixins.json index 67a876f..cb629e0 100644 --- a/src/main/resources/extendedae_plus.mixins.json +++ b/src/main/resources/extendedae_plus.mixins.json @@ -45,7 +45,6 @@ "advancedae.menu.AdvPatternProviderMenuAdvancedMixin", "advancedae.menu.AdvPatternProviderMenuDoublingMixin", "ae2.AEProcessingPatternMixin", - "ae2.CraftingCalculationMixin", "ae2.CraftingCPUClusterMixin", "ae2.EncodedPatternItemMixin", "ae2.InterfaceLogicUpgradesMixin",