fix(maps): restore held and framed map rendering - #425
Closed
AlexProgrammerDE wants to merge 8 commits into
Closed
AlexProgrammerDE wants to merge 8 commits into
AlexProgrammerDE wants to merge 8 commits into
Conversation
Translate Bedrock map updates in the regular protocol path and request map data when a filled map first appears. Populate item frame entities from block entity items and correct palette color conversion so held and framed maps render consistently.
Bedrock 1.26.51 sends an independent presence byte for each optional map field. Reading a legacy update mask left pixel data in the packet and produced blank maps or client disconnects. Decode the separate tracked actor and decoration lists and consume all pixel fields. Live map pixels arrive as RGBA bytes in a little-endian integer. Use that channel order when selecting Java map palette colors so foliage does not appear teal.
Route Java clicks on synthetic item frames to Bedrock block use transactions, and keep the reverse frame entity lookup in sync with removal. Look up frame tags from the original Bedrock chunk palette because Java palette remapping can change its indices and previously caused a disconnect. Cache map color matches by full RGB value within each conversion. Nearby colors can share a quantized key yet require different Java palette entries.
Merge the promoted protocol implementation into the map rendering PR. Reuse the core item interaction flow for framed maps, retain map requests for held items, and keep map packet handling registered once.
Collaborator
Author
|
Only blocker on this right now is I gotta figure out if maps actually have the right colors for some blocks. |
Merge the current main branch and reconcile the map handlers with renamed core APIs. Apply the new Checkstyle rules to map translation and palette code while preserving held and framed map behavior.
Bring in the latest chunk completion and request scheduling changes while preserving held and framed map handling. The merged code passes the full Gradle build.
AlexProgrammerDE
marked this pull request as ready for review
September 25, 2026 10:12
Collaborator
Author
AlexProgrammerDE
requested review from
Exterminate5573 and
RaphiMC
and removed request for
RaphiMC
September 25, 2026 10:13
Java exposes Bedrock frame blocks as synthetic entities, so its attack packet was discarded by the normal entity lookup. Route frame attacks to the block action path at the frame position and face. Regenerate the player action and auth input IDs from the 1.26.51 metadata used by this bridge. The checked-in preview IDs prevented the server from interpreting block actions. Teach the enum generator to use ordinal IDs when the release metadata omits explicit binary values.
Restore the PR to its previous map scope while the frame attack behavior remains unverified.
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.


Summary
Restore filled maps in the hand and in item frames. Translate current Bedrock map packets in the regular protocol path, keep map IDs stable across item and pixel updates, and send Java frame entities the item and rotation stored in Bedrock block entities. Handle clicks on those synthetic entities without disconnecting.
Why the unusual changes are needed
MAP_INFO_REQUESTwith a zero client-pixel count. Zero means it has no map pixels yet, so the server sends the image.+0.5on each coordinate), with Bedrock's facing value in the entity data. The prior corner position misaligned the visible frame. The frame item and rotation come from the Bedrock block entity and are updated when that block entity changes, so an already filled frame and a newly filled frame both render.Verification
./gradlew build --offline --no-daemonpasses, including the color conversion tests.