Fix [item] placeholder failing on Shulker Boxes with large contents#334
Open
daniel-skopek wants to merge 1 commit into
Open
Fix [item] placeholder failing on Shulker Boxes with large contents#334daniel-skopek wants to merge 1 commit into
daniel-skopek wants to merge 1 commit into
Conversation
Prevents oversized chat packets when displaying containers filled with enchanted items by trimming minecraft:container from the data components used in the hover event.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
When using
[item]in chat while holding a Shulker Box filled with items that have many enchantments, persistent data, and custom resource pack textures, the chat packet JSON exceeds Minecraft's ~32767 character limit. The plugin cancels the oversized packet and sends the original unmodified message, displaying<chat=UUID:[item]:>in chat instead of the item.Root Cause
ItemNBTUtils.getNMSItemStackDataComponents()serializes all data components includingminecraft:container(the Shulker Box's 27 stored items with their full NBT) into the chat hover event. Even with the existing trimming logic, the threshold gap betweenItemTagMaxLength(30767) andPacketStringMaxLength(32767) is too narrow, allowing container-heavy items to slip through untrimmed.Fix
ItemDisplay.java:188— AddeduseInventoryView(item) ||to the trimming condition. Items with non-empty containers (Shulker Boxes, etc.) are now always trimmed, creating a freshItemStackwithoutminecraft:containerdata while preserving display name, lore, and enchantments.ItemDisplay.java:225-226— Removedminecraft:containerandminecraft:bundle_contentsfrom the data components map as an additional safety net on 1.20.5+.Container contents remain fully accessible through the existing click-to-view inventory GUI.