Files
minecraft_protocol/references.md
T
claude-timemachine d73c1c9537 minecraft_protocol: foundation + per-version protocol docs 1.7.10->26.2
8 topical docs (overview, data types, lifecycle, handshake, status/ping,
login+encryption, configuration, version-differences) + proxy-forwarding set
+ 16 per-version release-line docs, sourced from minecraft.wiki, ViaVersion
(source + commits), minecraft-data, node-minecraft-protocol, Velocity, BungeeCord.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 14:15:32 +02:00

3.8 KiB

References & sources

Everything in this repo is grounded in the spec + real reference implementations, cited inline as path:line / wiki-URL + fetch date. This is the catalog of what was used and which source to read for what.

Spec of record — minecraft.wiki (formerly wiki.vg)

wiki.vg was merged into minecraft.wiki in 2024; the protocol documentation lives under the Java Edition protocol pages.

Page Use
/w/Java_Edition_protocol the live protocol: packet format, data types, per-state packet lists
/w/Protocol_version the authoritative version→protocol-number table
/w/Java_Edition_protocol/Server_List_Ping modern SLP + legacy 0xFE ping
/w/Java_Edition_protocol/Protocol_Encryption the AES/RSA encryption handshake
/w/Java_Edition_<version> per-version release notes (gameplay + technical)

Historical per-version protocol pages are spotty on minecraft.wiki (some archive URLs 404). For exact per-version packet layouts we relied on minecraft-data + ViaVersion instead, which are versioned by construction.

Reference implementations

Cloned to /tmp/mcproto-refs/ during the build (ephemeral — re-clone to reproduce). Read for:

Repo Read for Key files
node-minecraft-protocol clean reference impl of framing, encryption, ping, states src/states.js, src/transforms/encryption.js, src/client/encrypt.js, src/ping.js, src/transforms/framing.js, src/transforms/compression.js
minecraft-data per-version protocol.json — authoritative packet IDs + field types per version (the diff source for the version docs) data/pc/<version>/protocol.json, data/pc/<version>/version.json, data/pc/common/protocolVersions.json
ViaVersion what changed between adjacent versions + the commit history that implemented it api/.../protocol/version/ProtocolVersion.java (version constants), common/.../protocols/v<X>to<Y>/ (per-step translation: Protocol*.java, Clientbound/ServerboundPackets*.java, rewriter/, data/), git log -- <package>
Velocity modern forwarding, login flow, state registry proxy/.../connection/PlayerDataForwarding.java (the HMAC forwarding payload), connection/VelocityConstants.java, connection/backend/LoginSessionHandler.java, protocol/packet/EncryptionRequest/ResponsePacket.java, protocol/StateRegistry.java, connection/forge/legacy/LegacyForgeConstants.java
BungeeCord legacy IP forwarding format proxy/.../connection/InitialHandler.java (handshake parse), ServerConnector.java (the \0-delimited forward write), forge/ForgeConstants.java
  • ViaBackwards — extends ViaVersion so newer clients reach older servers (reverse direction).
  • ViaRewind / ViaLegacy — compatibility below ViaVersion's 1.8 floor (down to 1.7.x and older release/beta protocols).
  • ViaForge — Forge/FML handshake handling across versions.
  • BungeeGuard (lucko) — token hardening of legacy forwarding.
  • Waterfall — BungeeCord fork (now largely superseded by Velocity).

Citation conventions in this repo

  • Reference-impl facts: repo/path/File.ext:line.
  • ViaVersion change-provenance: the package path + git log commit subject/hash.
  • Spec facts: the minecraft.wiki URL + fetch date (2026-06-19).
  • Anything not confirmable from the above carries an inline <!-- VERIFY --> flag (see PLAN §3 Phase 4 — the open-flag resolution pass).