The Java Edition protocol

How the Minecraft client and server actually talk to each other — the packet-level protocol that plugins, proxies and tools like Geyser and ViaVersion are built on.

Overview

Everything else in this Codex describes what the game does with data. The protocol is the layer underneath: the sequence of packets exchanged over a TCP connection from the first handshake to every block change. You do not need it to write a data pack — but you do need it to understand proxies, version-translation layers, custom clients, or why a plugin can do something commands cannot.

⚠ Gotcha

The protocol is not stable between versions. Packet ids are renumbered almost every release, so protocol documentation is only meaningful when read against a stated protocol version. This is the opposite of the data-pack format, which changes deliberately and slowly.

What happened to wiki.vg

For years the reference for this was wiki.vg. It is no longer reachable, and its content was migrated into the Minecraft Wiki, where it now lives under Java Edition protocol and its subpages. If you have an old bookmark or a link in a plugin’s README pointing at wiki.vg, the table below is where that page went.

Protocol documentation

23 pages, all on the Minecraft Wiki.

TopicWiki page
Main pageJava Edition protocol
Block actionsJava Edition protocol/Block actions
ChatJava Edition protocol/Chat
Chunk formatJava Edition protocol/Chunk format
Command dataJava Edition protocol/Command data
Data typesJava Edition protocol/Data types
Development versionJava Edition protocol/Development version
EncryptionJava Edition protocol/Encryption
Entity metadataJava Edition protocol/Entity metadata
Entity statusesJava Edition protocol/Entity statuses
FAQJava Edition protocol/FAQ
InventoryJava Edition protocol/Inventory
Object dataJava Edition protocol/Object data
PacketsJava Edition protocol/Packets
ParticlesJava Edition protocol/Particles
Plugin channelsJava Edition protocol/Plugin channels
Plugin channels/World downloaderJava Edition protocol/Plugin channels/World downloader
Plugin channels/WorldEditCUIJava Edition protocol/Plugin channels/WorldEditCUI
RecipesJava Edition protocol/Recipes
RegistriesJava Edition protocol/Registries
Server List PingJava Edition protocol/Server List Ping
Slot dataJava Edition protocol/Slot data
VarInt and VarLongJava Edition protocol/VarInt and VarLong

Sources