From b5498588ba9062e9e8cd0317d98180e093f17c5e Mon Sep 17 00:00:00 2001 From: GaLi Date: Mon, 24 Nov 2025 16:53:41 +0800 Subject: [PATCH] =?UTF-8?q?=E8=99=9A=E6=8B=9F=E5=90=88=E6=88=90=E5=8D=A1?= =?UTF-8?q?=E9=80=82=E9=85=8DADV=E7=9A=84=E9=87=8F=E5=AD=90=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- .../accessor/AdvCraftingCPULogicAccessor.java | 13 ++++++++++++ .../AdvExecutingCraftingJobAccessor.java | 15 +++++++++++++ ...cutingCraftingJobTaskProgressAccessor.java | 11 ++++++++++ .../PatternProviderLogicCompatMixin.java | 21 +++++++++++++++++++ .../resources/extendedae_plus.mixins.json | 3 +++ 6 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/extendedae_plus/mixin/advancedae/accessor/AdvCraftingCPULogicAccessor.java create mode 100644 src/main/java/com/extendedae_plus/mixin/advancedae/accessor/AdvExecutingCraftingJobAccessor.java create mode 100644 src/main/java/com/extendedae_plus/mixin/advancedae/accessor/AdvExecutingCraftingJobTaskProgressAccessor.java diff --git a/build.gradle b/build.gradle index 1d900e8..797f1e4 100644 --- a/build.gradle +++ b/build.gradle @@ -88,7 +88,7 @@ dependencies { modImplementation "appeng:appliedenergistics2-forge:${ae2_version}" modImplementation "org.appliedenergistics:guideme:${guideme_version}" modImplementation "curse.maven:applied-energistics-2-wireless-terminals-459929:${wireless_terminals_version}" - modCompileOnly "curse.maven:applied-flux-965012:6755986" + modImplementation "curse.maven:applied-flux-965012:6755986" modImplementation "curse.maven:mega-cells-622112:${mega_cells_version}" //mae2 diff --git a/src/main/java/com/extendedae_plus/mixin/advancedae/accessor/AdvCraftingCPULogicAccessor.java b/src/main/java/com/extendedae_plus/mixin/advancedae/accessor/AdvCraftingCPULogicAccessor.java new file mode 100644 index 0000000..c505380 --- /dev/null +++ b/src/main/java/com/extendedae_plus/mixin/advancedae/accessor/AdvCraftingCPULogicAccessor.java @@ -0,0 +1,13 @@ +package com.extendedae_plus.mixin.advancedae.accessor; + +import net.pedroksl.advanced_ae.common.logic.AdvCraftingCPULogic; +import net.pedroksl.advanced_ae.common.logic.ExecutingCraftingJob; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(value = AdvCraftingCPULogic.class, remap = false) +public interface AdvCraftingCPULogicAccessor { + + @Accessor("job") + ExecutingCraftingJob eap$getAdvJob(); +} diff --git a/src/main/java/com/extendedae_plus/mixin/advancedae/accessor/AdvExecutingCraftingJobAccessor.java b/src/main/java/com/extendedae_plus/mixin/advancedae/accessor/AdvExecutingCraftingJobAccessor.java new file mode 100644 index 0000000..050ee8d --- /dev/null +++ b/src/main/java/com/extendedae_plus/mixin/advancedae/accessor/AdvExecutingCraftingJobAccessor.java @@ -0,0 +1,15 @@ +package com.extendedae_plus.mixin.advancedae.accessor; + +import appeng.api.crafting.IPatternDetails; +import net.pedroksl.advanced_ae.common.logic.ExecutingCraftingJob; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(value = ExecutingCraftingJob.class, remap = false) +public interface AdvExecutingCraftingJobAccessor { + + @Accessor("tasks") + Map eap$getAdvTasks(); +} diff --git a/src/main/java/com/extendedae_plus/mixin/advancedae/accessor/AdvExecutingCraftingJobTaskProgressAccessor.java b/src/main/java/com/extendedae_plus/mixin/advancedae/accessor/AdvExecutingCraftingJobTaskProgressAccessor.java new file mode 100644 index 0000000..f26631d --- /dev/null +++ b/src/main/java/com/extendedae_plus/mixin/advancedae/accessor/AdvExecutingCraftingJobTaskProgressAccessor.java @@ -0,0 +1,11 @@ +package com.extendedae_plus.mixin.advancedae.accessor; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(targets = "net.pedroksl.advanced_ae.common.logic.ExecutingCraftingJob$TaskProgress", remap = false) +public interface AdvExecutingCraftingJobTaskProgressAccessor { + + @Accessor("value") + long eap$getAdvValue(); +} diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/compat/PatternProviderLogicCompatMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/compat/PatternProviderLogicCompatMixin.java index bb0a853..36b39b7 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/compat/PatternProviderLogicCompatMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/compat/PatternProviderLogicCompatMixin.java @@ -12,6 +12,9 @@ import appeng.api.upgrades.UpgradeInventories; import appeng.helpers.patternprovider.PatternProviderLogic; import appeng.helpers.patternprovider.PatternProviderLogicHost; import appeng.me.cluster.implementations.CraftingCPUCluster; +import com.extendedae_plus.mixin.advancedae.accessor.AdvCraftingCPULogicAccessor; +import com.extendedae_plus.mixin.advancedae.accessor.AdvExecutingCraftingJobAccessor; +import com.extendedae_plus.mixin.advancedae.accessor.AdvExecutingCraftingJobTaskProgressAccessor; import com.extendedae_plus.ae.wireless.WirelessSlaveLink; import com.extendedae_plus.ae.wireless.endpoint.GenericNodeEndpointImpl; import com.extendedae_plus.api.bridge.IInterfaceWirelessLinkBridge; @@ -21,6 +24,7 @@ import com.extendedae_plus.items.materials.ChannelCardItem; import com.extendedae_plus.mixin.ae2.accessor.CraftingCpuLogicAccessor; import com.extendedae_plus.mixin.ae2.accessor.ExecutingCraftingJobAccessor; import com.extendedae_plus.util.Logger; +import net.pedroksl.advanced_ae.common.cluster.AdvCraftingCPU; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; import org.spongepowered.asm.mixin.Final; @@ -144,6 +148,23 @@ public abstract class PatternProviderLogicCompatMixin implements IUpgradeableObj } } } + continue; + } + if (cpu instanceof AdvCraftingCPU advCpu) { + var logic = advCpu.craftingLogic; + if (logic instanceof AdvCraftingCPULogicAccessor advLogicAccessor) { + var job = advLogicAccessor.eap$getAdvJob(); + if (job != null && job instanceof AdvExecutingCraftingJobAccessor advJobAccessor) { + var tasks = advJobAccessor.eap$getAdvTasks(); + var progress = tasks.get(patternDetails); + if (progress instanceof AdvExecutingCraftingJobTaskProgressAccessor advProgressAccessor) { + if (advProgressAccessor.eap$getAdvValue() <= 1) { + advCpu.cancelJob(); + break; + } + } + } + } } } } diff --git a/src/main/resources/extendedae_plus.mixins.json b/src/main/resources/extendedae_plus.mixins.json index 3780494..ad7d460 100644 --- a/src/main/resources/extendedae_plus.mixins.json +++ b/src/main/resources/extendedae_plus.mixins.json @@ -39,6 +39,9 @@ "advancedae.AdvPatternProviderLogicContainsRedirectMixin", "advancedae.accessor.AdvPatternProviderLogicPatternsAccessor", "advancedae.accessor.AdvPatternProviderMenuAdvancedAccessor", + "advancedae.accessor.AdvCraftingCPULogicAccessor", + "advancedae.accessor.AdvExecutingCraftingJobAccessor", + "advancedae.accessor.AdvExecutingCraftingJobTaskProgressAccessor", "advancedae.helpers.AdvPatternProviderLogicAdvancedMixin", "advancedae.helpers.AdvPatternProviderLogicDoublingMixin", "advancedae.menu.AdvPatternProviderMenuAdvancedMixin",