{ types: { varint: { // native type type: int32_t // this is the max size. varint is 3 to 5 size: 5 // R/W: ReadVarInt, WriteVarInt method: VarInt // Alias types use ReadVarInt generic: true } ProtocolState: { alias: varint } string: { type: std::string method: String // requires count: e.g. string[256] size: count } uuid: { type: MinecraftUUID size: 16 } position: { type: BlockPos size: 8 method: Position } uint64: {type: 'uint64_t', size: 8} int64: {type: 'int64_t', size: 8} uint32: {type: 'uint32_t', size: 4} int32: {type: 'int32_t', size: 4} uint16: {type: 'uint16_t', size: 2} int16: {type: 'int16_t', size: 2} uint8: {type: 'uint8_t', size: 1} int8: {type: 'int8_t', size: 1} byte: {type: 'uint8_t', size: 1} // if no native type is specified, // it's assumed to be the type's name bool: {size: 1} float: {size: 4} double: {size: 8} } states : { Handholding : -1 Play : 0 Status : 1 Login : 2 } messages : { handholding : { serverbound : { Handshake : { id : 0 vars : { protocolVersion : varint serverIP : string[255] port : uint16 intention : ProtocolState } } } } status : { clientbound : { Response : { id : 0 vars : { jsonResponse : string[32767] } } Pong : { id : 1 vars : { timestamp : uint64 } } } serverbound : { Request : { id : 0 vars : { } } Ping : { id : 1 vars : { timestamp : uint64 } } } } login : { clientbound : { Disconnect : { id : 0 vars : { reason : string[32767] } } Success : { id : 2 vars : { uuid : string[32] username : string[16] } } } serverbound : { Start : { id : 0 vars : { username : string[16] } } } } play : { serverbound: { ChatMessage: { id : 0x03 vars : { message : string[256] } } KeepAlive: { id : 0x0F vars : { id : int64 } } } clientbound : { ChatMessage: { id : 0x0F vars : { jsonData : string[32767] position : uint8 } } JoinGame : { id : 38 vars : { entityId : int32 gamemode : uint8 dimension : int32 seedHash : uint64 maxPlayers : uint8 levelType : string[16] viewDistance : varint reducedDebugInfo : bool enableRespawnScreen : bool } } KeepAlive: { id: 0x21 vars: { id: int64 } } /*ChunkData: { id: 0x22 vars: { chunkX: int32 chunkZ: int32 fullChunk: bool // bitmask for each 16x16x16 chunk section // LSB: section at y=0, bits for up to y=15 chunkSections: varint heightmaps: nbt // only if fullChunk == true biomes: int32[1024] dataSize: varint data: byte[dataSize] numBlockEntities: varint blockEntities: nbt[numBlockEntities] } }*/ PlayerPositionAndLook: { id: 0x36 enums: { RelativeFlags: { X: 1, Y: 2, Z: 4, Y_ROT: 8, X_ROT: 16, } } aliases: { RelativeFlags: byte } vars: { x: double y: double z: double // xRot is yaw, yRot is pitch xRot: float yRot: float flags: RelativeFlags id: varint } } SpawnPosition: { id: 0x4E vars: { location: position } } } } } }