Skip to content

Fix missing 26.50 blocks and connected shapes on older servers - #52

Open
TheNINJALLO wants to merge 1 commit into
EndstoneMC:mainfrom
TheNINJALLO:fix/26-50-block-states
Open

TheNINJALLO wants to merge 1 commit into
EndstoneMC:mainfrom
TheNINJALLO:fix/26-50-block-states

Conversation

@TheNINJALLO

Copy link
Copy Markdown

Problem

Minecraft 26.50 adds corner and connection properties to existing block states. On 26.40-26.45 servers, the old hashes make stairs, fences, panes, bars, and tripwire disappear for 26.50 clients. Translating only the packet schema does not repair these values, and mapping every block to its default new state leaves stair corners and connected blocks with the wrong shape.

Changes

  • Translate the 593 changed old block hashes and map 3,768 new corner/connection variants back to their old states in block updates, chunk palettes, and nested item/transaction data.
  • Resolve stair corners and horizontal connections from the server's neighboring blocks. Expand chunk palettes when one old state needs multiple new shapes, and refresh nearby shapes after block updates.
  • Disable the client block blob cache when the two palettes differ, since rewriting the palette invalidates the server's blob hashes. Matching palettes keep caching.
  • Include reproducible lookup tables, pinned source checksums and attribution, a changelog entry, and 45 block regression cases. The tables cover all 17,499 old vanilla states; custom IDs pass through unchanged. This does not add new block types to older servers, and custom connection rules need their own geometry definitions.

Based on current main (bf707a6, 0.5.1), using its pinned bedrock-protocol 0.3.0. World lookups are scoped to one packet, so cached translators do not retain world or connection state.

Validation

  • Built Windows CPython 3.11 and Linux CPython 3.11 wheels; Linux wheel repaired and tagged manylinux_2_28_x86_64.
  • 342 tests passed on Windows and 342 on Linux, including the 45 new cases for block hashes, inverse mappings, chunk storage widths, inventory contents, cache negotiation, malformed palettes, neighbor updates, and a stair corner across a chunk boundary.
  • Ruff lint/format, strict mypy, clang-format, and generated stub checks passed. Both generated tables reproduce exactly from the pinned inputs, and wheel RECORD hashes and packaged source files were verified.
  • Before rebasing onto 0.5.1, the same block mapping and connection implementation was tested in retail Windows Minecraft 26.50 on Endstone 0.11.9 / BDS 26.44: straight, upside-down and corner stairs rendered; fences, panes and bars connected; client stair placement/breaking and neighbor refresh worked. The rebased branch received the Windows and Linux build/test checks above.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant