Skip to content

Commit bffe68f

Browse files
committed
调整实现
1 parent df28a13 commit bffe68f

File tree

7 files changed

+37
-12
lines changed

7 files changed

+37
-12
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.circulation.random_complement.common.interfaces;
2+
3+
public interface AEIgnoredInputMachine {
4+
5+
boolean r$isIgnored();
6+
7+
void r$setIgnored(boolean b);
8+
}

src/main/java/com/circulation/random_complement/common/interfaces/RCCraftingJob.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ public interface RCCraftingJob {
1010

1111
void setSpecialDeficiency(boolean b);
1212

13-
boolean isPlayer();
13+
boolean canIgnoredInput();
1414
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,17 @@
1919
public abstract class MixinContainerCraftConfirm implements RCAEBaseContainer {
2020

2121
@Unique
22-
private boolean r$isPlayer = false;
22+
private boolean r$canIgnoredInput = false;
2323

2424
@WrapOperation(method = "detectAndSendChanges", at = @At(value = "INVOKE", target = "Lappeng/api/networking/crafting/ICraftingJob;isSimulation()Z", ordinal = 1, remap = false))
2525
public boolean isSimulation1(ICraftingJob instance, Operation<Boolean> original) {
26-
if (!r$isPlayer) return original.call(instance);
26+
if (!r$canIgnoredInput) return original.call(instance);
2727
return true;
2828
}
2929

3030
@WrapOperation(method = "detectAndSendChanges", at = @At(value = "INVOKE", target = "Lappeng/api/networking/crafting/ICraftingJob;isSimulation()Z", ordinal = 2, remap = false))
3131
public boolean isSimulation2(ICraftingJob instance, Operation<Boolean> original) {
32-
if (!r$isPlayer) return original.call(instance);
32+
if (!r$canIgnoredInput) return original.call(instance);
3333
return true;
3434
}
3535

@@ -38,7 +38,7 @@ public void setJob(Future<ICraftingJob> job, CallbackInfo ci) {
3838
if (job == null) return;
3939
try {
4040
if (job.get() instanceof RCCraftingJob j) {
41-
this.r$isPlayer = j.isPlayer();
41+
this.r$canIgnoredInput = j.canIgnoredInput();
4242
}
4343
} catch (InterruptedException | ExecutionException ignored) {
4444
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public void onStop(IAEItemStack input, Actionable type, IActionSource src, Callb
6262
@Inject(method = "submitJob", at = @At(value = "INVOKE", target = "Lappeng/crafting/CraftingTreeNode;setJob(Lappeng/crafting/MECraftingInventory;Lappeng/me/cluster/implementations/CraftingCPUCluster;Lappeng/api/networking/security/IActionSource;)V"))
6363
public void submitJob(IGrid g, ICraftingJob job, IActionSource src, ICraftingRequester requestingMachine, CallbackInfoReturnable<ICraftingLink> cir) {
6464
var j = (RCCraftingJob) job;
65-
if (!j.isPlayer()) return;
65+
if (!j.canIgnoredInput()) return;
6666
var s = j.getWaitingItem();
6767
if (s != null && s.getStackSize() > 0) {
6868
r$waitInput = s.copy();

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import appeng.crafting.CraftingJob;
77
import appeng.crafting.CraftingTreeNode;
88
import appeng.crafting.MECraftingInventory;
9+
import com.circulation.random_complement.common.interfaces.AEIgnoredInputMachine;
910
import com.circulation.random_complement.common.interfaces.RCCraftingJob;
1011
import com.circulation.random_complement.mixin.ae2.AccessorCraftingTreeNode;
1112
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
@@ -50,7 +51,7 @@ public abstract class MixinCraftingJob implements RCCraftingJob {
5051

5152
@WrapOperation(method = "run", at = @At(value = "INVOKE", target = "Lappeng/crafting/MECraftingInventory;ignore(Lappeng/api/storage/data/IAEItemStack;)V", ordinal = 0))
5253
public void record(MECraftingInventory instance, IAEItemStack what, Operation<Void> original, @Share("rcOutput") LocalLongRef stackLocalRef) {
53-
if (!isPlayer()) return;
54+
if (!canIgnoredInput()) return;
5455
var stack = instance.getItemList().findPrecise(what);
5556
if (stack != null) {
5657
var size = stack.getStackSize();
@@ -65,13 +66,16 @@ public IAEItemStack getWaitingItem() {
6566
}
6667

6768
@Intrinsic
68-
public boolean isPlayer() {
69-
return this.actionSrc.player().isPresent();
69+
public boolean canIgnoredInput() {
70+
if (this.actionSrc.player().isPresent()) return true;
71+
if (this.actionSrc.machine().orElse(null) instanceof AEIgnoredInputMachine a)
72+
return a.r$isIgnored();
73+
return false;
7074
}
7175

7276
@Inject(method = "run", at = @At(value = "INVOKE", target = "Lappeng/crafting/CraftingTreeNode;request(Lappeng/crafting/MECraftingInventory;JLappeng/api/networking/security/IActionSource;)Lappeng/api/storage/data/IAEItemStack;", shift = At.Shift.AFTER, ordinal = 0))
7377
public void supplementaryOutput(CallbackInfo ci, @Share("rcOutput") LocalLongRef stackLocalRef) {
74-
if (!isPlayer()) return;
78+
if (!canIgnoredInput()) return;
7579
var tree = (AccessorCraftingTreeNode) this.tree;
7680
if (tree.isCanEmit()) return;
7781
final long out = stackLocalRef.get();

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,6 @@ public void notRecursive(ICraftingPatternDetails details, CallbackInfoReturnable
117117

118118
@Intrinsic
119119
private boolean isPlayer() {
120-
return ((RCCraftingJob) job).isPlayer();
120+
return ((RCCraftingJob) job).canIgnoredInput();
121121
}
122122
}

src/main/java/com/circulation/random_complement/mixin/threng/MixinTileLevelMaintainer.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import appeng.me.GridAccessException;
1919
import appeng.util.Platform;
2020
import appeng.util.item.AEItemStack;
21+
import com.circulation.random_complement.common.interfaces.AEIgnoredInputMachine;
2122
import com.glodblock.github.common.item.fake.FakeFluids;
2223
import com.glodblock.github.common.item.fake.FakeItemRegister;
2324
import com.glodblock.github.integration.mek.FakeGases;
@@ -46,7 +47,7 @@
4647
import java.util.Objects;
4748

4849
@Mixin(value = TileLevelMaintainer.class, remap = false)
49-
public abstract class MixinTileLevelMaintainer extends TileNetworkDevice implements IStackWatcherHost, ICraftingRequester {
50+
public abstract class MixinTileLevelMaintainer extends TileNetworkDevice implements IStackWatcherHost, ICraftingRequester, AEIgnoredInputMachine {
5051

5152
@Shadow
5253
@AutoSerialize
@@ -68,6 +69,9 @@ public abstract class MixinTileLevelMaintainer extends TileNetworkDevice impleme
6869
@Shadow
6970
private int sleepIncrement;
7071

72+
@Unique
73+
private boolean r$isIgnored = false;
74+
7175
/**
7276
* @author circulation
7377
* @reason 删除多余的检测
@@ -244,4 +248,13 @@ public void injectCraftedItems(ICraftingLink link, IAEItemStack stack, Actionabl
244248
return !t.getRequestStacks()[index].isEmpty() && t.getRequestQtys()[index] - existing > 0L ? t.getRequestBatches()[index] : 0L;
245249
}
246250

251+
@Override
252+
public boolean r$isIgnored() {
253+
return r$isIgnored;
254+
}
255+
256+
@Override
257+
public void r$setIgnored(boolean b) {
258+
r$isIgnored = b;
259+
}
247260
}

0 commit comments

Comments
 (0)