diff --git a/forge/src/main/java/ru/zznty/create_factory_logistics/mixin/logistics/panel/FactoryPanelRequestMixin.java b/forge/src/main/java/ru/zznty/create_factory_logistics/mixin/logistics/panel/FactoryPanelRequestMixin.java index b4f6698..72dc200 100644 --- a/forge/src/main/java/ru/zznty/create_factory_logistics/mixin/logistics/panel/FactoryPanelRequestMixin.java +++ b/forge/src/main/java/ru/zznty/create_factory_logistics/mixin/logistics/panel/FactoryPanelRequestMixin.java @@ -245,7 +245,8 @@ private void tickRequests(Operation original) { // Map of result -> requests of its ingredients // Input items may come from differing networks - Map> requests = new HashMap<>(); + Map> requests = new LinkedHashMap<>(); + Set contextsWithRequests = new HashSet<>(); // Collect request distributions for (PanelRequestedStacks requestContext : toRequest) { @@ -255,6 +256,9 @@ private void tickRequests(Operation original) { GenericOrder order = GenericOrder.of(requestContext, entry.getValue()); Multimap request = GenericLogisticsManager.findPackagersForRequest( entry.getKey(), order, null, requestContext.recipeAddress()); + if (!request.isEmpty()) { + contextsWithRequests.add(requestContext); + } requests.merge(requestContext, request, (a, b) -> { a.putAll(b); @@ -274,11 +278,20 @@ private void tickRequests(Operation original) { GenericLogisticsManager.performPackageRequests(entry); // Keep the output promises - for (Map.Entry> entry : requests.entrySet()) { - RequestPromiseQueue promises = Create.LOGISTICS.getQueuedPromises(entry.getKey().resultNetwork()); + for (PanelRequestedStacks requestContext : toRequest) { + if (!contextsWithRequests.contains(requestContext)) { + continue; + } + + Multimap request = requests.get(requestContext); + if (request == null || !request.isEmpty()) { + continue; + } + + RequestPromiseQueue promises = Create.LOGISTICS.getQueuedPromises(requestContext.resultNetwork()); // if all requests were sent, add the output promise - if (promises != null && entry.getValue().isEmpty()) - promises.add(new RequestPromise(BigGenericStack.of(entry.getKey().result()).asStack())); + if (promises != null) + promises.add(new RequestPromise(BigGenericStack.of(requestContext.result()).asStack())); } panelBE.advancements.awardPlayer(AllAdvancements.FACTORY_GAUGE);