feat: 支持新版本core的样板翻倍
This commit is contained in:
parent
560d9c71dc
commit
a385f14be3
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -45,7 +45,6 @@
|
|||
"advancedae.menu.AdvPatternProviderMenuAdvancedMixin",
|
||||
"advancedae.menu.AdvPatternProviderMenuDoublingMixin",
|
||||
"ae2.AEProcessingPatternMixin",
|
||||
"ae2.CraftingCalculationMixin",
|
||||
"ae2.CraftingCPUClusterMixin",
|
||||
"ae2.EncodedPatternItemMixin",
|
||||
"ae2.InterfaceLogicUpgradesMixin",
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user