diff --git a/src/main/java/codechicken/nei/api/ShortcutInputHandler.java b/src/main/java/codechicken/nei/api/ShortcutInputHandler.java index 50de984f..7d1f7e42 100644 --- a/src/main/java/codechicken/nei/api/ShortcutInputHandler.java +++ b/src/main/java/codechicken/nei/api/ShortcutInputHandler.java @@ -108,6 +108,7 @@ public abstract class ShortcutInputHandler { if (gui instanceof GuiRecipe) { ingredients = ((GuiRecipe) gui).getFocusedRecipeIngredients(); handlerName = ((GuiRecipe) gui).getHandlerName(); + stack.stackSize = ((GuiRecipe) gui).prepareFocusedRecipeResultStackSize(stack); } ItemPanels.bookmarkPanel.addOrRemoveItem(stack, handlerName, ingredients, saveIngredients, saveStackSize); diff --git a/src/main/java/codechicken/nei/recipe/GuiRecipe.java b/src/main/java/codechicken/nei/recipe/GuiRecipe.java index 770d8f51..8dedb8a1 100644 --- a/src/main/java/codechicken/nei/recipe/GuiRecipe.java +++ b/src/main/java/codechicken/nei/recipe/GuiRecipe.java @@ -273,6 +273,32 @@ public abstract class GuiRecipe extends GuiContainer return null; } + public int prepareFocusedRecipeResultStackSize(ItemStack stackover) { + final int recipesPerPage = getRecipesPerPage(); + + for (int idx = page * recipesPerPage; idx < handler.numRecipes() && idx < (page + 1) * recipesPerPage; idx++) { + if (recipeInFocus(idx)) { + final PositionedStack result = handler.getResultStack(idx); + int stackSize = 0; + + if (result != null && StackInfo.equalItemAndNBT(result.item, stackover, true)) { + stackSize += result.item.stackSize; + } + + final List stacks = handler.getOtherStacks(idx); + for (PositionedStack pStack : stacks) { + if (StackInfo.equalItemAndNBT(pStack.item, stackover, true)) { + stackSize += pStack.item.stackSize; + } + } + + return stackSize; + } + } + + return stackover.stackSize; + } + protected boolean recipeInFocus(int idx) { final PositionedStack result = handler.getResultStack(idx); if (result != null && isMouseOver(result, idx)) {