From cd7d014704ca633fb10d8bb6a9c4f33b55a006ed Mon Sep 17 00:00:00 2001 From: slprime <31038811+slprime@users.noreply.github.com> Date: Fri, 11 Jul 2025 17:36:10 +0300 Subject: [PATCH] Bookmarks Chains: Use active Item as preferred if exists (#664) Co-authored-by: Caedis --- .../nei/recipe/chain/RecipeChainMath.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/codechicken/nei/recipe/chain/RecipeChainMath.java b/src/main/java/codechicken/nei/recipe/chain/RecipeChainMath.java index 3de62b73..2c672db3 100644 --- a/src/main/java/codechicken/nei/recipe/chain/RecipeChainMath.java +++ b/src/main/java/codechicken/nei/recipe/chain/RecipeChainMath.java @@ -137,15 +137,26 @@ public class RecipeChainMath { for (BookmarkItem ingrItem : this.recipeIngredients) { if (ingrItem.factor > 0 && recipeId.equals(ingrItem.recipeId) && !preferredItems.containsKey(ingrItem)) { + BookmarkItem activeItem = null; BookmarkItem prefItem = null; for (BookmarkItem item : this.recipeResults) { - if (item.factor > (prefItem == null ? 0 : prefItem.factor) && item.containsItems(ingrItem) - && !visited.contains(item.recipeId)) { - prefItem = item; + if (item.factor > 0 && !visited.contains(item.recipeId) && item.containsItems(ingrItem)) { + + if ((activeItem == null || item.factor > activeItem.factor) && NEIClientUtils + .areStacksSameTypeCraftingWithNBT(ingrItem.itemStack, item.itemStack)) { + activeItem = item; + } else if (prefItem == null || item.factor > prefItem.factor) { + prefItem = item; + } + } } + if (activeItem != null) { + prefItem = activeItem; + } + if (prefItem != null) { preferredItems.put(ingrItem, prefItem); collectPreferredItems(prefItem.recipeId, preferredItems, visited);