From 636f40eee5e3c2a07fe3d87a08efe1a43810daef Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Tue, 20 Oct 2020 02:52:26 +0200 Subject: [PATCH] fixed network locks not being resolved when canceling crafting requests --- .../pipe/modules/retrieval/RetrievalModuleItem.java | 8 ++++---- .../prettypipes/terminal/ItemTerminalTileEntity.java | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/ellpeck/prettypipes/pipe/modules/retrieval/RetrievalModuleItem.java b/src/main/java/de/ellpeck/prettypipes/pipe/modules/retrieval/RetrievalModuleItem.java index 1a6ffb8..c022895 100644 --- a/src/main/java/de/ellpeck/prettypipes/pipe/modules/retrieval/RetrievalModuleItem.java +++ b/src/main/java/de/ellpeck/prettypipes/pipe/modules/retrieval/RetrievalModuleItem.java @@ -55,10 +55,10 @@ public class RetrievalModuleItem extends ModuleItem { Pair dest = tile.getAvailableDestination(copy, true, this.preventOversending); if (dest == null) continue; - // are we already waiting for crafting results? If so, don't request more - if (network.getCurrentlyCraftingAmount(tile.getPos(), copy, equalityTypes) >= this.maxExtraction) - break; - if (network.requestItem(tile.getPos(), dest.getLeft(), dest.getRight(), equalityTypes).isEmpty()) + ItemStack remain = dest.getRight().copy(); + // are we already waiting for crafting results? If so, don't request those again + remain.shrink(network.getCurrentlyCraftingAmount(tile.getPos(), copy, equalityTypes)); + if (network.requestItem(tile.getPos(), dest.getLeft(), remain, equalityTypes).isEmpty()) break; } } diff --git a/src/main/java/de/ellpeck/prettypipes/terminal/ItemTerminalTileEntity.java b/src/main/java/de/ellpeck/prettypipes/terminal/ItemTerminalTileEntity.java index 121b10d..58ec91f 100644 --- a/src/main/java/de/ellpeck/prettypipes/terminal/ItemTerminalTileEntity.java +++ b/src/main/java/de/ellpeck/prettypipes/terminal/ItemTerminalTileEntity.java @@ -208,6 +208,8 @@ public class ItemTerminalTileEntity extends TileEntity implements INamedContaine for (Pair craftable : network.getAllCraftables(pipe.getPos())) { PipeTileEntity otherPipe = network.getPipe(craftable.getLeft()); if (otherPipe != null) { + for (NetworkLock lock : otherPipe.craftIngredientRequests) + network.resolveNetworkLock(lock); otherPipe.craftIngredientRequests.clear(); otherPipe.craftResultRequests.clear(); }