Difference between revisions of "Pre-release protocol"

From wiki.vg
Jump to navigation Jump to search
(Updated to 1.21-pre2)
 
Line 1: Line 1:
This page documents the changes from the [[Protocol|last stable Minecraft release]] (currently 1.1) to the current pre-release
+
This page documents the changes from the [[Protocol|last stable Minecraft release]] (currently [[Protocol version numbers|1.20.6, protocol 766]]) to the current pre-release (currently [[Protocol version numbers|1.21-pre2, protocol {{Snapshot PVN|1073742024}}]]). Note that this page contains bleeding-edge information that may not be completely or correctly documented.
  
== New packets ==
+
One 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 occurred to the respective packets there.
  
=== Entity Head Look (0x23) ===
+
== Contents ==
  
Changes the direction an entity's head is facing.
+
<div style="float:right;">__TOC__</div>
  
{| class="wikitable"
+
=== Data types ===
|- class="row0"
 
! class="col0" | Packet ID
 
! class="col1" | Field Name
 
! class="col2" | Field Type
 
! class="col3" | Example
 
! class="col4" | Notes
 
|- class="row1"
 
| class="col0 centeralign" rowspan="2" | 0x23
 
| class="col1 centeralign" | Entity ID
 
| class="col2 centeralign" | int
 
| class="col3 centeralign" |
 
| class="col4" |
 
|- class="row2"
 
| class="col0 centeralign" | Head Yaw
 
| class="col1 centeralign" | byte
 
| class="col2 centeralign" |
 
| class="col3" | Head yaw in steps of 2π/256
 
|- class="row3"
 
! class="col0" | Total Size:
 
| class="col1 rightalign" colspan="4" | 6 bytes
 
|}
 
  
=== Update Tile Entity (0x84) ===
+
No changes documented so far.
  
Essentially a block update on a tile entity.
+
=== Packets ===
  
 
{| class="wikitable"
 
{| class="wikitable"
|- class="row0"
+
! ID
! class="col0" | Packet ID
+
! Packet name
! class="col1" | Field Name
+
!colspan="2"| Documentation
! class="col2" | Field Type
+
|-
! class="col3" | Example
+
!colspan="4"| Configuration clientbound
! class="col4" | Notes
+
{{PacketList|0x0F|Clientbound Report Details (configuration)|rel=added}}
|- class="row1"
+
{{PacketList|0x10|Clientbound Server Links (configuration)|rel=added}}
| class="col0 centeralign" rowspan="7" | 0x84
+
|-
| class="col1 centeralign" | X
+
!colspan="4"| Play clientbound
| class="col2 centeralign" | int
+
{{PacketList|0x7A|Clientbound Report Details (play)|rel=added}}
| class="col3 centeralign" |  
+
{{PacketList|0x7B|Clientbound Server Links (play)|rel=added}}
| class="col4" |
+
|-
|- class="row2"
 
| class="col0 centeralign" | Y
 
| class="col1 centeralign" | short
 
| class="col2 centeralign" |
 
| class="col3" |
 
|- class="row3"
 
| class="col0 centeralign" | Z
 
| class="col1 centeralign" | int
 
| class="col2 centeralign" |
 
| class="col3" |
 
|- class="row4"
 
| class="col0 centeralign" | Action
 
| class="col1 centeralign" | byte
 
| class="col2 centeralign" |
 
| class="col3" | The type of update to perform
 
|- class="row5"
 
| class="col0 centeralign" | Custom 1
 
| class="col1 centeralign" | int
 
| class="col2 centeralign" |
 
| class="col3" | Varies
 
|- class="row6"
 
| class="col0 centeralign" | Custom 2
 
| class="col1 centeralign" | int
 
| class="col2 centeralign" |
 
| class="col3" | Varies
 
|- class="row7"
 
| class="col0 centeralign" | Custom 3
 
| class="col1 centeralign" | int
 
| class="col2 centeralign" |  
 
| class="col3" | Varies
 
|- class="row8"
 
! class="col0" | Total Size:
 
| class="col1 rightalign" colspan="4" | 24 bytes
 
 
|}
 
|}
  
==== Actions ====
+
== Handshake ==
  
* '''1''': Set mob displayed inside a mob spawner. Custom 1 contains the [[Entities#Mobs|mob type]]
+
No changes so far.
  
== Changed packets ==
+
== Status ==
  
=== [[Protocol#Login_Request_.280x01.29|Login Request (0x01)]] ===
+
No changes so far.
  
World height field is no longer used, always 0.
+
== Login ==
  
Map seed field removed
+
No changes so far.
  
{| class="wikitable"
+
== Configuration ==
|- class="row0"
 
! class="col0" | Packet ID
 
! class="col1" | Field Name
 
! class="col2" | Field Type
 
! class="col3" | Example
 
! class="col4" | Notes
 
|- class="row1"
 
| class="col0 centeralign" rowspan="8" | 0x01
 
| class="col1 centeralign" | Entity ID
 
| class="col2 centeralign" | int
 
| class="col3 centeralign" | <code>1298</code>
 
| class="col4" | The Players Entity ID
 
|- class="row2"
 
| class="col0 centeralign" | Not used
 
| class="col1 centeralign" | string
 
| class="col2 centeralign" | (empty string)
 
| class="col3" | Not used
 
|- class="row3"
 
| class="col0 centeralign" | Level Type
 
| class="col1 centeralign" | string
 
| class="col2 centeralign" | default
 
| class="col3" | default or SUPERFLAT; level-type in server.properties
 
|- class="row4"
 
| class="col0 centeralign" | Server mode
 
| class="col1 centeralign" | int
 
| class="col2 centeralign" | <code>0</code>
 
| class="col3" | 0 for survival, 1 for creative
 
|- class="row5"
 
| class="col0 centeralign" | Dimension
 
| class="col1 centeralign" | int
 
| class="col2 centeralign" | <code>0</code>
 
| class="col3" | <code>-1</code>: The Nether, <code>0</code>: The Overworld, <code>1</code>: The End
 
|- class="row6"
 
| class="col0 centeralign" | Difficulty
 
| class="col1 centeralign" | byte
 
| class="col2 centeralign" | <code>1</code>
 
| class="col3" | <code>0</code> thru <code>3</code> for Peaceful, Easy, Normal, Hard
 
|- class="row7"
 
| class="col0 centeralign" | World height
 
| class="col1 centeralign" | byte
 
| class="col2 centeralign" | <code>0</code>
 
| class="col3" | Probably not used anymore since Map Chunk is hardcoded to 256 blocks.
 
|- class="row8"
 
| class="col0 centeralign" | Max players
 
| class="col1 centeralign" | unsigned byte
 
| class="col2 centeralign" | <code>8</code>
 
| class="col3" | Used by the client to draw the player list
 
|- class="row9"
 
! class="col0" | Total Size:
 
| class="col1 rightalign" colspan="4" | 19 bytes + length of strings
 
|}
 
  
=== [[Protocol#Handshake_.280x02.29|Handshake (0x02)]] ===
+
=== Clientbound ===
  
==== Client to Server ====
+
==== Clientbound Report Details (configuration) ====
  
The hostname and port were added to this packet, most likely to allow [http://en.wikipedia.org/wiki/Virtual_hosting virtual hosting] .([https://github.com/sadimusi/MVHP/blob/master/mvhp.py sample implementation])
+
Contains a list of key-value text entries that are included in any crash or disconnection report generated during connection to the server.
  
{| class="wikitable"
+
{| class="wikitable" {{added}}
|- class="row0"
+
! Packet ID
! class="col0" | Packet ID
+
! State
! class="col1" | Field Name
+
! Bound To
! class="col2" | Field Type
+
! colspan="2"| Field Name
! class="col3" | Example
+
! colspan="2"| Field Type
! class="col4" | Notes
+
! Notes
|- class="row1"
+
|-
| class="col0 centeralign" | 0x02
+
| rowspan="3"| 0x0F
| class="col1 centeralign" | UsernameAndHost
+
| rowspan="3"| Configuration
| class="col2 centeralign" | string
+
| rowspan="3"| Client
| class="col3 centeralign" | <code>TkTech;localhost:25565</code>
+
| colspan="2"| Details Count
| class="col4" | The username of the player attempting to connect, and the host he is connecting to, seperated by a semicolon.
+
| colspan="2"| {{Type|VarInt}} (32)
|- class="row2"
+
| The number of details in the following array.
! class="col0" | Total Size:
+
|-
| class="col1 rightalign" colspan="4" | 3 bytes + length of strings
+
| rowspan="2"| Details
 +
| Title
 +
| rowspan="2"| {{Type|Array}}
 +
| {{Type|String}} (128)
 +
|
 +
|-
 +
| Description
 +
| {{Type|String}} (4096)
 +
|
 
|}
 
|}
  
=== [[Protocol#Respawn_.280x09.29|Respawn (0x09)]] ===
+
==== Clientbound Server Links (configuration) ====
  
Dimension is now an int, slightly bizarrely. I wonder if they intended to make world_height an int, in line with 0x01 login?
+
This packet contains a list of links that the Notchian client will display in the menu available from the pause menu. Link labels can be built-in or custom (i.e., any text).
  
Map seed field removed
+
{| class="wikitable" {{added}}
 +
! Packet ID
 +
! State
 +
! Bound To
 +
! colspan="2"| Field Name
 +
! colspan="2"| Field Type
 +
! Notes
 +
|-
 +
| rowspan="4"| 0x10
 +
| rowspan="4"| Configuration
 +
| rowspan="4"| Client
 +
| colspan="2"| Links Count
 +
| colspan="2"| {{Type|VarInt}}
 +
| The number of links in the following array.
 +
|-
 +
| rowspan="3"| Links
 +
| Is built-in
 +
| rowspan="3"| {{Type|Array}}
 +
| {{Type|Boolean}}
 +
| Determines if the following label is built-in (from enum) or custom (text component).
 +
|-
 +
| Label
 +
| {{Type|VarInt}} {{Type|Enum}} / {{Type|Text Component}}
 +
| See below.
 +
|-
 +
| URL
 +
| {{Type|String}}
 +
| Valid URL.
 +
|}
  
{| class="wikitable"
 
|- class="row0"
 
! class="col0" | Packet ID
 
! class="col1" | Field Name
 
! class="col2" | Field Type
 
! class="col3" | Example
 
! class="col4" | Notes
 
|- class="row1"
 
| class="col0 centeralign" rowspan="5" | 0x09
 
| class="col1 centeralign" | Dimension
 
| class="col2 centeralign" | int
 
| class="col3 centeralign" | <code>1</code>
 
| class="col4" | <code>-1</code>: The Nether, <code>0</code>: The Overworld, <code>1</code>: The End
 
|- class="row2"
 
| class="col1 centeralign" | Difficulty
 
| class="col2 centeralign" | byte
 
| class="col3 centeralign" | <code>1</code>
 
| class="col4" | <code>0</code> thru <code>3</code> for Peaceful, Easy, Normal, Hard. <code>1</code> is always sent c->s
 
|- class="row2"
 
| class="col1 centeralign" | Creative mode
 
| class="col2 centeralign" | byte
 
| class="col3 centeralign" | <code>1</code>
 
| class="col4" | <code>0</code> for survival, <code>1</code> for creative.
 
|- class="row1"
 
| class="col1 centeralign" | World height
 
| class="col2 centeralign" | short
 
| class="col3 centeralign" | <code>128</code>
 
| class="col4" | Defaults to <code>128</code>
 
|- class="row1"
 
| class="col1 centeralign" | Level Type
 
| class="col2 centeralign" | string
 
| class="col3 centeralign" | DEFAULT
 
| class="col4" | See 0x01 login
 
|- class="row2"
 
! class="col0" | Total Size:
 
| class="col1 rightalign" colspan="4" | 11 bytes + length of string
 
|}
 
  
=== [[Protocol#Mob_Spawn_.280x18.29|Mob Spawn (0x18)]] ===
+
{| class="wikitable" {{added}}
 +
! ID
 +
! Name
 +
! Notes
 +
|-
 +
| 0
 +
| Bug Report
 +
| Displayed on connection error screen; included as a comment in the disconnection report.
 +
|-
 +
| 1
 +
| Community Guidelines
 +
|
 +
|-
 +
| 2
 +
| Support
 +
|
 +
|-
 +
| 3
 +
| Status
 +
|
 +
|-
 +
| 4
 +
| Feedback
 +
|
 +
|-
 +
| 5
 +
| Community
 +
|
 +
|-
 +
| 6
 +
| Website
 +
|
 +
|-
 +
| 7
 +
| Forums
 +
|
 +
|-
 +
| 8
 +
| News
 +
|
 +
|-
 +
| 9
 +
| Announcements
 +
|
 +
|-
 +
|}
  
New byte field: head yaw
+
=== Serverbound ===
  
This needs confirmation!
+
No changes so far.
  
{| class="wikitable"
+
== Play ==
|- class="row0"
 
! class="col0" | Packet ID
 
! class="col1" | Field Name
 
! class="col2" | Field Type
 
! class="col3" | Example
 
! class="col4" | Notes
 
|- class="row1"
 
| class="col0 centeralign" rowspan="9" | 0x18
 
| class="col1 centeralign" | EID
 
| class="col2 centeralign" | int
 
| class="col3 centeralign" | <code>446</code>
 
| class="col4" | Entity ID
 
|- class="row2"
 
| class="col0 centeralign" | Type
 
| class="col1 centeralign" | byte
 
| class="col2 centeralign" | <code>91</code>
 
| class="col3" | The type of mob. See [[Entities#Mobs]]
 
|- class="row3"
 
| class="col0 centeralign" | X
 
| class="col1 centeralign" | int
 
| class="col2 centeralign" | <code>13366</code>
 
| class="col3" | The Absolute Integer X Position of the object
 
|- class="row4"
 
| class="col0 centeralign" | Y
 
| class="col1 centeralign" | int
 
| class="col2 centeralign" | <code>2176</code>
 
| class="col3" | The Absolute Integer Y Position of the object
 
|- class="row5"
 
| class="col0 centeralign" | Z
 
| class="col1 centeralign" | int
 
| class="col2 centeralign" | <code>1680</code>
 
| class="col3" | The Absolute Integer Z Position of the object
 
|- class="row6"
 
| class="col0 centeralign" | Yaw
 
| class="col1 centeralign" | byte
 
| class="col2 centeralign" | <code>-27</code>
 
| class="col3" | The yaw in steps of 2π/256
 
|- class="row7"
 
| class="col0 centeralign" | Pitch
 
| class="col1 centeralign" | byte
 
| class="col2 centeralign" | <code>0</code>
 
| class="col3" | The pitch in steps of 2π/256
 
|- class="row8"
 
| class="col0 centeralign" | '''Head Yaw'''
 
| class="col1 centeralign" | byte
 
| class="col2 centeralign" |
 
| class="col3" | Head yaw in steps of 2π/256
 
|- class="row9"
 
| class="col0 centeralign" | Metadata
 
| class="col1 centeralign" | Metadata
 
| class="col2 centeralign" | <code>127</code>
 
| class="col3" | Varies by mob, see [[Entities]]
 
|- class="row10"
 
! class="col0" | Total Size:
 
| class="col1 rightalign" colspan="4" | 21 bytes + Metadata (at least 1)
 
|}
 
  
=== [[Protocol#Map_Chunk_.280x33.29|Map Chunk (0x33)]] ===
+
=== Clientbound ===
  
This is currently a ''best guess''
+
==== Clientbound Report Details (play) ====
  
Here's a packet capture: https://gist.github.com/1835702
+
Contains a list of key-value text entries that are included in any crash or disconnection report generated during connection to the server.
  
{| class="wikitable"
+
{| class="wikitable" {{added}}
|- class="row0"
+
! Packet ID
! class="col0" | Packet ID
+
! State
! class="col1" | Field Name
+
! Bound To
! class="col2" | Field Type
+
! colspan="2"| Field Name
! class="col3" | Example
+
! colspan="2"| Field Type
! class="col4" | Notes
+
! Notes
|- class="row1"
+
|-
| class="col0 centeralign" rowspan="8" | 0x33
+
| rowspan="3"| 0x7A
| class="col1 centeralign" | X
+
| rowspan="3"| Configuration
| class="col2 centeralign" | int
+
| rowspan="3"| Client
| class="col3 centeralign" |  
+
| colspan="2"| Details Count
| class="col4" | Chunk X Coordinate (*16 to get true X)
+
| colspan="2"| {{Type|VarInt}} (32)
|- class="row2"
+
| The number of details in the following array.
| class="col0 centeralign" | Z
+
|-
| class="col1 centeralign" | int
+
| rowspan="2"| Details
| class="col2 centeralign" |
+
| Title
| class="col3" | Chunk Z Coordinate (*16 to get true Z)
+
| rowspan="2"| {{Type|Array}}
|- class="row3"
+
| {{Type|String}} (128)
| class="col0 centeralign" | Ground-up contiguous
+
|
| class="col1 centeralign" | boolean
+
|-
| class="col2 centeralign" |
+
| Description
| class="col3" | This is True if the chunks consists of a contiguous column of non-air (i.e., indicated with a '1' in the bitmask) chunks starting at Y=0, followed by any number of unsent chunks containing only air.
+
| {{Type|String}} (4096)
|- class="row4"
+
|
| class="col0 centeralign" | Primary bit map
 
| class="col1 centeralign" | short
 
| class="col2 centeralign" | 15
 
| class="col3" | Bitmask with 1 for every 16x16x16 chunk which data follows in the compressed data.
 
|- class="row5"
 
| class="col0 centeralign" | Add bit map
 
| class="col1 centeralign" | short
 
| class="col2 centeralign" | 0
 
| class="col3" | Same as above, but this is used exclusively for the 'add' portion of the payload
 
|- class="row6"
 
| class="col0 centeralign" | Compressed size
 
| class="col1 centeralign" | int
 
| class="col2 centeralign" |
 
| class="col3" | Size of compressed region data.
 
|- class="row7"
 
| class="col0 centeralign" | Unused int
 
| class="col1 centeralign" | int
 
| class="col2 centeralign" | 0
 
| class="col3" | Doesn't seem to be used by the client. Always 0. I expect this is Mod API stuff.
 
|- class="row8"
 
| class="col0 centeralign" | Compressed data
 
| class="col1 centeralign" | unsigned byte array
 
| class="col2 centeralign" | <code>…</code>
 
| class="col3" | The region data is compressed using ZLib Deflate function.
 
|- class="row9"
 
! class="col0" | Total Size:
 
| class="col1 rightalign" colspan="4" | 22 bytes + Compressed chunk size
 
 
|}
 
|}
  
The payload is a set of 16x16x16 chunks, sharing the same X and Z chunk coordinates. What is and isn't sent is provided by the two bitmask fields. The least significant bit is '1' if the chunk spanning from Y=0 to Y=15 is not completely air, and so forth. For block IDs, metadata, and lighting, the primary bitmask is used. A secondary bitmask is used for 'add' data, which is mojang's means of provided Block IDs past 256. In vanilla minecraft, you can expect this to always be zero.
+
==== Clientbound Server Links (play) ====
 
 
The data is compressed using the deflate() function in [http://www.zlib.net/ zlib]. After uncompressing, the data consists of five (or six) sequential sections, in order:
 
 
 
* Block type array (1 byte per block, 4096 bytes per chunk)
 
* Block metadata array (half byte per block, 2048 bytes per chunk)
 
* Block light array (half byte per block, 2048 bytes per chunk)
 
* Sky light array (half byte per block, 2048 bytes per chunk)
 
* Add array (half byte per block, 2048 bytes per chunk, uses second bitmask)
 
* Biome array (1 byte per XZ column, 256 bytes total, only sent if 'ground up contiguous' is true)
 
 
 
In each section except biome data, your loop should look something like this:
 
<code>
 
  for (i=0;i<16;i++) {
 
    if (bitmask & 1 << i) {
 
      data = io.read(4096); //2048 for the other arrays, where you'll need to split the data
 
     
 
      for(int j=0; j<len(data); j++) {
 
       
 
        //Block data
 
        x = (j & 0xF0) >> 4;
 
        y = j & 0x0F;
 
        z = j >> 8;
 
       
 
        //Nibble arrays
 
        d1 = data[j] & 0x0F;
 
        d2 = data[j] >> 4;
 
       
 
        k = 2*j;
 
        x1 = (k & 0xF0) >> 4;
 
        y1 = k & 0x0F;
 
        z1 = k >> 8;
 
       
 
        k++;
 
        x2 = (k & 0xF0) >> 4;
 
        y2 = k & 0x0F;
 
        z2 = k >> 8;
 
      }
 
    }
 
  }
 
</code>
 
 
 
Each biome byte can have the values from 0 to 22, higher will cause the client to crash.
 
 
 
The 'add' array uses the second bitmask. Block IDs are presumed to be <code>block_id | add << 8</code>
 
 
 
=== Multi Block Change (0x34) ===
 
 
 
Like 0x33, this follows a new format. Arrays are now interlaced rather than sequential!
 
 
 
{| class="wikitable"
 
|- class="row0"
 
! class="col0" | Packet ID
 
! class="col1" | Field Name
 
! class="col2" | Field Type
 
! class="col3" | Example
 
! class="col4" | Notes
 
|- class="row1"
 
| class="col0 centeralign" rowspan="5" | 0x34
 
| class="col1 centeralign" | Chunk X
 
| class="col2 centeralign" | int
 
| class="col3 centeralign" | <code>-9</code>
 
| class="col4" | Chunk X Coordinate
 
|- class="row2"
 
| class="col0 centeralign" | Chunk Z
 
| class="col1 centeralign" | int
 
| class="col2 centeralign" | <code>12</code>
 
| class="col3" | Chunk Z Coordinate
 
|- class="row3"
 
| class="col0 centeralign" | Record count
 
| class="col1 centeralign" | short
 
| class="col2 centeralign" |
 
| class="col3" | The number of blocks affected
 
|- class="row2"
 
| class="col0 centeralign" | Data size
 
| class="col1 centeralign" | int
 
| class="col2 centeralign" |
 
| class="col3" | The total size of the data, in bytes. Should always be 4*record count - please confirm.
 
|- class="row4"
 
| class="col0 centeralign" | Data
 
| class="col1 centeralign" |
 
| class="col2 centeralign" | <code>…</code>
 
| class="col3" | Coordinates, type, and metadata of blocks to change.
 
|- class="row5"
 
! class="col0" | Total Size:
 
| class="col1 rightalign" colspan="4" | 15 bytes + Arrays
 
|}
 
  
Each record is four bytes.
+
This packet contains a list of links that the Notchian client will display in the menu available from the pause menu. Link labels can be built-in or custom (i.e., any text).
  
{| class="wikitable"
+
{| class="wikitable" {{added}}
|- class="row0"
+
! Packet ID
! class="col0" | Bit mask
+
! State
! class="col1" | Width
+
! Bound To
! class="col2" | Meaning
+
! colspan="2"| Field Name
|- class="row1"
+
! colspan="2"| Field Type
| class="col0" | 00 00 00 0F
+
! Notes
| class="col1" | 4 bits
+
|-
| class="col2" | Block metadata
+
| rowspan="4"| 0x7B
|- class="row2"
+
| rowspan="4"| Configuration
| class="col0" | 00 00 FF F0
+
| rowspan="4"| Client
| class="col1" | 12 bits
+
| colspan="2"| Links Count
| class="col2" | Block ID
+
| colspan="2"| {{Type|VarInt}}
|- class="row3"
+
| The number of links in the following array.
| class="col0" | 00 FF 00 00
+
|-
| class="col1" | 8 bits
+
| rowspan="3"| Links
| class="col2" | Y co-ordinate
+
| Is built-in
|- class="row4"
+
| rowspan="3"| {{Type|Array}}
| class="col0" | 0F 00 00 00
+
| {{Type|Boolean}}
| class="col1" | 4 bits
+
| Determines if the following label is built-in (from enum) or custom (text component).
| class="col2" | Z co-ordinate, relative to chunk
+
|-
|- class="row5"
+
| Label
| class="col0" | F0 00 00 00
+
| {{Type|VarInt}} {{Type|Enum}} / {{Type|Text Component}}
| class="col1" | 4 bits
+
| See below.
| class="col2" | X co-ordinate, relative to chunk
+
|-
 +
| URL
 +
| {{Type|String}}
 +
| Valid URL.
 
|}
 
|}
  
== Protocol History ==
+
{| class="wikitable" {{added}}
 
+
! ID
=== 2012-02-23 ===
+
! Name
* 12w08a
+
! Notes
* Protocol version is now 28
+
|-
* Updated packets: 0x01, 0x09, 0x34
+
| 0
 
+
| Bug Report
=== 2012-02-15 ===
+
| Displayed on connection error screen; included as a comment in the disconnection report.
* 12w07a
+
|-
* Protocol version is now 27
+
| 1
* Updated packets: 0x01, 0x09, 0x33
+
| Community Guidelines
 +
|
 +
|-
 +
| 2
 +
| Support
 +
|
 +
|-
 +
| 3
 +
| Status
 +
|
 +
|-
 +
| 4
 +
| Feedback
 +
|
 +
|-
 +
| 5
 +
| Community
 +
|
 +
|-
 +
| 6
 +
| Website
 +
|
 +
|-
 +
| 7
 +
| Forums
 +
|
 +
|-
 +
| 8
 +
| News
 +
|
 +
|-
 +
| 9
 +
| Announcements
 +
|
 +
|-
 +
|}
  
=== 2012-02-09 ===
+
=== Serverbound ===
* 12w06a
 
* Protocol version is now 25
 
* New packet: 0x84
 
  
=== 2012-01-26 ===
+
No changes so far.
* 12w04a
 
* Protocol version has not been changed
 
* Handshake Packet by client (0x02) now contains the server host and port
 
* Window Open Packet (0x64): WindowTitle is now longer than accepted by older clients. Contains a keyword such as "container.furnace"
 
  
=== 2012-01-19 ===
+
[[Category:Minecraft Modern]]
* 12w03a
 
* Protocol version is now 24
 
* New packet: 0x23
 
* MobSpawn: new field, 1 byte inserted before metadata.
 

Latest revision as of 10:40, 8 June 2024

This page documents the changes from the last stable Minecraft release (currently 1.20.6, protocol 766) to the current pre-release (currently 1.21-pre2, protocol Snapshot 200). Note that this page contains bleeding-edge information that may not be completely or correctly documented.

One 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 occurred to the respective packets there.

Contents

Data types

No changes documented so far.

Packets

ID Packet name Documentation
Configuration clientbound
0x0F Clientbound Report Details (configuration) Pre
0x10 Clientbound Server Links (configuration) Pre
Play clientbound
0x7A Clientbound Report Details (play) Pre
0x7B Clientbound Server Links (play) Pre

Handshake

No changes so far.

Status

No changes so far.

Login

No changes so far.

Configuration

Clientbound

Clientbound Report Details (configuration)

Contains a list of key-value text entries that are included in any crash or disconnection report generated during connection to the server.

Packet ID State Bound To Field Name Field Type Notes
0x0F Configuration Client Details Count VarInt (32) The number of details in the following array.
Details Title Array String (128)
Description String (4096)

Clientbound Server Links (configuration)

This packet contains a list of links that the Notchian client will display in the menu available from the pause menu. Link labels can be built-in or custom (i.e., any text).

Packet ID State Bound To Field Name Field Type Notes
0x10 Configuration Client Links Count VarInt The number of links in the following array.
Links Is built-in Array Boolean Determines if the following label is built-in (from enum) or custom (text component).
Label VarInt Enum / Text Component See below.
URL String Valid URL.


ID Name Notes
0 Bug Report Displayed on connection error screen; included as a comment in the disconnection report.
1 Community Guidelines
2 Support
3 Status
4 Feedback
5 Community
6 Website
7 Forums
8 News
9 Announcements

Serverbound

No changes so far.

Play

Clientbound

Clientbound Report Details (play)

Contains a list of key-value text entries that are included in any crash or disconnection report generated during connection to the server.

Packet ID State Bound To Field Name Field Type Notes
0x7A Configuration Client Details Count VarInt (32) The number of details in the following array.
Details Title Array String (128)
Description String (4096)

Clientbound Server Links (play)

This packet contains a list of links that the Notchian client will display in the menu available from the pause menu. Link labels can be built-in or custom (i.e., any text).

Packet ID State Bound To Field Name Field Type Notes
0x7B Configuration Client Links Count VarInt The number of links in the following array.
Links Is built-in Array Boolean Determines if the following label is built-in (from enum) or custom (text component).
Label VarInt Enum / Text Component See below.
URL String Valid URL.
ID Name Notes
0 Bug Report Displayed on connection error screen; included as a comment in the disconnection report.
1 Community Guidelines
2 Support
3 Status
4 Feedback
5 Community
6 Website
7 Forums
8 News
9 Announcements

Serverbound

No changes so far.