Skip to content

Minecraft 26.4 - #1913

Draft
WouterGritter wants to merge 2 commits into
dev/4.0.0from
minecraft-26.4
Draft

WouterGritter wants to merge 2 commits into
dev/4.0.0from
minecraft-26.4

Conversation

@WouterGritter

Copy link
Copy Markdown
Member

Adds support for 26.4 (-snapshot-5 after the first commit).

Protocol changes

  • Compression: SetCompression now only announces the threshold. LoginSuccess carries a new options byte, and compression is switched on around LoginAcknowledged (the last uncompressed packet in both directions).
  • Encryption: the client no longer enables encryption after sending its key. After hasJoined succeeds, the proxy sends the new ApplyOptions packet, waits for OptionsApplied, and only then enables encryption. For 26.4 clients, auth-failure disconnects are sent in plaintext, which is what the client expects.
  • JoinGame/Respawn: the hashed seed was removed.
  • Transfer: gained a Map<String, String> properties field. Backend-initiated transfers now pass it through to the client.
  • Handshake: the host limit was raised to 1024 for 26.4 clients, which can append query properties (host?_o=original:port&_id=...). These are stripped from the virtual host before the forced-host lookup.
  • minecraft:mod_list: 26.4 clients send this right after the brand, once per session. Forwarding it immediately hits ensureConnected() while the initial backend connection was still in flight, which kicked the player. It is now stored on the player, like the brand, and sent to every backend during configuration.

TODOs / needs deciding

  • ProtocolVersion.MINECRAFT_26_4(-1, 343, "26.4") // TODO
  • ClientConfigSessionHandler: any other client plugin message that arrives before the backend connection exists is now dropped with a warning (// TODO: Do we queue this instead?). Previously this threw and disconnected the player. Queueing and flushing once the backend is connected would be friendlier to mods. Related: Route plugin messages to the in-flight connection while no server is connected #1907 does something similar for the play state.

Not included (API surface, may be done in later PRs?)

  • Mod list API: the mod list is stored but not exposed to plugins. Related to Implementing support for minecraft:mod_list #1893.
  • Transfer properties API: plugins can't set or read them yet. Paper has no API for this yet either.
  • Handshake query properties: currently only stripped. Exposing them to plugins and/or forwarding them to backends would be nice.
  • contact field: the server list ping JSON gained an optional contact string, which ServerPing doesn't have yet.

@WouterGritter WouterGritter changed the title Minecraft 26.4-snapshot-5 Minecraft 26.4 Oct 23, 2026
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