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; } }