From dc0d8d457ac19c5b4dc326ae22dbb8d07f79b666 Mon Sep 17 00:00:00 2001 From: GaLicn <133291877+GaLicn@users.noreply.github.com> Date: Sat, 6 Dec 2025 00:16:39 +0800 Subject: [PATCH] =?UTF-8?q?=E8=99=9A=E6=8B=9F=E5=90=88=E6=88=90=E5=8D=A1?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E4=BB=BB=E5=8A=A1=E5=AE=8C=E6=88=90=EF=BC=8C?= =?UTF-8?q?=E8=80=8C=E9=9D=9E=E7=9B=B4=E6=8E=A5=E5=8F=96=E6=B6=88=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ae2/accessor/CraftingCpuLogicAccessor.java | 4 ++++ .../ae2/accessor/ExecutingCraftingJobAccessor.java | 14 ++++++++++++++ .../compat/PatternProviderLogicCompatMixin.java | 12 +++++++++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/accessor/CraftingCpuLogicAccessor.java b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/CraftingCpuLogicAccessor.java index f6d9590..5ed959e 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/accessor/CraftingCpuLogicAccessor.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/CraftingCpuLogicAccessor.java @@ -4,10 +4,14 @@ import appeng.crafting.execution.CraftingCpuLogic; import appeng.crafting.execution.ExecutingCraftingJob; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; @Mixin(value = CraftingCpuLogic.class, remap = false) public interface CraftingCpuLogicAccessor { @Accessor("job") ExecutingCraftingJob extendedae_plus$getJob(); + + @Invoker("finishJob") + void extendedae_plus$invokeFinishJob(boolean success); } diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/accessor/ExecutingCraftingJobAccessor.java b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/ExecutingCraftingJobAccessor.java index e59809b..8d50970 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/accessor/ExecutingCraftingJobAccessor.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/ExecutingCraftingJobAccessor.java @@ -1,6 +1,8 @@ package com.extendedae_plus.mixin.ae2.accessor; import appeng.api.crafting.IPatternDetails; +import appeng.api.stacks.GenericStack; +import appeng.crafting.CraftingLink; import appeng.crafting.execution.ExecutingCraftingJob; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @@ -12,4 +14,16 @@ public interface ExecutingCraftingJobAccessor { @Accessor("tasks") Map extendedae_plus$getTasks(); + + @Accessor("playerId") + Integer extendedae_plus$getPlayerId(); + + @Accessor("finalOutput") + GenericStack extendedae_plus$getFinalOutput(); + + @Accessor("remainingAmount") + long extendedae_plus$getRemainingAmount(); + + @Accessor("link") + CraftingLink extendedae_plus$getLink(); } 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 006691c..07499f3 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 @@ -119,6 +119,11 @@ public abstract class PatternProviderLogicCompatMixin implements IUpgradeableObj return; } + var be = this.host.getBlockEntity(); + if (be == null || be.getLevel() == null || be.getLevel().isClientSide) { + return; + } + var grid = getGrid(); if (grid == null) { return; @@ -140,7 +145,12 @@ public abstract class PatternProviderLogicCompatMixin implements IUpgradeableObj var tasks = accessor.extendedae_plus$getTasks(); var progress = tasks.get(patternDetails); if (progress != null && progress.extendedae_plus$getValue() <= 1) { - cluster.cancelJob(); + cluster.updateOutput(null); + try { + logicAccessor.extendedae_plus$invokeFinishJob(true); + } catch (Throwable ignored) { + cluster.cancelJob(); + } break; } }