Skip to content

Commit 08df2fd

Browse files
fix logic issues. fix gui showing busy and unmergeable cpus
1 parent 69fb3c5 commit 08df2fd

File tree

4 files changed

+36
-13
lines changed

4 files changed

+36
-13
lines changed

src/main/java/appeng/client/gui/me/crafting/CraftConfirmScreen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ protected void updateBeforeRender() {
9595
} else {
9696
cpuDetails = GuiText.ConfirmCraftNoCpu.text();
9797
}
98-
if (menu.craftMatches()) {
98+
if (menu.selectedMatches()) {
9999
this.start.setMessage(GuiText.Merge.text());
100100
} else {
101101
this.start.setMessage(GuiText.Start.text());

src/main/java/appeng/crafting/execution/CraftingCpuLogic.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.util.UUID;
2323
import java.util.function.Consumer;
2424

25+
import appeng.crafting.CraftingLinkNexus;
2526
import com.google.common.base.Preconditions;
2627

2728
import org.jetbrains.annotations.Nullable;
@@ -476,7 +477,11 @@ public ICraftingLink getLastLink() {
476477

477478
public boolean isSameRequester(ICraftingRequester requester) {
478479
if (this.job != null) {
479-
return this.job.link.getTie().getRequest().getRequester() == requester;
480+
CraftingLinkNexus tie = this.job.link.getTie();
481+
if (tie == null) {
482+
return requester == null;
483+
}
484+
return tie.isRequester(requester);
480485
}
481486
return false;
482487
}

src/main/java/appeng/me/service/CraftingService.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -381,16 +381,17 @@ private CraftingCPUCluster findSuitableCraftingCPU(ICraftingPlan job, boolean pr
381381
offline++;
382382
continue;
383383
}
384+
boolean mayMerge = false;
384385
if (cpu.isBusy()) {
385-
if (!cpu.craftingLogic.getFinalJobOutput().what().equals(job.finalOutput().what())) {
386-
busy++;
387-
continue;
388-
} else if (!cpu.craftingLogic.isSameRequester(requestingMachine)) {
389-
busy++;
390-
continue;
386+
if (cpu.craftingLogic.getFinalJobOutput().what().equals(job.finalOutput().what())) {
387+
if (cpu.craftingLogic.isSameRequester(requestingMachine)) {
388+
if (cpu.getAvailableStorage() >= job.bytes() + cpu.craftingLogic.getCurrentJobSize()) {
389+
mayMerge = true;
390+
}
391+
}
391392
}
392-
if (cpu.getAvailableStorage() < job.bytes() + cpu.craftingLogic.getCurrentJobSize()) {
393-
tooSmall++;
393+
if (!mayMerge) {
394+
busy++;
394395
continue;
395396
}
396397
}

src/main/java/appeng/menu/me/crafting/CraftConfirmMenu.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import appeng.api.networking.crafting.ICraftingService;
3131
import appeng.api.networking.crafting.ICraftingSubmitResult;
3232
import appeng.api.networking.crafting.UnsuitableCpus;
33+
import appeng.me.cluster.implementations.CraftingCPUCluster;
3334
import org.jetbrains.annotations.Nullable;
3435

3536
import net.minecraft.network.FriendlyByteBuf;
@@ -253,12 +254,28 @@ private boolean cpuMatches(ICraftingCPU c) {
253254
if (this.plan == null) {
254255
return true;
255256
}
257+
if (c.isBusy()) {
258+
if (craftMatches(c)) {
259+
if (c instanceof CraftingCPUCluster cpuCluster) {
260+
if (cpuCluster.craftingLogic.isSameRequester(null)) {
261+
return c.getAvailableStorage() >= this.plan.usedBytes() + cpuCluster.craftingLogic.getCurrentJobSize();
262+
}
263+
}
264+
}
265+
return false;
266+
}
256267
return c.getAvailableStorage() >= this.plan.usedBytes();
257268
}
269+
public boolean craftMatches (ICraftingCPU c) {
270+
if (plan != null) {
271+
return this.plan.crafting().matches(c.getJobStatus().crafting());
272+
}
273+
return false;
274+
}
258275

259-
public boolean craftMatches () {
260-
if (stackToCraft != null && plan != null) {
261-
return stackToCraft.what().equals(this.plan.crafting());
276+
public boolean selectedMatches () {
277+
if (plan != null) {
278+
return this.plan.crafting().matches(this.stackToCraft);
262279
}
263280
return false;
264281
}

0 commit comments

Comments
 (0)