Encapsulation Protocol - ProtocolSupport/ProtocolSupport GitHub Wiki
Type definition
byte - normal java byte boolean - encoded as byte (1 - true, 0 - false) varint - mojang style vlq - http://wiki.vg/Protocol#VarInt_and_VarLong vbytearray - byte array prefixed with length encoded as varint
Handshake
Before sending any actual game packets the client should send data of this format:
- Always zero - byte
- Encapsulation protocol version - varint (current version id is 1)
- Has address data - boolean
- Address - vbytearray (only present if Has address data is true)
- Port - varint (only present if Has address data is true)
- Has compression - boolean
Pipeline
Decode:
Frame decoder -> Decompressor -> User pipeline (Packet decoder, Packet handler, etc) Frame decoder: same as current mojang one http://wiki.vg/Protocol#Without_compression Decompressor: only present if Has compression is true, same as current mojang one http://wiki.vg/Protocol#With_compression but compression threshold is not synched, both client and server should not check it
Encode:
Frame encoder <- Compressor <- User pipeline (Packet encoder, etc) Frame encoder: same as current mojang one http://wiki.vg/Protocol#Without_compression Compressor: only present if Has compression is true, same as current mojang one http://wiki.vg/Protocol#With_compression but compression threshold is not synched, so both client and server may decide to compress any number of bytes