From cf41d53d5c52c88bcef55ee8f8335084f703105f Mon Sep 17 00:00:00 2001 From: slprime Date: Fri, 14 Aug 2026 22:35:35 +0300 Subject: [PATCH] Add Accepts Label --- .../nei/ItemsTooltipLineHandler.java | 5 ++++ .../java/codechicken/nei/PositionedStack.java | 26 +++++++++++++++++-- .../AcceptsFollowingTooltipLineHandler.java | 2 +- .../nei/recipe/NEIRecipeWidget.java | 4 +++ 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/src/main/java/codechicken/nei/ItemsTooltipLineHandler.java b/src/main/java/codechicken/nei/ItemsTooltipLineHandler.java index 383746325..cf5625aa0 100644 --- a/src/main/java/codechicken/nei/ItemsTooltipLineHandler.java +++ b/src/main/java/codechicken/nei/ItemsTooltipLineHandler.java @@ -92,6 +92,11 @@ public void setLabelColor(EnumChatFormatting color) { this.labelColor = color; } + public void setLabel(String label) { + this.label = label; + this.size.width = Math.max(this.columns * SLOT_SIZE, fontRenderer.getStringWidth(this.label) + 15); + } + @Override public void draw(int x, int y) { if (this.length == 0) return; diff --git a/src/main/java/codechicken/nei/PositionedStack.java b/src/main/java/codechicken/nei/PositionedStack.java index 302ad8b7e..a203ad426 100644 --- a/src/main/java/codechicken/nei/PositionedStack.java +++ b/src/main/java/codechicken/nei/PositionedStack.java @@ -37,6 +37,10 @@ public class PositionedStack implements Cloneable { protected int chance = CHANCE_FULL; protected boolean permutated = false; + protected String acceptsLabel; + protected List tooltip; + protected List badges; + public PositionedStack(Object object, int x, int y, boolean genPerms) { items = NEIServerUtils.extractRecipeItems(object); relx = x; @@ -90,12 +94,28 @@ public void setMaxSize(int i) { for (ItemStack item : items) if (item.stackSize > i) item.stackSize = i; } + public void setAcceptsLabel(String acceptsLabel) { + this.acceptsLabel = acceptsLabel; + } + + public String getAcceptsLabel() { + return this.acceptsLabel; + } + + public void setBadges(List badges) { + this.badges = badges; + } + public List getBadges() { - return null; + return this.badges; + } + + public void setTooltip(List tooltip) { + this.tooltip = tooltip; } public List getTooltip() { - return null; + return this.tooltip; } public int getChance() { @@ -111,6 +131,8 @@ public PositionedStack copy() { PositionedStack pStack = (PositionedStack) super.clone(); pStack.items = Arrays.stream(this.items).map(ItemStack::copy).toArray(ItemStack[]::new); pStack.item = this.item == null ? null : this.item.copy(); + pStack.tooltip = this.tooltip == null ? null : new ArrayList<>(this.tooltip); + pStack.badges = this.badges == null ? null : new ArrayList<>(this.badges); return pStack; } catch (CloneNotSupportedException e) { throw new RuntimeException(e); diff --git a/src/main/java/codechicken/nei/recipe/AcceptsFollowingTooltipLineHandler.java b/src/main/java/codechicken/nei/recipe/AcceptsFollowingTooltipLineHandler.java index 99c15e22d..6343fb875 100644 --- a/src/main/java/codechicken/nei/recipe/AcceptsFollowingTooltipLineHandler.java +++ b/src/main/java/codechicken/nei/recipe/AcceptsFollowingTooltipLineHandler.java @@ -15,7 +15,7 @@ public class AcceptsFollowingTooltipLineHandler extends ItemsTooltipLineHandler public Object tooltipGUID; - public AcceptsFollowingTooltipLineHandler(Object tooltipGUID, List items, ItemStack activeStack, + protected AcceptsFollowingTooltipLineHandler(Object tooltipGUID, List items, ItemStack activeStack, int maxRows) { super(NEIClientUtils.translate("recipe.accepts"), items, false, maxRows); this.tooltipGUID = tooltipGUID; diff --git a/src/main/java/codechicken/nei/recipe/NEIRecipeWidget.java b/src/main/java/codechicken/nei/recipe/NEIRecipeWidget.java index 337f0e29e..a761b49a1 100644 --- a/src/main/java/codechicken/nei/recipe/NEIRecipeWidget.java +++ b/src/main/java/codechicken/nei/recipe/NEIRecipeWidget.java @@ -436,6 +436,10 @@ public List handleItemTooltip(ItemStack itemstack, int mousex, int mouse || this.acceptsFollowingTooltipLineHandler.tooltipGUID != hovered) { this.acceptsFollowingTooltipLineHandler = AcceptsFollowingTooltipLineHandler .of(hovered, this.permutations.get(hovered), hovered.item); + + if (this.acceptsFollowingTooltipLineHandler != null && hovered.getAcceptsLabel() != null) { + this.acceptsFollowingTooltipLineHandler.setLabel(hovered.getAcceptsLabel()); + } } } else if (this.acceptsFollowingTooltipLineHandler != null) { this.acceptsFollowingTooltipLineHandler = null;