Skip to content

Commit 59aaff3

Browse files
author
Circulate233
committed
fix #29
1 parent e54d831 commit 59aaff3

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

src/main/java/com/circulation/random_complement/mixin/ae2/AccessorCraftingTreeNode.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,20 @@
44
import appeng.api.storage.data.IItemList;
55
import appeng.crafting.CraftingJob;
66
import appeng.crafting.CraftingTreeNode;
7+
import appeng.crafting.CraftingTreeProcess;
78
import org.spongepowered.asm.mixin.Mixin;
89
import org.spongepowered.asm.mixin.gen.Accessor;
910

11+
import java.util.ArrayList;
12+
1013
@Mixin(value = CraftingTreeNode.class, remap = false)
1114
public interface AccessorCraftingTreeNode {
1215
@Accessor
1316
IItemList<IAEItemStack> getUsed();
1417

18+
@Accessor
19+
ArrayList<CraftingTreeProcess> getNodes();
20+
1521
@Accessor
1622
long getHowManyEmitted();
1723

src/main/java/com/circulation/random_complement/mixin/ae2/miss_craft/MixinCraftingJob.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,25 @@
11
package com.circulation.random_complement.mixin.ae2.miss_craft;
22

33
import appeng.api.networking.crafting.ICraftingGrid;
4+
import appeng.api.networking.crafting.ICraftingPatternDetails;
45
import appeng.api.networking.security.IActionSource;
56
import appeng.api.storage.data.IAEItemStack;
67
import appeng.crafting.CraftBranchFailure;
78
import appeng.crafting.CraftingJob;
89
import appeng.crafting.CraftingTreeNode;
910
import appeng.crafting.MECraftingInventory;
11+
import co.neeve.nae2.common.helpers.VirtualPatternDetails;
1012
import com.circulation.random_complement.common.interfaces.AEIgnoredInputMachine;
1113
import com.circulation.random_complement.common.interfaces.RCCraftingJob;
1214
import com.circulation.random_complement.mixin.ae2.AccessorCraftingTreeNode;
15+
import com.circulation.random_complement.mixin.ae2.AccessorCraftingTreeProcess;
16+
import com.google.common.collect.ImmutableCollection;
1317
import com.llamalad7.mixinextras.sugar.Local;
1418
import com.llamalad7.mixinextras.sugar.Share;
1519
import com.llamalad7.mixinextras.sugar.ref.LocalLongRef;
20+
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
1621
import net.minecraft.world.World;
22+
import net.minecraftforge.fml.common.Loader;
1723
import org.spongepowered.asm.mixin.Final;
1824
import org.spongepowered.asm.mixin.Intrinsic;
1925
import org.spongepowered.asm.mixin.Mixin;
@@ -23,6 +29,8 @@
2329
import org.spongepowered.asm.mixin.injection.Inject;
2430
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
2531

32+
import java.util.Collection;
33+
2634
@Mixin(value = CraftingJob.class, remap = false)
2735
public abstract class MixinCraftingJob implements RCCraftingJob {
2836

@@ -61,6 +69,10 @@ public void setLock(boolean lock) {
6169
private IAEItemStack r$wait;
6270
@Unique
6371
private boolean r$specialDeficiency;
72+
@Unique
73+
private static final boolean r$loadNae2 = Loader.isModLoaded("nae2");
74+
@Unique
75+
private static final boolean r$loadNee = Loader.isModLoaded("neenergistics");
6476

6577
@SuppressWarnings("DiscouragedShift")
6678
@Inject(method = "run", at = @At(value = "INVOKE", target = "Lappeng/crafting/MECraftingInventory;ignore(Lappeng/api/storage/data/IAEItemStack;)V", ordinal = 0, shift = At.Shift.BEFORE))
@@ -95,8 +107,20 @@ public void supplementaryOutput(CallbackInfo ci, @Share("rcOutput") LocalLongRef
95107
var tree = (AccessorCraftingTreeNode) this.tree;
96108
if (tree.isCanEmit()) return;
97109
final long out = stackLocalRef.get();
98-
var details = this.cc.getCraftingFor(this.output, null, 0, this.world);
99-
if (details == null || details.isEmpty()) throw new CraftBranchFailure(this.output, 0);
110+
Collection<ICraftingPatternDetails> details = this.cc.getCraftingFor(this.output, null, 0, this.world);
111+
if (details == null) return;
112+
if (r$loadNae2 && !r$loadNee) {
113+
for (var node : tree.getNodes()) {
114+
var d = ((AccessorCraftingTreeProcess) node).getDetails();
115+
if (d instanceof VirtualPatternDetails) {
116+
if (details instanceof ImmutableCollection<?>) {
117+
details = new ObjectArrayList<>(details);
118+
}
119+
details.add(d);
120+
}
121+
}
122+
}
123+
if (details.isEmpty()) throw new CraftBranchFailure(this.output, 0);
100124
if (out > 0) {
101125
for (var detail : details) {
102126
IAEItemStack repeatInput = this.output.copy().setStackSize(0);

0 commit comments

Comments
 (0)