Skip to content

fix(protocol): complete the remaining 26.60 migration fixes - #470

Closed
AlexProgrammerDE wants to merge 4 commits into
ViaVersionAddons:update/r26u6from
StackAnvil:fix/complete-26-60-followup
Closed

AlexProgrammerDE wants to merge 4 commits into
ViaVersionAddons:update/r26u6from
StackAnvil:fix/complete-26-60-followup

Conversation

@AlexProgrammerDE

Copy link
Copy Markdown
Collaborator

Follow-up to #466, targeting update/r26u6 after the manual port of #468.

The current branch still has three correctness issues, and it discards the new dimension cloud settings:

  • Restore the complete vanilla skin archive. The current archive contains only LICENSE, so the resource-pack loader rejects it and the default login skin is unavailable. Restore the manifest, images, and geometry from the validated 1.26.60.5 GDK snapshot.
  • Consume uncompressed frame payloads with readRetainedSlice. The header-sentinel correction is already present, but retaining the buffer without consuming it lets Netty decode payload bytes as another compression header.
  • Preserve explicit redstone, fire, and chorus connections. The equal-version upgrade must add missing properties without replacing values supplied by the server.
  • Retain dimension cloud height and visibility, validate the height range, and project cloud settings through Java 26.3 environment attributes. Preserve the existing Overworld override boundary and other authored attributes.

The branch contains four focused fixes with their regression tests.

Validation:

  • ./gradlew --no-configuration-cache build validateMappings passes, including all Checkstyle tasks and 10 tests.
  • Restoring the upstream decoder, connection upgrader, and broken skin archive causes four test failures. All 10 tests pass with the fixes.
  • Removing cloud projection causes two test failures. Dimension tests also cover complete packet boundaries, signed bounds, invalid ranges, and overflow.
  • All 13 restored skin resource files match the original 1.26.60.5 GDK package. The archive retains the Mojang license.

Mojang's protocol-2225 metadata establishes the new cloud fields. The implementation uses the branch's Java 17 baseline.

Validation uses local packet, registry, upgrade, and asset tests. No live server join or native visual comparison was performed.

The 26.60 branch translates the uint8 frame sentinel correctly but still
retains the payload without advancing the decoder buffer. Netty can then
interpret payload bytes as another compression header and fail decoding.

Emit a retained slice that consumes the complete payload. Cover direct
and negotiated no-compression frames with real EmbeddedChannel tests.
Add the JUnit test runtime without duplicating compile-only dependency
versions. Both regressions fail with the upstream decoder.
The 26.60 palette retains block-state version 1.21.60.33 while adding
connection properties. Its added-properties schema also runs on current
redstone, fire and chorus states, replacing supplied connections with
legacy defaults.

Add a property only when it is missing. Cover explicit redstone direction,
fire and chorus domains, legacy defaults and repeated upgrades. The
regression changes redstone north from up to none on the upstream code.
The regenerated vanilla skin archive contains only LICENSE. ResourcePack
rejects it because manifest.json is missing, and the default login skin
provider cannot find its pack, Steve texture or geometry.

Restore the complete archive from the validated 1.26.60.5 GDK snapshot.
The 13 resource files match the original package and preserve the Mojang
license. Verify pack parsing, Steve image decoding and matching humanoid
geometry dimensions against the actual bundled archive.
Protocol 2225 supplies dimension cloud height and visibility, but the
current decoder discards both. Retain them with the minimum Y and height
range, then project them through Java 26.3 environment attributes.

Preserve the existing Overworld override boundary and other authored
attributes. Transparent cloud color suppresses clouds because the Java
day timeline multiplies that color and preserves zero alpha. Reject
nonpositive ranges and upper-bound overflow. Six regressions cover wire
boundaries, signed bounds and attribute projection.

Mojang protocol-2225 metadata and its cloud-synchronization notes establish
the new fields. The earlier native 1.26.51.1 Hive capture establishes the
minimum-Y plus height-range semantics. This change includes no inventory
prerequisites or new claim of native visual parity.
@Exterminate5573

Copy link
Copy Markdown
Collaborator

merged the important fixes

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.

3 participants