修改autoPattern文件结构,先完成再摆放至正确位置

This commit is contained in:
C-H716 2025-08-29 01:32:58 +08:00
parent ac522c7751
commit 9c20608926
6 changed files with 41 additions and 56 deletions

View File

@ -1,45 +0,0 @@
package com.extendedae_plus.mixin.ae2;
import appeng.api.crafting.IPatternDetails;
import appeng.api.networking.crafting.ICraftingService;
import appeng.api.stacks.AEKey;
import appeng.crafting.CraftingCalculation;
import appeng.crafting.CraftingTreeNode;
import appeng.crafting.CraftingTreeProcess;
import appeng.crafting.pattern.AEProcessingPattern;
import com.extendedae_plus.mixin.ae2.accessor.CraftingCalculationAccessor;
import com.extendedae_plus.mixin.ae2.accessor.CraftingTreeNodeAccessor;
import com.extendedae_plus.util.PatternScaler;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
/**
* 注入 CraftingTreeProcess 构造器尾部 AEProcessingPattern 替换为 ScaledProcessingPattern
* 以确保后续执行使用放大后的输入/输出视图
*/
@Mixin(CraftingTreeProcess.class)
public class CraftingTreeProcessMixin {
@ModifyVariable(method = "<init>(Lappeng/api/networking/crafting/ICraftingService;Lappeng/crafting/CraftingCalculation;Lappeng/api/crafting/IPatternDetails;Lappeng/crafting/CraftingTreeNode;)V",
at = @At("HEAD"), argsOnly = true)
private static IPatternDetails extendedae_plus$replaceDetailsAtHead(IPatternDetails original, ICraftingService cc, CraftingCalculation job, IPatternDetails details, CraftingTreeNode craftingTreeNode) {
try {
if (!(details instanceof AEProcessingPattern proc)) return original;
CraftingCalculationAccessor jobAcc = (CraftingCalculationAccessor) job;
long requested = jobAcc.extendedae_plus$getRequestedAmount();
CraftingTreeNodeAccessor parentAcc = (CraftingTreeNodeAccessor) craftingTreeNode;
AEKey parentTarget = parentAcc.extendedae_plus$getWhat();
System.out.println("[extendedae_plus] Replacing constructor details at HEAD for: " + parentTarget + " x " + requested);
return PatternScaler.scale(proc, parentTarget, requested);
} catch (Exception e) {
System.err.println("[extendedae_plus] Error replacing pattern at HEAD: " + e.getMessage());
e.printStackTrace();
return original;
}
}
}

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.ae2.accessor;
package com.extendedae_plus.mixin.autopattern;
import appeng.api.stacks.AEKey;
import appeng.crafting.CraftingCalculation;

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.ae2;
package com.extendedae_plus.mixin.autopattern;
import appeng.api.crafting.IPatternDetails;
import appeng.me.service.CraftingService;

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.ae2.accessor;
package com.extendedae_plus.mixin.autopattern;
import appeng.api.stacks.AEKey;
import appeng.crafting.CraftingTreeNode;

View File

@ -0,0 +1,34 @@
package com.extendedae_plus.mixin.autopattern;
import appeng.crafting.CraftingTreeProcess;
import org.spongepowered.asm.mixin.Mixin;
/**
* 注入 CraftingTreeProcess 构造器尾部 AEProcessingPattern 替换为 ScaledProcessingPattern
* 以确保后续执行使用放大后的输入/输出视图
*/
@Mixin(CraftingTreeProcess.class)
public class CraftingTreeProcessMixin {
// @ModifyVariable(method = "<init>(Lappeng/api/networking/crafting/ICraftingService;Lappeng/crafting/CraftingCalculation;Lappeng/api/crafting/IPatternDetails;Lappeng/crafting/CraftingTreeNode;)V",
// at = @At("HEAD"), argsOnly = true)
// private static IPatternDetails extendedae_plus$replaceDetailsAtHead(IPatternDetails original, ICraftingService cc, CraftingCalculation job, IPatternDetails details, CraftingTreeNode craftingTreeNode) {
// try {
// if (!(details instanceof AEProcessingPattern proc)) return original;
//
// CraftingCalculationAccessor jobAcc = (CraftingCalculationAccessor) job;
// long requested = jobAcc.extendedae_plus$getRequestedAmount();
//
// CraftingTreeNodeAccessor parentAcc = (CraftingTreeNodeAccessor) craftingTreeNode;
// AEKey parentTarget = parentAcc.extendedae_plus$getWhat();
//
// System.out.println("[extendedae_plus] Replacing constructor details at HEAD for: " + parentTarget + " x " + requested);
//
// return PatternScaler.scale(proc, parentTarget, requested);
// } catch (Exception e) {
// System.err.println("[extendedae_plus] Error replacing pattern at HEAD: " + e.getMessage());
// e.printStackTrace();
// return original;
// }
// }
}

View File

@ -29,25 +29,21 @@
"mixins": [
"ae2.ContainerPatternEncodingTermMenuMixin",
"ae2.CraftingCPUClusterMixin",
"ae2.CraftingServiceGetProvidersMixin",
"ae2.CraftingTreeProcessMixin",
"ae2.MEStorageMenuMixin",
"ae2.NetworkCraftingProvidersGetMediumsMixin",
"ae2.NetworkCraftingProvidersProviderStateMixin",
"ae2.PatternEncodingTermMenuMixin",
"ae2.PatternProviderLogicAdvancedMixin",
"ae2.PatternProviderLogicContainsRedirectMixin",
"ae2.PatternProviderLogicMixin",
"ae2.PatternProviderLogicPushPatternMixin",
"ae2.PatternProviderMenuAdvancedMixin",
"ae2.accessor.CraftingCalculationAccessor",
"ae2.accessor.CraftingTreeNodeAccessor",
"ae2.accessor.MEStorageMenuAccessor",
"ae2.accessor.PatternEncodingTermMenuAccessor",
"ae2.accessor.PatternProviderLogicAccessor",
"ae2.accessor.PatternProviderLogicPatternInputsAccessor",
"ae2.accessor.PatternProviderMenuAdvancedAccessor",
"ae2WTlib.ContainerUWirelessExPatternTerminalMixin",
"autopattern.CraftingCalculationAccessor",
"autopattern.CraftingServiceGetProvidersMixin",
"autopattern.CraftingTreeNodeAccessor",
"autopattern.CraftingTreeProcessMixin",
"extendedae.ContainerExPatternProviderMixin",
"extendedae.ContainerExPatternTerminalMixin",
"extendedae.ContainerWirelessExPatternTerminalMixin",