0x00 C00Handshake

The very first packet sent by the client. Initiates the connection and requests a protocol state transition.

Serverbound (Client → Server) · HANDSHAKING · net/minecraft/network/play/client/C00Handshake.java
connectionhandshakeprotocol

Fields

FieldTypeDescription
protocolVersionVarIntProtocol version (47 for 1.8.9)
serverAddressString (max 255)Hostname the client connected to
serverPortunsigned shortPort the client connected to
requestedStateVarInt1=STATUS, 2=LOGIN

Wire Encoding

FieldTypeNotes
Protocol VersionVarInt47 for 1.8.9
Server AddressStringHostname or IP
Server Portunsigned shortBig-endian uint16
Next StateVarInt1=Status, 2=Login

MCP References

MCPNetHandlerHandshakeTCP.processHandshake()
MCPNetHandlerHandshakeMemory.processHandshake()

Handler Interface

HNDINetHandlerHandshakeServer

Notes

Determines whether the connection enters STATUS or LOGIN state. Sent by GuiConnecting.java during server connection, Minecraft.java for local singleplayer, OldServerPinger.java for server list pinging, and RealmsConnect.java for Realms. The requestedState field is critical: value 1 enters STATUS (used by server pinger), value 2 enters LOGIN (used for actual gameplay).

implementation Implementation Cases

ServerCrasher

Not commonly intercepted by modules — handled by vanilla NetHandlerHandshakeTCP.

FakeConnections

Not commonly intercepted by modules — handled by vanilla NetHandlerHandshakeTCP.

← Back to all packets