From ff428bf5382faf7f13238ae3db088f74819c0573 Mon Sep 17 00:00:00 2001 From: slprime <31038811+slprime@users.noreply.github.com> Date: Sun, 28 Jun 2026 20:11:27 +0300 Subject: [PATCH] Allow plugins to force fill mode for overlay button (#960) --- src/main/java/codechicken/nei/api/IOverlayHandler.java | 5 +++++ .../java/codechicken/nei/recipe/GuiOverlayButton.java | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/codechicken/nei/api/IOverlayHandler.java b/src/main/java/codechicken/nei/api/IOverlayHandler.java index a0e77630..08f1d72b 100644 --- a/src/main/java/codechicken/nei/api/IOverlayHandler.java +++ b/src/main/java/codechicken/nei/api/IOverlayHandler.java @@ -8,6 +8,7 @@ import java.util.stream.Collectors; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; +import codechicken.nei.NEIClientConfig; import codechicken.nei.PositionedStack; import codechicken.nei.recipe.GuiOverlayButton.ItemOverlayState; import codechicken.nei.recipe.IRecipeHandler; @@ -32,6 +33,10 @@ public interface IOverlayHandler { return false; } + default boolean requireShiftForOverlayRecipe() { + return NEIClientConfig.requireShiftForOverlayRecipe(); + } + default List presenceOverlay(GuiContainer firstGui, IRecipeHandler recipe, int recipeIndex) { final List itemPresenceSlots = new ArrayList<>(); final List ingredients = recipe.getIngredientStacks(recipeIndex); diff --git a/src/main/java/codechicken/nei/recipe/GuiOverlayButton.java b/src/main/java/codechicken/nei/recipe/GuiOverlayButton.java index d265c401..40eabdff 100644 --- a/src/main/java/codechicken/nei/recipe/GuiOverlayButton.java +++ b/src/main/java/codechicken/nei/recipe/GuiOverlayButton.java @@ -19,6 +19,7 @@ import codechicken.nei.LayoutManager; import codechicken.nei.NEIClientConfig; import codechicken.nei.NEIClientUtils; import codechicken.nei.PositionedStack; +import codechicken.nei.api.IOverlayHandler; import codechicken.nei.bookmark.BookmarkGrid; import codechicken.nei.drawable.DrawableBuilder; import codechicken.nei.drawable.DrawableResource; @@ -96,13 +97,18 @@ public class GuiOverlayButton extends GuiRecipeButton { super(handlerRef, x, y, handlerRef.recipeIndex + BUTTON_ID_SHIFT, "+"); this.firstGui = firstGui != null && firstGui.inventorySlots != null ? firstGui : null; + IOverlayHandler overlayHandler = null; + if (this.firstGui != null) { + overlayHandler = this.handlerRef.getOverlayHandler(this.firstGui); this.canUseOverlayRenderer = this.handlerRef.getRecipeOverlayRenderer(this.firstGui) != null; this.canFillCraftingGrid = this.handlerRef.canFillCraftingGrid(this.firstGui); - this.hasOverlay = this.canUseOverlayRenderer || this.handlerRef.getOverlayHandler(this.firstGui) != null; + this.hasOverlay = this.canUseOverlayRenderer || overlayHandler != null; } - setRequireShiftForOverlayRecipe(NEIClientConfig.requireShiftForOverlayRecipe()); + setRequireShiftForOverlayRecipe( + overlayHandler != null ? overlayHandler.requireShiftForOverlayRecipe() + : NEIClientConfig.requireShiftForOverlayRecipe()); ingredientsOverlay(); }