Protocol History
Provided below is a changelog of the server protocol starting on 2010-08-20. The wiki history feature may also be used to investigate changes.
Contents
- 1 1.8
- 2 1.8-pre3
- 3 1.8-pre2
- 4 1.8-pre1
- 5 14w34a/b/c/d
- 6 14w33a/b/c
- 7 14w32a/b/c/d
- 8 14w31a
- 9 14w30c
- 10 14w30a/b
- 11 14w29a
- 12 14w28b
- 13 14w28a
- 14 14w27a/b
- 15 14w26c
- 16 14w26b
- 17 14w26a
- 18 14w25b
- 19 14w25a
- 20 14w21a
- 21 14w20a
- 22 14w19a
- 23 14w18b
- 24 14w18a
- 25 14w17a
- 26 14w11a
- 27 14w08a
- 28 14w07a
- 29 14w06a
- 30 14w05a
- 31 14w04b
- 32 14w04a
- 33 14w03a
- 34 14w02a
- 35 1.7.6
- 36 1.7.5
- 37 1.7.4
- 38 1.7.3
- 39 13w49a
- 40 1.7.2
- 41 1.7.1
- 42 1.7
- 43 13w43a
- 44 13w42b
- 45 13w42a
- 46 13w41b
- 47 13w41a
- 48 13w39a/b
- 49 13w38a/b/c
- 50 1.6.4
- 51 1.6.3
- 52 13w37b
- 53 13w36a
- 54 1.6.x
- 55 1.5.x
- 56 1.4.x
- 57 2012-12-20
- 58 2012-11-14
- 59 2012-10-23
- 60 2012-08-01
- 61 2012-03-22
- 62 2012-03-01
- 63 2012-01-12
- 64 2011-11-13
- 65 2011-11-11
- 66 2011-10-27
- 67 2011-10-13
- 68 2011-9-29
- 69 2011-9-22
- 70 2011-9-14
- 71 2011-9-13
- 72 2011-9-10
- 73 2011-6-30
- 74 2011-5-26
- 75 2011-4-19
- 76 2011-3-31
- 77 2011-2-22
- 78 2011-1-13
- 79 2010-12-20
- 80 2010-12-01
- 81 2010-11-24
- 82 2010-11-10
- 83 2010-10-31
- 84 2010-09-10
- 85 2010-08-20
1.8
1.8-pre3
1.8-pre2
1.8-pre1
- New metadata type, 7, 12 bytes(3 floats?), used on armor stand
14w34a/b/c/d
14w33a/b/c
- Added new fields to Tab-Complete (Serverbound)
14w32a/b/c/d
- Added new Update Entity NBT packet
- Added three new fields to Use Entity
14w31a
- The length prefix on the payload of Plugin Message has been removed (Both ways)
- Added new Resource Pack Send packet
- Added new Resource Pack Status packet
- Added VarLong data type
- Changed a few fields in World Border to VarLong
- Changed the type of Keep Alive ID from Int to VarInt (Clientbound)
14w30c
14w30a/b
14w29a
- Fix the length prefix of Plugin Message so that its a Varint instead of an unsigned short
- Added "Reduced Debug Info" boolean to Join Game
- Added "Long Distance" boolean to Particle
14w28b
- Uncompressed NBT
- Added Display name fields to Player List Item
- New 'Player List Header/Footer' packet
14w28a
- Changed Chunk packets to remove compression
- Added packets to toggle compression/set threshold
- Allowed compression for the whole protocol
- Changed the Maps packet
14w27a/b
14w26c
- Changed Multi Block Change to using packed block ids
- Changed Block Change to using packed block ids
14w26b
- Bug fix
14w26a
- Changed chunk sending
14w25b
- Added boolean field to all entity movement packets
14w25a
- Update Sign now uses Chat
14w21a
- All byte arrays have VarInt length prefixes instead of short
- Spawn Player changes
- Player list item changes
14w20a
- Added new packet 'Title'
14w19a
- Changed the Particle's 'Particle Name' to an int
- Added a new field to Particle
- Rewrote Player List Item
- Added SET_WARNING_TIME and SET_WARNING_BLOCKS to World Border
- Added new serverbound packet Spectate
14w18b
- Bugfix
14w18a
- Added 'INITIALIZE' action to World Border
14w17a
- Increased the max payload size of 'Plugin Message' from 32767 to 1048576 (Broken because of incorrect data type)
- Added new packet 'World Border'
14w11a
- UUIDs now include the '-'s
14w08a
- Added new field 'Type' to Scoreboard Objective
14w07a
- Added two new fields to Teams
14w06a
Clientbound
- Added new field 'Hide Particles' to Entity Effect
Serverbound
- Removed 'HeadY' from Player Position
- Removed 'HeadY' from Player Position And Look
14w05a
Clientbound
- New packet 'Camera'
14w04b
- Spawn Painting now uses the 'Position' data type
- Changed Spawn Painting's Direction type to Unsigned Byte
14w04a
- Encoding for 'Position' changed
Clientbound
- Changed Entity Equipment's EntityId type to VarInt
- Changed Update Health's Food type to VarInt
- Changed Use Bed's EntityId type to VarInt
- Added new fields to Spawn Player
- Changed Collect Item's EntityId(s) types to VarInt
- Changed Entity Velocity's EntityId type to VarInt
- Changed Destroy Entities' Length type to VarInt
- Changed Destroy Entities' EntityIds type to VarInt array
- Changed Entity's EntityId type to VarInt
- Changed Entity Relative Move's EntityId type to VarInt
- Changed Entity Look's EntityId type to VarInt
- Changed Entity Look and Relative Move's EntityId type to VarInt
- Changed Entity Teleport's EntityId type to VarInt
- Changed Entity Head Look's EntityId type to VarInt
- Changed Entity Metadata's EntityId type to Varint
- Changed Entity Effect's EntityId type to VarInt
- Changed Entity Effect's Duration type to VarInt
- Changed Remove Entity Effect's EntityId type to VarInt
- Changed Set Experience's Level type to VarInt
- Changed Set Experience's Total Experience type to VarInt
- Changed Entity Properties's EntityId type to VarInt
- Changed Entity Properties's List Length type to VarInt
- Changed Player List Item's Ping type to VarInt
- Changed Update Score's Value type to VarInt
- Changed Teams' Player count type to VarInt
- New packet 'Combat Event'
Serverbound
- Changed Keep Alive's Keep Alive ID type to VarInt
- Changed Use Entity's Target type to VarInt
- Changed Use Entity's Mouse type to Unsigned Byte
- Removed everything from Animation
- Changed Entity Action's EntityId type to VarInt
- Changed Entity Action's Action ID type to Unsigned Byte
- Changed Entity Action's Values
- Changed Entity Action's Jump Boast type to VarInt
- Merged Steer Vehicle's Jump and Unmount into a Bit Field
- Changed Client Status's Action ID type to Unsigned Byte
14w03a
- New data type 'Position'
Clientbound
- Spawn Position now uses the 'Position' data type
- Use Bed now uses the 'Position' data type
- Block Change now uses the 'Position' data type
- Block Action now uses the 'Position' data type
- Block Break Animation now uses the 'Position' data type
- Effect now uses the 'Position' data type
- Sign Update now uses the 'Position' data type
- Update Block Entity now uses the 'Position' data type
- Sign Editor Open nows uses the 'Position' data type
Serverbound
- Player Digging now uses the 'Position' data type
- Player Block Placement now uses the 'Position' data type
- Update Sign now uses the 'Position' data type
- Client Settings 'show cape' type changed from boolean to unsigned byte
14w02a
- Added 'Position' to Chat Message Clientbound
- Remove Player Position And Look's 'OnGround' clientbound
- Added 'Flags' to Player Position And Look clientbound
- Changed Open Inventory's 'Inventory Type' type from byte to string
- Added Server Difficulty
- Removed Client Settings' 'Difficulty'
1.7.6
- UUIDs now include the '-'s
- Added new fields to Spawn Player
1.7.5
1.7.4
1.7.3
13w49a
- Changed Set Slot's Window ID type to byte
1.7.2
- Changed Multi Block Change's 'X' and 'Z' type to Int
1.7.1
1.7
13w43a
13w42b
13w42a
- Added 'Level Type' to Join Game
- Added 'Level Type' to Respawn
- Removed Sound Effect's 'Sound Category'
13w41b
Note this isn't backwards compatible with 13w41a due to Handshakes's Server Port type change
- Removed Player (Clientbound), Player Position (Clientbound), Player Look (Clientbound)
- Removed Player Position and Look (Clientbound)'s 'Stance'
- Removed Join Game's 'N/A' and 'Level Type'
- Changed Join Game's 'Gamemode' 'Difficulty' 'Max Players' types to Unsigned Byte
- Changed Handshake's 'Server Port' type to Unsigned Short
- Removed Respawn's 'World Height' 'Level Type'
- Changed Respawn's 'Difficulty' and 'Gamemode' types to Unsigned Byte
- Changed Held Item Change's 'Slot' type to Byte
- Removed Use Bed's 'unknown byte'
- Changed Animation's 'Animation' type to Unsigned Byte
- Changed Animation's 'Entity ID' type to VarInt
- Changed Spawn Player's 'Entity ID' type to VarInt
- Changed Spawn Object's 'Entity ID' type to VarInt
- Changed Spawn Mob's 'Entity ID' type to VarInt
- Changed Spawn Painting's 'Entity ID' type to VarInt
- Changed Spawn Experience Orb's 'Entity ID' type to VarInt
- Changed Multi Block Change's 'Chunk X' and 'Chunk Z' types to VarInt
- Changed Block Change's 'Block Type' type to VarInt
- Changed Block Action's 'Block Type' type to VarInt
- Changed Block Break Animation's 'Entity ID' type to VarInt
- Changed Explosion's 'X' 'Y' and 'Z' types to Float
- Changed Change Game State's 'Reason' type to Unsigned Byte
- Changed Spawn Global Entity's 'Entity ID' type to VarInt
- Changed Close Window's 'Window ID' type to Unsigned Byte
- Changed Set Slot's 'Window ID' type to Unsigned Byte
- Changed Window Items's 'Window ID' type to Unsigned Byte
- Changed Window Property's 'Window ID' type to Unsigned Byte
- Changed Comfirm Transaction's 'Window ID' type to Unsigned Byte
- Changed Maps' 'Item Damage' type to VarInt
- Removed Maps' 'Item Type'
- Changed Update Block Entity's 'Action' type to Unsigned Byte
- Block Editor Open -> Sign Editor Open
- Removed Sign Editor Open's 'Tile Entity Id'
- Changed Statistics's 'Count' and 'Amount' types to VarInt
- Changed Tab-Complete from \x00 String to Array of Strings
13w41a
- Large protocol rework
13w39a/b
- UUIDs added to spawn named entity
- Game state 'gamemode' byte -> float
13w38a/b/c
1.6.4
1.6.3
- Terrain fixes to help moving to 1.7, no packet changes from 1.6.2
13w37b
13w36a
- Added sound category byte to 0x3E
- Changed 0xC8 to a string:int map
1.6.x
1.6.1: Protocol version is now 73. Packet 0xFA is sent after packet 0xFE with additional data
1.6: Protocol version is now 72. Changed Open Window packet, added two inventory types
1.5.x
13w25a: Protocol version is now 71. Changed packet: Increment Statistic (0xC8)
13w24b: Protocol version is now 70
13w24a: Protocol version is now 69. Changed functionality: Time Update (0x04)
13w23b: Protocol version is now 68.
13w22a: Protocol version is now 67. New packet: Entity Properties (0x2C); Changed packets: Chat Message (0x03)
13w18b: Protocol version is now 65.
13w16b: Protocol version is now 63. New packet: Steer Vehicle (0x1B)
13w16a: Protocol version is now 62. Changed packets: Update Health (0x08), Entity Action (0x17), Attach Entity (0x27), Player Abilities (0xCA)
13w09c: Protocol version is now 60.
13w09b: Protocol version is now 59.
13w09c: Protocol version is now 60.
13w09b: Protocol version is now 59.
13w06a: Protocol version is now 57 58 (Changed after bug fix, version is still 13w06a).
13w05b: Protocol version is now 57.
13w05a: Protocol version is now 56. New packets for teams.
13w04a: Protocol version is now 55. New packets for scoreboards.
13w03a: Protocol version is now 54.
13w02a: Protocol version is now 53. All Minecart entities use object type 10, and send the block within seperately. Minecarts now send their type as object data in 0x17.
13w01a: Protocol version is now 52. Added boolean to 0x64 (Open Window) to determine whether or not to use the provided window title.
1.4.x
- 13w06a: Protocol version is now 58.
- 13w05b: Protocol version is now 57.
- 13w05a: Protocol version is now 56. New packets for teams: 0xD1
- 13w04a: Protocol version is now 55. New packets for scoreboards: 0xCE, 0xCF, 0xD0
- 13w03a: Protocol version is now 54.
- 13w02a: Protocol version is now 53. All Minecart entities use object type 10, and send the block within seperately. Minecarts now send their type as object data in 0x17.
- 13w01a: Protocol version is now 52. Added boolean to 0x64 (Open Window) to determine whether or not to use the provided window title.
2012-12-20
- 1.4.6
- Protocol version is now 51
- Changed packet: 0x10 Held Item Change - Packet is now bidirectional
- Changed packet: 0x17 Spawn Object/Vehicle - Added fields Yaw and Pitch
- Changed packet: 0x38 Map Chunk Bulk - Added boolean field
- Removed packet: 0x15 Spawn Dropped Item - Now merged into 0x17 Spawn Object/Vehicle. The Entity Type ID is 0x02. Set the item type by sending 0x28 Entity Metadata with a slot at index 10. Vanilla packet dump
2012-11-14
- 1.4.4
- Protocol version is now 49
- Packet 0x83 has a short (changed from a unsigned byte) header before the byte array
- Item metadata (5) has an NBT field at the end. As usual if the short is < 0, no data is sent
2012-10-23
- 1.4.1
- Protocol version is now 47
- Entity metadata format updated: type 5 (slot type) now terminates after item_id if it's less than zero.
- Changed packet: 0x04 time update - added 'time of day' field
- Changed packet: 0x15 spawn dropped item - updated to use slot format
- Changed packet: 0x3D particle or sound effect - add new boolean field that forces the sound-effect to play from close range
- (sort of) Changed packet: 0x66 click window - "right click?" field changed from bool to byte
- Changed packet: 0xCC client settings - added boolean "show cape?" field.
- Changed packet: 0xFE server list ping - extra field added; response format slightly expanded to include protocol version.
2012-08-01
- 1.3.1
- Protocol version is now 39
- Fishing floats, spawned by a 0x17 packet do now use the extra fields
- All items (except the empty hand) now send enchantment data
- Added packet: 0x37 Block breaking animation
- Added packet: 0x38 Map Chunk Bulk
- Added packet: 0x3E Name Sound Effect
- Added packet: 0xCB Tab-complete
- Added packet: 0xCC Locale and View Distance
- Added packet: 0xCD Client Statuses used for Login Request and Respawn (1 byte payload)
- Added packet: 0xFC Encryption Key Response
- Added packet: 0xFD Encryption Key Request
- Changed packet: 0x01 Login Request
- Changed packet: 0x02 Handshake
- Changed packet: 0x09 Respawn
- Changed packet: 0x0F Player Block Placement
- Changed packet: 0x14 Spawn named entity
- Changed packet: 0x18 Spawn Mob - added velocity
- Changed packet: 0x1D Destroy Entity
- Changed packet: 0x33 Chunk Data - remove Unused int
- Changed packet: 0x35 Block Change
- Changed packet: 0x36 Block Action
- Changed packet: 0xCA Player Abilities
- Removed packet: 0x32 Map Column Allocation
2012-03-22
- 1.2.4
- Protocol version is now 29
- New packet: 0xCA player abilities
2012-03-01
- 1.2.2
- Protocol version is now 28
- New packet: 0x23 entity head look
- New packet: 0x84 update tile entity
- 0x02 handshake when sent C->S now additionally contains the hostname/port the client is connecting to
- 0x01 login request: map seed (long) parameter removed and dimension changed from byte to int
- 0x09 respawn has the same changes (dimension changed from byte to int and seed removed)
- 0x18 mob spawn has a new byte field: head yaw
- 0x33 map chunks packet was completely changed to use the new 16x16x16 chunk format
- 0x34 multi block change has a new format also
2012-01-12
- 1.1
- Protocol version is now 23
- New packet: 0xFA Plugin message
- 0x01 login request has a new string field: level-type (DEFAULT or SUPERFLAT)
- 0x09 respawn has the same change
- Packet removed: 0x1B stance update (had been unused for some time)
2011-11-13
- 1.0rc2
- Protocol version is not changed
- Client gives invalid server key when authentication hash is 8 bytes and the first byte is > 0x80
- Bow has extra metadata as slot item.
2011-11-11
- Beta 1.9 pre6.
- Protocol version is now 22
- NewState: Reason 4 = Enter scrolling text mode after slaying the dragon.
- New entity: EnderCrystal (Spawned using the Add Object/Vehicle (0x17) packet with type 51)
2011-10-27
- Beta 1.9 pre5.
- Protocol version is now 21
- Packet 0x6B (Create Inventory) changed: uses Slot datatype.
2011-10-13
- Beta 1.9 pre4.
- Protocol version is now 20
- Packet 0x2B (Experience) changed: now (float, short, short)
- New packet 0x6C (Enchant item) added: (byte, byte)
- Flint and steel no longer enchantable (see 1.9pre3 changes). Might be others, too.
- Notchian server now features an RCON server (server class: o.java)
- Notchian server now features "G4S" server [1]
2011-9-29
- Beta 1.9 pre2.
- Protocol version is now 19
- Four packets changed:
- The change affects the "slot" datatype. This type consists of at least a short (item_id). If this id isn't
-1
, a byte (count) and a short (uses) follow. - From 1.9pre2 onward, additional data is sent but only for certain item_ids. This means the protocol is no longer context free. The additional data is at least a short. If this short isn't -1, a byte[] array follows, containing gzipped NBT data
- The format of the NBT is as follows
COMPOUND
LIST: 'ench'
SHORT: 'id'
SHORT: 'lvl'
END
END
- So far only this format, with 'id' and 'lvl' set to
2
and1
respectively, has been seen.
2011-9-22
- Beta 1.9 pre1.
- Protocol version is now 18
2011-9-14
- Beta 1.8 release.
- Protocol version is now 17
2011-9-13
- Beta 1.8 pre2-release.
- Protocol version is now 16
- Packet 0x01 (Login) changed (added byte, world height now unsigned)
- Packet 0x09 (Respawn) changed (added byte)
- Packet 0x64 (Open Window) changed (Window title changed from string8 to string16)
- New packet 0x1a (Experience Orb) added
- Assumedly 0x17 (Add Object/Vehicle) is no longer used for exp orbs.
2011-9-10
- Beta 1.8 pre-release.
- Protocol version is now 15
- Packet 0x00 (Keep Alive) changed (added keep-alive id)
- Packet 0x01 (Login) changed (added server mode, height limit, and an unknown field)
- Packet 0x08 (Health) changed (added food bar and food saturation)
- Packet 0x09 (Respawn) changed (added map seed, server mode, height limit)
- Packet 0x13 (Entity Action) has new values for starting/stopping sprinting.
- Packet 0x46 (New/invalid state) changed (added game mode reason, and a game mode byte)
- New packet 0x29 (Entity Effect) added
- New packet 0x2a (Remove Entity Effect) added
- New packet 0x2b (Experience update) added
- New packet 0x6b (Creative item get) added
- New packet 0xc9 (Player list item) added
- New packet 0xfe (Server list ping) added
- New values for 0x13 (Entity Action): start sprinting, stop sprinting
- New value for 0x17 (Add Object/Vehicle): experience orb
2011-6-30
- Beta 1.7 released.
- Protocol version number is now 14
- No new packets
- Packet 0x36 (Block Action) is now used for pistons too.
2011-5-26
- Beta 1.6 released.
- Protocol increase by 2: 13
- Packet 0x09 (Respawn) changed (added world byte)
- Packet 0x17 (Add Object) changed.
- Packet 0x3d (Sound effect) added
- Packet 0x83 (Map Data) added
2011-4-19
- Beta 1.5 released.
- Some packet info at https://gist.github.com/929803
- Packet 0x01 (Login Request) changed (removed second string)
- Packet 0x66 (Window Click) changed (added bool for shift)
- Added two new packets: 0x47 (Thunderbolt) and 0xC8 (Increment Statistic) (classes eq and nj, respectively)
- Protocol version number is now 11
- All of the strings are now UCS-2, except for Open window (0x64), which is still UTF-8
2011-3-31
- Beta 1.4 released.
- New packet 0x46.
- Protocol version number is now 10
- TODO: The protocol itself does not seem to have changed much, but what about possible data values and stuff like that?
2011-2-22
- Beta 1.3 released.
- New packets 0x11, 0x1B: Some information at https://gist.github.com/841590
- Protocol number is now 9 (updated)
2011-1-13
- Beta 1.2 released.
- More packet changes (pastebin): 0x05, 0x0F, 0x13, 0x15, 0x18, 0x19, 0x28, 0x36, 0x66, 0x67.
2010-12-20
- Notch released Beta on time! Amazing! Refactored the page to be slightly smaller and easier to navigate.
- A whole host of packet changes. 0x05, 0x08, 0x10, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, and 0x82. Packets 0x11 and 0x3b removed.
2010-12-01
- Protocol version changed to 6
- Packet 0x12 (Animation) got a lot more new values
- Packet 0x26 changed, now indicates entity damage, death and explosion (for creepers, TNT not tested)
- Packet 0x3B now being sent from client
- Packet 0x3C added
- (need info on other changes)
2010-11-24
- Protocol version changed to 5
- Packet 0x07 (Use Entity) got a new field (byte)
- Packet 0x08 (Update Health) added
- Packet 0x09 (Respawn) added
- Packet 0x12 (Animation) started getting non-boolean values for the Animation field
- Packet 0x26 (Entity Death) added
2010-11-10
- Protocol version changed to 4
- Packet 0x01 (login request) changed
- Packet 0x07 (Use Entity?) added
- Packet 0x1C (Entity Velocity?) added
- Packet 0x27 (Attach Entity?) added
2010-10-31
- Protocol version changed to 3
- Packet 0x01 (login request) changed
2010-09-10
- Protocol version changed to 2
- Packets 0x05, 0x06, 0x3B added
- Server-side inventory (no verification)
- Vanilla adds experimental monsters (only damaged by fire)
2010-08-20
- Protocol version reset from 14 to 1
- Packet 0x04 (time update) added