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.CallbackInfo;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
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 {
|
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",
|
at = @At(value = "INVOKE",
|
||||||
target = "Lappeng/crafting/CraftingTreeNode;addContainerItems(Lappeng/api/stacks/AEKey;JLappeng/api/stacks/KeyCounter;)V"),
|
target = "Lappeng/crafting/CraftingTreeNode;addContainerItems(Lappeng/api/stacks/AEKey;JLappeng/api/stacks/KeyCounter;)V"),
|
||||||
locals = LocalCapture.CAPTURE_FAILHARD)
|
locals = LocalCapture.CAPTURE_FAILHARD)
|
||||||
private void captureRequestedAmount(CraftingSimulationState inv, long requestedAmount, KeyCounter containerItems, CallbackInfo ci) {
|
private void captureRequestedAmount(CraftingSimulationState inv, long requestedAmount, KeyCounter containerItems, CallbackInfo ci) {
|
||||||
// push the requestedAmount before addContainerItems is called
|
// push the requestedAmount before addContainerItems is called
|
||||||
RequestedAmountHolder.push(requestedAmount);
|
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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@ public abstract class CraftingTreeProcessMixin {
|
||||||
CraftingTreeNodeAccessor parentAcc = (CraftingTreeNodeAccessor) craftingTreeNode;
|
CraftingTreeNodeAccessor parentAcc = (CraftingTreeNodeAccessor) craftingTreeNode;
|
||||||
AEKey parentTarget = parentAcc.eap$getWhat();
|
AEKey parentTarget = parentAcc.eap$getWhat();
|
||||||
long requested = RequestedAmountHolder.get();
|
long requested = RequestedAmountHolder.get();
|
||||||
|
RequestedAmountHolder.pop();
|
||||||
|
|
||||||
// 根据配置决定是否在 provider 间轮询分配请求量(默认开启)
|
// 根据配置决定是否在 provider 间轮询分配请求量(默认开启)
|
||||||
long perProvider = 1L;
|
long perProvider = 1L;
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,6 @@
|
||||||
"advancedae.menu.AdvPatternProviderMenuAdvancedMixin",
|
"advancedae.menu.AdvPatternProviderMenuAdvancedMixin",
|
||||||
"advancedae.menu.AdvPatternProviderMenuDoublingMixin",
|
"advancedae.menu.AdvPatternProviderMenuDoublingMixin",
|
||||||
"ae2.AEProcessingPatternMixin",
|
"ae2.AEProcessingPatternMixin",
|
||||||
"ae2.CraftingCalculationMixin",
|
|
||||||
"ae2.CraftingCPUClusterMixin",
|
"ae2.CraftingCPUClusterMixin",
|
||||||
"ae2.EncodedPatternItemMixin",
|
"ae2.EncodedPatternItemMixin",
|
||||||
"ae2.InterfaceLogicUpgradesMixin",
|
"ae2.InterfaceLogicUpgradesMixin",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user