Pre-release protocol

From wiki.vg
Revision as of 16:42, 10 October 2013 by Aadnk (talk | contribs) (→‎Data Types: The inbound handler (ek.java) uses em (channel initializer), which uses er.java (ProtobufVarint32FrameDecoder from Netty).)
Jump to navigation Jump to search

This page documents the changes from the last stable Minecraft release (currently 1.6.2, protocol 74) to the current pre-release. Note that this page contains bleeding-edge information that may not be completely or correctly documented. He who wishes to commandeer the merging of this into Protocol when an update is made must be sure to respect any changes that may have occured to the respective packets there.

Protocol History

13w36a - Added sound category byte to 0x3E - Changed 0xC8 to a string:int map

13w37b -

1.6.3 - Terrain fixes to help moving to 1.7, no packet changes from 1.6.2

1.6.4 -

13w38a/b/c -

13w39a/b - UUIDs added to spawn named entity, game state 'gamemode' byte -> float

13w41a - Large protocol work

Protocol Version

13w41a -

13w39a/b - 80

13w38a/b/c - 79

1.6.4 - 78

1.6.3 - 77

13w37b - 76

13w36a - 75

Packet format

Field Name Field Type Notes
Length VarInt
Type VarInt
Data

Data Types

VarInt - Protocol Buffer 32-bit Varint

String - UTF-8 String

Handshaking

Serverbound

?

Packet ID Field Name Field Type Notes
0x00 VarInt
String
VarInt
VarInt

Play

Clientbound

Keep Alive

Packet ID Field Name Field Type Notes
0x00 Keep Alive ID Int


Join Game

Packet ID Field Name Field Type Notes
0x01 Entity ID Int The player's Entity ID
Level type String level-type in server.properties
Gamemode Byte 0: survival, 1: creative, 2: adventure. Bit 3 (0x8) is the hardcore flag
Dimension Byte -1: nether, 0: overworld, 1: end
Difficulty Unsigned Byte 0 thru 3 for Peaceful, Easy, Normal, Hard
Byte
Max Players Byte Used by the client to draw the player list

Chat Message

Packet ID Field Name Field Type Notes
0x02 JSON Data String https://gist.github.com/thinkofdeath/e882ce057ed83bac0a1c

Time Update

Packet ID Field Name Field Type Notes
0x03 Age of the world Long In ticks; not changed by server commands
Time of day Long The world (or region) time, in ticks. If negative the sun will stop moving at the Math.abs of the time

Entity Equipment

Packet ID Field Name Field Type Notes
0x04 EntityID Int Entity's ID
Slot Short Equipment slot: 0=held, 1-4=armor slot (1 - boots, 2 - leggings, 3 - chestplate, 4 - helmet)
Item Slot Item in slot format

Spawn Position

Packet ID Field Name Field Type Notes
0x05 X Int Spawn X in block coordinates
Y Int Spawn Y in block coordinates
Z Int in block coordinates

Update Health

Packet ID Field Name Field Type Notes
0x06 Health Float 0 or less = dead, 20 = full HP
Food Short 0 - 20
Food Saturation Float Seems to vary from 0.0 to 5.0 in integer increments

Respawn

Packet ID Field Name Field Type Notes
0x07 Dimension Int -1: The Nether, 0: The Overworld, 1: The End
Difficulty Byte 0 thru 3 for Peaceful, Easy, Normal, Hard.
Gamemode Byte 0: survival, 1: creative, 2: adventure. The hardcore flag is not included
World Height Short Defaults to 256
Level Type String

Player

Packet ID Field Name Field Type Notes
0x08 On Ground True if the client is on the ground, False otherwise

Player Position

Packet ID Field Name Field Type Notes
0x09 X Double Absolute position
Y Double Absolute position
Stance Double Used to modify the players bounding box when going up stairs, crouching, etc…
Z Double Absolute position
On Ground Bool True if the client is on the ground, False otherwise

Player Look

Packet ID Field Name Field Type Notes
0x0A Yaw Float Absolute rotation on the X Axis, in degrees
Pitch Float Absolute rotation on the Y Axis, in degrees
On Ground Bool True if the client is on the ground, False otherwise

Player Position And Look

Packet ID Field Name Field Type Notes
0x0B X Double Absolute position
Y Double Absolute position
Stance Double Used to modify the players bounding box when going up stairs, crouching, etc…
Z Double Absolute position
Yaw Float Absolute rotation on the X Axis, in degrees
Pitch Float Absolute rotation on the Y Axis, in degrees
On Ground Bool True if the client is on the ground, False otherwise

Held Item Change

Packet ID Field Name Field Type Notes
0x0C Slot Short The slot which the player has selected (0-8)

Use Bed

Packet ID Field Name Field Type Notes
0x0D Entity ID Int Player ID
Byte
X Int Bed headboard X as block coordinate
Y Unsigned Byte Bed headboard Y as block coordinate
Z Int Bed headboard Z as block coordinate

Animation

Packet ID Field Name Field Type Notes
0x0E Entity ID Int Player ID
Animation Byte Animation ID

Animation can be one of the following values:

ID Animation
0 No animation
1 Swing arm
2 Damage animation
3 Leave bed
5 Eat food
6 Critical effect
7 Magic critical effect
102 (unknown)
104 Crouch
105 Uncrouch

Spawn Player

Packet ID Field Name Field Type Notes
0x0F Entity ID Int Player's Entity ID
Player UUID String Player's UUID
Player Name String Player's Name
X Int Player X as a Fixed-Point number
Y Int Player X as a Fixed-Point number
Z Int Player X as a Fixed-Point number
Yaw Byte Player rotation as a packed byte
Pitch Byte Player rotation as a packet byte
Current Item Short The item the player is currently holding. Note that this should be 0 for "no item", unlike -1 used in other packets. A negative value crashes clients.
Metadata Metadata The client will crash if no metadata is sent

Status

Login

Plugin Channels

MC|RPack

Field Name Field Type Example Notes
Resource pack URL UTF8 string http://example.com/pack.zip