Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x22 | Play | Client | Chunk X | Int | Chunk coordinate (block coordinate divided by 16, rounded down) |
Chunk Z | Int | Chunk coordinate (block coordinate divided by 16, rounded down) | |||
Full chunk | Boolean | See Chunk Format | |||
Primary Bit Mask | VarInt | Bitmask with bits set to 1 for every 16×16×16 chunk section whose data is included in Data. The least significant bit represents the chunk section at the bottom of the chunk column (from y=0 to y=15). | |||
Heightmaps | NBT | Compound containing one long array named MOTION_BLOCKING , which is a heightmap for the highest solid block at each position in the chunk (as a compacted long array with 256 entries at 9 bits per entry totaling 36 longs). The Notchian server also adds a WORLD_SURFACE long array, the purpose of which is unknown, but it's not required for the chunk to be accepted. |
|||
Biomes | Optional array of Integer | 1024 biome IDs, ordered by x then z then y, in 4×4×4 blocks. Not present if full chunk is false. | |||
Size | VarInt | Size of Data in bytes | |||
Data | Byte array | See data structure in Chunk Format | |||
Number of block entities | VarInt | Number of elements in the following array | |||
Block entities | Array of NBT Tag | All block entities in the chunk. Use the x, y, and z tags in the NBT to determine their positions. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x2A | Play | Client | Entity ID | VarInt | |
Delta X | Short | Change in X position as (currentX * 32 - prevX * 32) * 128 |
|||
Delta Y | Short | Change in Y position as (currentY * 32 - prevY * 32) * 128 |
|||
Delta Z | Short | Change in Z position as (currentZ * 32 - prevZ * 32) * 128 |
|||
Yaw | Angle | New angle, not a delta | |||
Pitch | Angle | New angle, not a delta | |||
On Ground | Boolean |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x54 | Play | Client | Header | Chat | To remove the header, send a empty text component: {"text":""} |
Footer | Chat | To remove the footer, send a empty text component: {"text":""} |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x03 | Login | Client | Threshold | VarInt | Maximum size of a packet before it is compressed |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x57 | Play | Client | Entity ID | VarInt | |
X | Double | ||||
Y | Double | ||||
Z | Double | ||||
Yaw | Angle | New angle, not a delta | |||
Pitch | Angle | New angle, not a delta | |||
On Ground | Boolean |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x4A | Play | Client | Objective Name | String (16) | An unique name for the objective |
Mode | Byte | 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text. | |||
Objective Value | Optional Chat | Only if mode is 0 or 2. The text to be displayed for the score | |||
Type | Optional VarInt enum | Only if mode is 0 or 2. 0 = "integer", 1 = "hearts". |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x3D | Play | Client | Has id | Boolean | Indicates if the next field is present |
Optional Identifier | String (32767) | See below |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x01 | Play | Server | Transaction ID | VarInt | An incremental ID so that the client can verify that the response matches. |
Location | Position | The location of the block to check. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x03 | Play | Server | Message | String (256) | The client sends the raw input, not a Chat component |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x29 | Play | Server | Location | Position | Block Coordinates |
Line 1 | String (384) | First line of text in the sign | |||
Line 2 | String (384) | Second line of text in the sign | |||
Line 3 | String (384) | Third line of text in the sign | |||
Line 4 | String (384) | Fourth line of text in the sign |
Packet ID | State | Bound To | Field Name | Field Type | Notes | |
---|---|---|---|---|---|---|
0x1D | Play | Server | Type | VarInt | Determines the format of the rest of the packet | |
Type | Field Name | |||||
0: Displayed Recipe | Recipe ID | Identifier | A recipe ID | |||
1: Recipe Book States | Crafting Recipe Book Open | Boolean | Whether the player has the crafting recipe book currently opened/active. | |||
Crafting Recipe Filter Active | Boolean | Whether the player has the crafting recipe book filter option currently active. | ||||
Smelting Recipe Book Open | Boolean | Whether the player has the smelting recipe book currently opened/active. | ||||
Smelting Recipe Filter Active | Boolean | Whether the player has the smelting recipe book filter option currently active. | ||||
Blasting Recipe Book Open | Boolean | May be swapped with smoking recipe book. Also, the notchian client appears to use the same value for both of those books currently. | ||||
Blasting Recipe Filter Active | Boolean | May be swapped with smoking recipe book. Also, the notchian client appears to use the same value for both of those books currently. | ||||
Smoking Recipe Book Open | Boolean | |||||
Smoking Recipe Filter Active | Boolean |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x27 | Play | Server | Location | Position | Block entity location |
Attachment type | Identifier | ||||
Target pool | Identifier | ||||
Final state | String | "Turns into" on the GUI, final_state in NBT |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x29 | Play | Client | Entity ID | VarInt | |
Delta X | Short | Change in X position as (currentX * 32 - prevX * 32) * 128 |
|||
Delta Y | Short | Change in Y position as (currentY * 32 - prevY * 32) * 128 |
|||
Delta Z | Short | Change in Z position as (currentZ * 32 - prevZ * 32) * 128 |
|||
On Ground | Boolean |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x35 | Play | Client | |||
Feet/eyes | VarInt enum | Values are feet=0, eyes=1. If set to eyes, aims using the head position; otherwise aims using the feet position. | |||
Target x | Double | x coordinate of the point to face towards | |||
Target y | Double | y coordinate of the point to face towards | |||
Target z | Double | z coordinate of the point to face towards | |||
Is entity | Boolean | If true, additional information about an entity is provided. | |||
Entity ID | Optional VarInt | Only if is entity is true — the entity to face towards | |||
Entity feet/eyes | Optional VarInt enum | Whether to look at the entity's eyes or feet. Same values and meanings as before, just for the entity's head/feet. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0D | Play | Server | Transaction ID | VarInt | An incremental ID so that the client can verify that the response matches. |
Entity ID | VarInt | The ID of the entity to query. |
Field Name | Field Type | Notes | ||
---|---|---|---|---|
Size | VarInt | Size of the following array | ||
Criteria | Criterion identifier | Array | Identifier | The identifier of the criterion. |
Criterion progress | Criterion progress |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x1D | Play | Client | X | Float | |
Y | Float | ||||
Z | Float | ||||
Strength | Float | A strength greater than or equal to 2.0 spawns a minecraft:explosion_emitter particle, while a lesser strength spawns a minecraft:explosion particle. |
|||
Record Count | Int | Number of elements in the following array | |||
Records | Array of (Byte, Byte, Byte) | Each record is 3 signed bytes long; the 3 bytes are the XYZ (respectively) signed offsets of affected blocks. | |||
Player Motion X | Float | X velocity of the player being pushed by the explosion | |||
Player Motion Y | Float | Y velocity of the player being pushed by the explosion | |||
Player Motion Z | Float | Z velocity of the player being pushed by the explosion |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0F | Play | Client | JSON Data | Chat | Limited to 32767 bytes |
Position | Byte | 0: chat (chat box), 1: system message (chat box), 2: game info (above hotbar). |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x1B | Play | Client | Reason | Chat | Displayed to the client when the connection terminates. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0E | Play | Client | Difficulty | Unsigned Byte | 0: peaceful, 1: easy, 2: normal, 3: hard |
Difficulty locked? | Boolean |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0A | Play | Server | Window ID | Unsigned Byte | This is the ID of the window that was closed. 0 for player inventory. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0B | Play | Server | Channel | Identifier | Name of the plugin channel used to send the data |
Data | Byte Array | Any data, depending on the channel. minecraft: channels are documented here. The length of this array must be inferred from the packet length. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x1A | Play | Client | Sound Name | Identifier | All sound effect names as of 1.15.2 can be seen here. |
Sound Category | VarInt Enum | The category that this sound will be played from (current categories) | |||
Effect Position X | Int | Effect X multiplied by 8 (fixed-point number with only 3 bits dedicated to the fractional part) | |||
Effect Position Y | Int | Effect Y multiplied by 8 (fixed-point number with only 3 bits dedicated to the fractional part) | |||
Effect Position Z | Int | Effect Z multiplied by 8 (fixed-point number with only 3 bits dedicated to the fractional part) | |||
Volume | Float | 1 is 100%, can be more | |||
Pitch | Float | Float between 0.5 and 2.0 by Notchian clients |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x12 | Play | Client | Count | VarInt | Number of elements in the following array |
Nodes | Array of Node | An array of nodes | |||
Root index | VarInt | Index of the root node in the previous array |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x20 | Play | Client | Window ID? | Byte | |
Number of slots? | VarInt | ||||
Entity ID? | Integer |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x45 | Play | Client | Attached Entity ID | Int | Attached entity's EID |
Holding Entity ID | Int | ID of the entity holding the lead. Set to -1 to detach. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x17 | Play | Client | Window ID | Byte | The window which is being updated. 0 for player inventory. Note that all known window types include the player inventory. This packet will only be sent for the currently opened window while the player is performing actions, even if it affects the player inventory. After the window is closed, a number of these packets are sent to update the player's inventory window (0). |
Slot | Short | The slot that should be updated | |||
Slot Data | Slot |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x30 | Play | Client | Location | Position |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x48 | Play | Client | Experience bar | Float | Between 0 and 1 |
Level | VarInt | ||||
Total Experience | VarInt | See Experience#Leveling up on the Minecraft Wiki for Total Experience to Level conversion |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x13 | Play | Server | Yaw | Float | Absolute rotation on the X Axis, in degrees |
Pitch | Float | Absolute rotation on the Y Axis, in degrees | |||
On Ground | Boolean | True if the client is on the ground, False otherwise |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x14 | Play | Client | Window ID | Unsigned Byte | This is the ID of the window that was closed. 0 for inventory. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x16 | Play | Server | Left paddle turning | Boolean | |
Right paddle turning | Boolean |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x00 | Status | Server | no fields |
Field Name | Field Type | Notes |
---|---|---|
Achieved | Boolean | If true, next field is present |
Date of achieving | Optional Long | As returned by Date.getTime |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x3C | Play | Client | Entity ID | VarInt | |
Head Yaw | Angle | New angle, not a delta |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x28 | Play | Server | |||
Location | Position | Block entity location | |||
Action | VarInt enum | An additional action to perform beyond simply saving the given data; see below | |||
Mode | VarInt enum | One of SAVE (0), LOAD (1), CORNER (2), DATA (3). | |||
Name | String | ||||
Offset X | Byte | Between -32 and 32 | |||
Offset Y | Byte | Between -32 and 32 | |||
Offset Z | Byte | Between -32 and 32 | |||
Size X | Byte | Between 0 and 32 | |||
Size Y | Byte | Between 0 and 32 | |||
Size Z | Byte | Between 0 and 32 | |||
Mirror | VarInt enum | One of NONE (0), LEFT_RIGHT (1), FRONT_BACK (2). | |||
Rotation | VarInt enum | One of NONE (0), CLOCKWISE_90 (1), CLOCKWISE_180 (2), COUNTERCLOCKWISE_90 (3). | |||
Metadata | String | ||||
Integrity | Float | Between 0 and 1 | |||
Seed | VarLong | ||||
Flags | Byte | 0x01: Ignore entities; 0x02: Show air; 0x04: Show bounding box |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x4D | Play | Client | Entity Name | String (40) | The entity whose score this is. For players, this is their username; for other entities, it is their UUID. |
Action | Byte | 0 to create/update an item. 1 to remove an item. | |||
Objective Name | String (16) | The name of the objective the score belongs to | |||
Value | Optional VarInt | The score to be displayed next to the entry. Only sent when Action does not equal 1. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x2B | Play | Server | Target Player | UUID | UUID of the player to teleport to (can also be an entity UUID) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x1E | Play | Client | Chunk X | Int | Block coordinate divided by 16, rounded down |
Chunk Z | Int | Block coordinate divided by 16, rounded down |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x1C | Play | Client | Entity ID | Int | |
Entity Status | Byte Enum | See below |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x1B | Play | Server | Entity ID | VarInt | Player ID |
Action ID | VarInt Enum | The ID of the action, see below | |||
Jump Boost | VarInt | Only used by the “start jump with horse” action, in which case it ranges from 0 to 100. In all other cases it is 0. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0F | Play | Server | Keep Alive ID | Long |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x26 | Play | Client | Entity ID | Int | The player's Entity ID (EID) |
Gamemode | Unsigned Byte | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. Bit 3 (0x8) is the hardcore flag. | |||
Dimension | Int Enum | -1: Nether, 0: Overworld, 1: End; also, note that this is not a VarInt but instead a regular int. | |||
Hashed seed | Long | First 8 bytes of the SHA-256 hash of the world's seed. | |||
Max Players | Unsigned Byte | Was once used by the client to draw the player list, but now is ignored | |||
Level Type | String Enum (16) | default, flat, largeBiomes, amplified, customized, buffet, default_1_1 | |||
View Distance | VarInt | Render distance (2-32) | |||
Reduced Debug Info | Boolean | If true, a Notchian client shows reduced information on the debug screen. For servers in development, this should almost always be false. | |||
Enable respawn screen | Boolean | Set to false when the doImmediateRespawn gamerule is true |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x2B | Play | Client | Entity ID | VarInt | |
Yaw | Angle | New angle, not a delta | |||
Pitch | Angle | New angle, not a delta | |||
On Ground | Boolean |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x1F | Play | Server | Result | VarInt Enum | 0: successfully loaded, 1: declined, 2: failed download, 3: accepted |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x07 | Play | Server | Window ID | Byte | The ID of the window that the action occurred in |
Action Number | Short | Every action that is to be accepted has a unique number. This number is an incrementing integer (starting at 1) with separate counts for each window ID. | |||
Accepted | Boolean | Whether the action was accepted |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x24 | Play | Server | |||
Location | Position | ||||
Command | String (32767) | ||||
Mode | VarInt enum | One of SEQUENCE (0), AUTO (1), or REDSTONE (2) | |||
Flags | Byte | 0x01: Track Output (if false, the output of the previous command will not be stored within the command block); 0x02: Is conditional; 0x04: Automatic |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x14 | Play | Server | On Ground | Boolean | True if the client is on the ground, false otherwise |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x22 | Play | Server | Primary Effect | VarInt | A Potion ID. (Was a full Integer for the plugin message) |
Secondary Effect | VarInt | A Potion ID. (Was a full Integer for the plugin message) |
Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
---|---|---|---|---|---|---|---|
0x27 | Play | Client | Map ID | VarInt | Map ID of the map being modified | ||
Scale | Byte | From 0 for a fully zoomed-in map (1 block per pixel) to 4 for a fully zoomed-out map (16 blocks per pixel) | |||||
Tracking Position | Boolean | Specifies whether player and item frame icons are shown | |||||
Locked | Boolean | True if the map has been locked in a cartography table | |||||
Icon Count | VarInt | Number of elements in the following array | |||||
Icon | Type | Array | VarInt enum | See below | |||
X | Byte | Map coordinates: -128 for furthest left, +127 for furthest right | |||||
Z | Byte | Map coordinates: -128 for highest, +127 for lowest | |||||
Direction | Byte | 0-15 | |||||
Has Display Name | Boolean | ||||||
Display Name | Optional Chat | Only present if previous Boolean is true | |||||
Columns | Unsigned Byte | Number of columns updated | |||||
Rows | Optional Byte | Only if Columns is more than 0; number of rows updated | |||||
X | Optional Byte | Only if Columns is more than 0; x offset of the westernmost column | |||||
Z | Optional Byte | Only if Columns is more than 0; z offset of the northernmost row | |||||
Length | Optional VarInt | Only if Columns is more than 0; length of the following array | |||||
Data | Optional Array of Unsigned Byte | Only if Columns is more than 0; see Map item format |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x1A | Play | Server | Status | VarInt Enum | The action the player is taking against the block (see below) |
Location | Position | Block position | |||
Face | Byte Enum | The face being hit (see below) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x02 | Login | Server | Message ID | VarInt | Should match ID from server. |
Successful | Boolean | true if the client understands the request, false otherwise. When false , no payload follows. |
|||
Data | Optional Byte Array | Any data, depending on the channel. The length of this array must be inferred from the packet length. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x2A | Play | Server | Hand | VarInt Enum | Hand used for the animation. 0: main hand, 1: off hand. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0xFE | Handshaking | Server | Payload | Unsigned Byte | always 1 (0x01 ) |
Packet ID | State | Bound To | Field Name | Field Type | Notes | |
---|---|---|---|---|---|---|
0x50 | Play | Client | Action | VarInt Enum | ||
Action | Field Name | |||||
0: set title | Title Text | Chat | ||||
1: set subtitle | Subtitle Text | Chat | ||||
2: set action bar | Action bar text | Chat | Displays a message above the hotbar (the same as position 2 in Chat Message (clientbound), except that it correctly renders formatted chat. See MC-119145 for more information.) | |||
3: set times and display | Fade In | Int | Ticks to spend fading in | |||
Stay | Int | Ticks to keep the title displayed | ||||
Fade Out | Int | Ticks to spend out, not when to start fading out | ||||
4: hide | no fields | no fields | ||||
5: reset | no fields | no fields |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x5C | Play | Client | Block Tags | (See below) | IDs are block IDs |
Item Tags | (See below) | IDs are item IDs | |||
Fluid Tags | (See below) | IDs are fluid IDs | |||
Entity Tags | (See below) | IDs are entity IDs |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x00 | Handshaking | Server | Protocol Version | VarInt | See protocol version numbers (currently 578 in Minecraft 1.15.2) |
Server Address | String (255) | Hostname or IP, e.g. localhost or 127.0.0.1, that was used to connect. The Notchian server does not use this information. Note that SRV records are a complete redirect, e.g. if _minecraft._tcp.example.com points to mc.example.org, users connecting to example.com will provide mc.example.org as server address in addition to connecting to it. | |||
Server Port | Unsigned Short | Default is 25565. The Notchian server does not use this information. | |||
Next State | VarInt Enum | 1 for status, 2 for login |
Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
---|---|---|---|---|---|---|---|
0x10 | Play | Client | Chunk X | Int | Chunk X coordinate | ||
Chunk Z | Int | Chunk Z coordinate | |||||
Record Count | VarInt | Number of elements in the following array, i.e. the number of blocks affected | |||||
Record | Horizontal Position | Array | Unsigned Byte | The 4 most significant bits (0xF0 ) encode the X coordinate, relative to the chunk. The 4 least significant bits (0x0F ) encode the Z coordinate, relative to the chunk. |
|||
Y Coordinate | Unsigned Byte | Y coordinate of the block | |||||
Block ID | VarInt | The new block state ID for the block as given in the global palette. See that section for more information. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x2C | Play | Client | Entity ID | VarInt |
Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
---|---|---|---|---|---|---|---|
0x58 | Play | Client | Reset/Clear | Boolean | Whether to reset/clear the current advancements | ||
Mapping size | VarInt | Size of the following array | |||||
Advancement mapping | Key | Array | Identifier | The identifier of the advancement | |||
Value | Advancement | See below | |||||
List size | VarInt | Size of the following array | |||||
Identifiers | Array of Identifier | The identifiers of the advancements that should be removed | |||||
Progress size | VarInt | Size of the following array | |||||
Progress mapping | Key | Array | Identifier | The identifier of the advancement | |||
Value | Advancement progress | See below |
Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
---|---|---|---|---|---|---|---|
0x5B | Play | Client | Num Recipes | VarInt | Number of elements in the following array | ||
Recipe | Type | Array | Identifier | The recipe type, see below | |||
Recipe ID | String | ||||||
Data | Optional, varies | Additional data for the recipe. For some types, there will be no data. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x25 | Play | Server | Entity ID | VarInt | |
Command | String | ||||
Track Output | Boolean | If false, the output of the previous command will not be stored within the command block. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x49 | Play | Client | Health | Float | 0 or less = dead, 20 = full HP |
Food | VarInt | 0–20 | |||
Food Saturation | Float | Seems to vary from 0.0 to 5.0 in integer increments |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x04 | Login | Client | Message ID | VarInt | Generated by the server - should be unique to the connection. |
Channel | Identifier | Name of the plugin channel used to send the data | |||
Data | Byte Array | Any data, depending on the channel. The length of this array must be inferred from the packet length. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x3F | Play | Client | Camera ID | VarInt | ID of the entity to set the client's camera to |
Packet ID | State | Bound To | Field Name | Field Type | Notes | |
---|---|---|---|---|---|---|
0x0D | Play | Client | UUID | UUID | Unique ID for this bar | |
Action | VarInt Enum | Determines the layout of the remaining packet | ||||
Action | Field Name | |||||
0: add | Title | Chat | ||||
Health | Float | From 0 to 1. Values greater than 1 do not crash a Notchian client, and start rendering part of a second health bar at around 1.5. | ||||
Color | VarInt Enum | Color ID (see below) | ||||
Division | VarInt Enum | Type of division (see below) | ||||
Flags | Unsigned Byte | Bit mask. 0x1: should darken sky, 0x2: is dragon bar (used to play end music), 0x04: create fog (previously was also controlled by 0x02) | ||||
1: remove | no fields | no fields | Removes this boss bar | |||
2: update health | Health | Float | as above | |||
3: update title | Title | Chat | ||||
4: update style | Color | VarInt Enum | Color ID (see below) | |||
Dividers | VarInt Enum | as above | ||||
5: update flags | Flags | Unsigned Byte | as above |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x05 | Play | Server | Locale | String (16) | e.g. en_GB |
View Distance | Byte | Client-side render distance, in chunks | |||
Chat Mode | VarInt Enum | 0: enabled, 1: commands only, 2: hidden. See processing chat for more information. | |||
Chat Colors | Boolean | “Colors” multiplayer setting | |||
Displayed Skin Parts | Unsigned Byte | Bit mask, see below | |||
Main Hand | VarInt Enum | 0: Left, 1: Right |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x1E | Play | Server | Item name | String (32767) | The new name of the item |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x24 | Play | Client | Particle ID | Int | The particle ID listed in the particle data type. |
Long Distance | Boolean | If true, particle distance increases from 256 to 65536 | |||
X | Double | X position of the particle | |||
Y | Double | Y position of the particle | |||
Z | Double | Z position of the particle | |||
Offset X | Float | This is added to the X position after being multiplied by random.nextGaussian() | |||
Offset Y | Float | This is added to the Y position after being multiplied by random.nextGaussian() | |||
Offset Z | Float | This is added to the Z position after being multiplied by random.nextGaussian() | |||
Particle Data | Float | The data of each particle | |||
Particle Count | Int | The number of particles to create | |||
Data | Varies | The variable data listed in the particle data type. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x56 | Play | Client | Collected Entity ID | VarInt | |
Collector Entity ID | VarInt | ||||
Pickup Item Count | VarInt | Seems to be 1 for XP orbs, otherwise the number of items in the stack. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x02 | Play | Client | Entity ID | VarInt | The EID of the thunderbolt |
Type | Byte Enum | The global entity type, currently always 1 for thunderbolt | |||
X | Double | ||||
Y | Double | ||||
Z | Double |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x09 | Play | Client | Entity ID | VarInt | Entity ID of the entity breaking the block |
Location | Position | Block Position | |||
Destroy Stage | Byte | 0–9 to set it, any other value to remove it |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x06 | Play | Client | Entity ID | VarInt | Player ID |
Animation | Unsigned Byte | Animation ID (see below) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x4E | Play | Client | Location | Position | Spawn location |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x38 | Play | Client | Count | VarInt | Number of elements in the following array |
Entity IDs | Array of VarInt | The list of entities of destroy |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x03 | Play | Client | Entity ID | VarInt | |
Entity UUID | UUID | ||||
Type | VarInt | The type of mob. See Entities#Mobs | |||
X | Double | ||||
Y | Double | ||||
Z | Double | ||||
Yaw | Angle | ||||
Pitch | Angle | ||||
Head Pitch | Angle | ||||
Velocity X | Short | Same units as Entity Velocity | |||
Velocity Y | Short | Same units as Entity Velocity | |||
Velocity Z | Short | Same units as Entity Velocity |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x00 | Play | Server | Teleport ID | VarInt | The ID given by the Player Position And Look packet |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x01 | Status | Client | Payload | Long | Should be the same as sent by the client |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x43 | Play | Client | Position | Byte | The position of the scoreboard. 0: list, 1: sidebar, 2: below name, 3 - 18: team specific sidebar, indexed as 3 + team color. |
Score Name | String (16) | The unique name for the scoreboard to be displayed. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x52 | Play | Client | Sound ID | VarInt | ID of hardcoded sound event (events as of 1.15.2) |
Sound Category | VarInt Enum | The category that this sound will be played from (current categories) | |||
Effect Position X | Int | Effect X multiplied by 8 (fixed-point number with only 3 bits dedicated to the fractional part) | |||
Effect Position Y | Int | Effect Y multiplied by 8 (fixed-point number with only 3 bits dedicated to the fractional part) | |||
Effect Position Z | Int | Effect Z multiplied by 8 (fixed-point number with only 3 bits dedicated to the fractional part) | |||
Volume | Float | 1.0 is 100%, capped between 0.0 and 1.0 by Notchian clients | |||
Pitch | Float | Float between 0.5 and 2.0 by Notchian clients |
Field Name | Field Type | Notes |
---|---|---|
UUID | UUID | |
Amount | Double | May be positive or negative |
Operation | Byte | See below |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x01 | Login | Client | Server ID | String (20) | Appears to be empty |
Public Key Length | VarInt | Length of Public Key | |||
Public Key | Byte Array | ||||
Verify Token Length | VarInt | Length of Verify Token. Always 4 for Notchian servers. | |||
Verify Token | Byte Array | A sequence of random bytes generated by the server |
Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
---|---|---|---|---|---|---|---|
0x28 | Play | Client | |||||
Window ID | VarInt | The ID of the window that is open; this is an int rather than a byte. | |||||
Size | Byte | The number of trades in the following array | |||||
Trades | Input item 1 | Array | Slot | The first item the villager is buying | |||
Output item | Slot | The item the villager is selling | |||||
Has second item | Boolean | Whether there is a second item | |||||
Input item 2 | Optional Slot | The second item the villager is buying; only present if they have a second item. | |||||
Trade disabled | Boolean | True if the trade is disabled; false if the trade is enabled. | |||||
Number of trade uses | Integer | Number of times the trade has been used so far | |||||
Maximum number of trade uses | Integer | Number of times this trade can be used | |||||
XP | Integer | ||||||
Special Price | Integer | ||||||
Price Multiplier | Float | ||||||
Demand | Integer | ||||||
Villager level | VarInt | Appears on the trade GUI; meaning comes from the translation key merchant.level. + level. 1: Novice, 2: Apprentice, 3: Journeyman, 4: Expert, 5: Master |
|||||
Experience | VarInt | Total experience for this villager (always 0 for the wandering trader) | |||||
Is regular villager | Boolean | True if this is a regular villager; false for the wandering trader. When false, hides the villager level and some other GUI elements. | |||||
Can restock | Boolean | True for regular villagers and false for the wandering trader. If true, the "Villagers restock up to two times per day." message is displayed when hovering over disabled trades. |
Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
---|---|---|---|---|---|---|---|
0x25 | Play | Client | Chunk X | VarInt | Chunk coordinate (block coordinate divided by 16, rounded down) | ||
Chunk Z | VarInt | Chunk coordinate (block coordinate divided by 16, rounded down) | |||||
Sky Light Mask | VarInt | Mask containing 18 bits, with the lowest bit corresponding to chunk section -1 (in the void, y=-16 to y=-1) and the highest bit for chunk section 16 (above the world, y=256 to y=271) | |||||
Block Light Mask | VarInt | Mask containing 18 bits, with the same order as sky light | |||||
Empty Sky Light Mask | VarInt | Mask containing 18 bits, which indicates sections that have 0 for all their sky light values. If a section is set in both this mask and the main sky light mask, it is ignored for this mask and it is included in the sky light arrays (the notchian server does not create such masks). If it is only set in this mask, it is not included in the sky light arrays. | |||||
Empty Block Light Mask | VarInt | Mask containing 18 bits, which indicates sections that have 0 for all their block light values. If a section is set in both this mask and the main block light mask, it is ignored for this mask and it is included in the block light arrays (the notchian server does not create such masks). If it is only set in this mask, it is not included in the block light arrays. | |||||
Sky Light arrays | Length | Array | VarInt | Length of the following array in bytes (always 2048) | |||
Sky Light array | Array of 2048 bytes | There is 1 array for each bit set to true in the sky light mask, starting with the lowest value. Half a byte per light value. | |||||
Block Light arrays | Length | Array | VarInt | Length of the following array in bytes (always 2048) | |||
Block Light array | Array of 2048 bytes | There is 1 array for each bit set to true in the block light mask, starting with the lowest value. Half a byte per light value. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x31 | Play | Client | Window ID | Byte | |
Recipe | Identifier | A recipe ID |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x23 | Play | Client | Effect ID | Int | The ID of the effect, see below |
Location | Position | The location of the effect | |||
Data | Int | Extra data for certain effects, see below | |||
Disable Relative Volume | Boolean | See above |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x44 | Play | Client | Entity ID | VarInt | |
Metadata | Entity Metadata |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x4F | Play | Client | World Age | 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 |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x01 | Login | Server | Shared Secret Length | VarInt | Length of Shared Secret |
Shared Secret | Byte Array | ||||
Verify Token Length | VarInt | Length of Verify Token | |||
Verify Token | Byte Array |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x2E | Play | Client | Hand | VarInt enum | 0: Main hand, 1: Off hand |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x3B | Play | Client | Dimension | Int Enum | -1: The Nether, 0: The Overworld, 1: The End |
Hashed seed | Long | First 8 bytes of the SHA-256 hash of the world's seed. | |||
Gamemode | Unsigned Byte | 0: survival, 1: creative, 2: adventure, 3: spectator. The hardcore flag is not included | |||
Level Type | String (16) | Same as Join Game |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x20 | Play | Server | Action | VarInt enum | 0: Opened tab, 1: Closed screen |
Tab ID | Optional identifier | Only present if action is Opened tab |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x08 | Play | Client | Location | Position | Position where the digging was happening |
Block | VarInt | Block state ID of the block that should be at that position now. | |||
Status | VarInt enum | Same as Player Digging. Only Started digging (0), Cancelled digging (1), and Finished digging (2) are used. | |||
Successful | Boolean | True if the digging succeeded; false if the client should undo any changes it made locally. (How does this work?) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x21 | Play | Client | Keep Alive ID | Long |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x18 | Play | Client | Item ID | VarInt | Numeric ID of the item to apply a cooldown to. |
Cooldown Ticks | VarInt | Number of ticks to apply a cooldown for, or 0 to clear the cooldown. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x2D | Play | Client | X | Double | Absolute position (X coordinate) |
Y | Double | Absolute position (Y coordinate) | |||
Z | Double | Absolute position (Z coordinate) | |||
Yaw | Float | Absolute rotation on the vertical axis, in degrees | |||
Pitch | Float | Absolute rotation on the horizontal axis, in degrees |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0C | Play | Server | New book | Slot | |
Is signing | Boolean | True if the player is signing the book; false if the player is saving a draft. | |||
Hand | VarInt enum | 0: Main hand, 1: Off hand |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x2C | Play | Server | Hand | VarInt Enum | The hand from which the block is placed; 0: main hand, 1: off hand |
Location | Position | Block position | |||
Face | VarInt Enum | The face on which the block is placed (as documented at Player Digging) | |||
Cursor Position X | Float | The position of the crosshair on the block, from 0 to 1 increasing from west to east | |||
Cursor Position Y | Float | The position of the crosshair on the block, from 0 to 1 increasing from bottom to top | |||
Cursor Position Z | Float | The position of the crosshair on the block, from 0 to 1 increasing from north to south | |||
Inside block | Boolean | True when the player's head is inside of a block. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x21 | Play | Server | Selected slot | VarInt | The selected slot int the players current (trading) inventory. (Was a full Integer for the plugin message) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x02 | Play | Server | New difficulty | Byte | 0: peaceful, 1: easy, 2: normal, 3: hard |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x00 | Play | Client | Entity ID | VarInt | EID of the entity |
Object UUID | UUID | ||||
Type | VarInt | The type of entity (same as in Spawn Living Entity) | |||
X | Double | ||||
Y | Double | ||||
Z | Double | ||||
Pitch | Angle | ||||
Yaw | Angle | ||||
Data | Int | Meaning dependent on the value of the Type field, see Object Data for details. | |||
Velocity X | Short | Same units as Entity Velocity. Always sent, but only used when Data is greater than 0 (except for some entities which always ignore it; see Object Data for details). | |||
Velocity Y | Short | ||||
Velocity Z | Short |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x01 | Status | Server | Payload | Long | May be any number. Notchian clients use a system-dependent time value which is counted in milliseconds. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x00 | Login | Client | Reason | Chat |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x12 | Play | Server | X | Double | Absolute position |
Feet Y | Double | Absolute feet position, normally Head Y - 1.62 | |||
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 | Boolean | True if the client is on the ground, false otherwise |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x19 | Play | Server | Flags | Byte | Bit mask. 0x08: damage disabled (god mode), 0x04: can fly, 0x02: is flying, 0x01: is Creative |
Flying Speed | Float | ||||
Walking Speed | Float |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x09 | Play | Server | Window ID | Unsigned Byte | The ID of the window which was clicked. 0 for player inventory. |
Slot | Short | The clicked slot number, see below | |||
Button | Byte | The button used in the click, see below | |||
Action Number | Short | A unique number for the action, implemented by Notchian as a counter, starting at 1 (different counter for every window ID). Used by the server to send back a Confirm Transaction (clientbound). | |||
Mode | VarInt Enum | Inventory operation mode, see below | |||
Clicked item | Slot | The clicked slot. Has to be empty (item ID = -1) for drop mode. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x06 | Play | Server | Transaction Id | VarInt | The id received in the tab completion request packet, must match or the client will ignore this packet. Client generates this and increments it each time it sends another tab completion that doesn't get a response. |
Text | String (32500) | All text behind the cursor without the / (e.g. to the left of the cursor in left-to-right languages like English) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0B | Play | Client | Location | Position | Block coordinates |
Action ID (Byte 1) | Unsigned Byte | Varies depending on block — see Block Actions | |||
Action Param (Byte 2) | Unsigned Byte | Varies depending on block — see Block Actions | |||
Block Type | VarInt | The block type ID for the block. This must match the block at the given coordinates. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x41 | Play | Client | Chunk X | VarInt | Chunk X coordinate of the player's position |
Chunk Z | VarInt | Chunk Z coordinate of the player's position |
Field Name | Field Type | Notes | ||
---|---|---|---|---|
Length | VarInt | Number of elements in the following array | ||
Tags | Tag name | Array | Identifier | |
Count | VarInt | Number of elements in the following array | ||
Entries | Array of VarInt | Numeric ID of the block/item. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x19 | Play | Client | Channel | Identifier | Name of the plugin channel used to send the data |
Data | Byte Array | Any data, depending on the channel. minecraft: channels are documented here. The length of this array must be inferred from the packet length. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x23 | Play | Server | Slot | Short | The slot which the player has selected (0–8) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x15 | Play | Server | X | Double | Absolute position (X coordinate) |
Y | Double | Absolute position (Y coordinate) | |||
Z | Double | Absolute position (Z coordinate) | |||
Yaw | Float | Absolute rotation on the vertical axis, in degrees | |||
Pitch | Float | Absolute rotation on the horizontal axis, in degrees |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x37 | Play | Client | |||
Action | VarInt | 0: init, 1: add, 2: remove | |||
Crafting Recipe Book Open | Boolean | If true, then the crafting recipe book will be open when the player opens its inventory. | |||
Crafting Recipe Book Filter Active | Boolean | If true, then the filtering option is active when the players opens its inventory. | |||
Smelting Recipe Book Open | Boolean | If true, then the smelting recipe book will be open when the player opens its inventory. | |||
Smelting Recipe Book Filter Active | Boolean | If true, then the filtering option is active when the players opens its inventory. | |||
Array size 1 | VarInt | Number of elements in the following array | |||
Recipe IDs | Array of Identifier | ||||
Array size 2 | Optional VarInt | Number of elements in the following array, only present if mode is 0 (init) | |||
Recipe IDs | Optional Array of Identifier, only present if mode is 0 (init) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x36 | Play | Client | X | Double | Absolute or relative position, depending on Flags |
Y | Double | Absolute or relative position, depending on Flags | |||
Z | Double | Absolute or relative position, depending on Flags | |||
Yaw | Float | Absolute or relative rotation on the X axis, in degrees | |||
Pitch | Float | Absolute or relative rotation on the Y axis, in degrees | |||
Flags | Byte | Bit field, see below | |||
Teleport ID | VarInt | Client should confirm this packet with Teleport Confirm containing the same Teleport ID |
Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
---|---|---|---|---|---|---|---|
0x07 | Play | Client | Count | VarInt | Number of elements in the following array | ||
Statistic | Category ID | Array | VarInt | See below | |||
Statistic ID | VarInt | See below | |||||
Value | VarInt | The amount to set it to |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x13 | Play | Client | Window ID | Byte | The ID of the window that the action occurred in |
Action Number | Short | Every action that is to be accepted has a unique number. This number is an incrementing integer (starting at 0) with separate counts for each window ID. | |||
Accepted | Boolean | Whether the action was accepted |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x15 | Play | Client | Window ID | Unsigned Byte | The ID of window which items are being sent for. 0 for player inventory. |
Count | Short | Number of elements in the following array | |||
Slot Data | Array of Slot |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x39 | Play | Client | Entity ID | VarInt | |
Effect ID | Byte | See this table |
Field Name | Field Type | Notes |
---|---|---|
Title | Chat | |
Description | Chat | |
Icon | Slot | |
Frame type | VarInt enum | 0 = task , 1 = challenge , 2 = goal |
Flags | Integer | 0x1: has background texture; 0x2: show_toast ; 0x4: hidden |
Background texture | Optional Identifier | Background texture location. Only if flags indicates it. |
X coord | Float | |
Y coord | Float |
Field Name | Field Type | Notes | ||
---|---|---|---|---|
Has parent | Boolean | Indicates whether the next field exists. | ||
Parent id | Optional Identifier | The identifier of the parent advancement. | ||
Has display | Boolean | Indicates whether the next field exists | ||
Display data | Optional advancement display | See below. | ||
Number of criteria | VarInt | Size of the following array | ||
Criteria | Key | Array | Identifier | The identifier of the criterion |
Value | Void | There is no content written here. Perhaps this will be expanded in the future? | ||
Array length | VarInt | Number of arrays in the following array | ||
Requirements | Array length 2 | Array | VarInt | Number of elements in the following array |
Requirement | Array of String | Array of required criteria |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x55 | Play | Client | Transaction ID | VarInt | Can be compared to the one sent in the original query packet. |
NBT | NBT Tag | The NBT of the block or entity. May be a TAG_END (0) in which case no NBT is present. |
Field Name | Field Type | Notes |
---|---|---|
Length | VarInt | Length of Packet ID + Data |
Packet ID | VarInt | |
Data | Byte Array | Depends on the connection state and packet ID, see the sections below |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x00 | Status | Client | |||
JSON Response | String (32767) | See Server List Ping#Response; as with all strings this is prefixed by its length as a VarInt |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x42 | Play | Client | View Distance | VarInt | Render distance (2-32) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0A | Play | Client | Location | Position | |
Action | Unsigned Byte | The type of update to perform, see below | |||
NBT Data | NBT Tag | Data to set. May be a TAG_END (0), in which case the block entity at the given location is removed (though this is not required since the client will remove the block entity automatically on chunk unload or block removal) |
Packet ID | State | Bound To | Field Name | Field Type | Notes | |
---|---|---|---|---|---|---|
0x4C | Play | Client | Team Name | String (16) | A unique name for the team. (Shared with scoreboard). | |
Mode | Byte | Determines the layout of the remaining packet | ||||
0: create team | Team Display Name | Chat | ||||
Friendly Flags | Byte | Bit mask. 0x01: Allow friendly fire, 0x02: can see invisible players on same team | ||||
Name Tag Visibility | String Enum (32) | always , hideForOtherTeams , hideForOwnTeam , never |
||||
Collision Rule | String Enum (32) | always , pushOtherTeams , pushOwnTeam , never |
||||
Team Color | VarInt enum | Used to color the name of players on the team; see below | ||||
Team Prefix | Chat | Displayed before the names of players that are part of this team | ||||
Team Suffix | Chat | Displayed after the names of players that are part of this team | ||||
Entity Count | VarInt | Number of elements in the following array | ||||
Entities | Array of String (40) | Identifiers for the entities in this team. For players, this is their username; for other entities, it is their UUID. | ||||
1: remove team | no fields | no fields | ||||
2: update team info | Team Display Name | Chat | ||||
Friendly Flags | Byte | Bit mask. 0x01: Allow friendly fire, 0x02: can see invisible entities on same team | ||||
Name Tag Visibility | String Enum (32) | always , hideForOtherTeams , hideForOwnTeam , never |
||||
Collision Rule | String Enum (32) | always , pushOtherTeams , pushOwnTeam , never |
||||
Team Color | VarInt enum | Used to color the name of players on the team; see below | ||||
Team Prefix | Chat | Displayed before the names of players that are part of this team | ||||
Team Suffix | Chat | Displayed after the names of players that are part of this team | ||||
3: add players to team | Entity Count | VarInt | Number of elements in the following array | |||
Entities | Array of String (40) | Identifiers for the entities added. For players, this is their username; for other entities, it is their UUID. | ||||
4: remove players from team | Entity Count | VarInt | Number of elements in the following array | |||
Entities | Array of String (40) | Identifiers for the entities removed. For players, this is their username; for other entities, it is their UUID. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x16 | Play | Client | Window ID | Unsigned Byte | |
Property | Short | The property to be updated, see below | |||
Value | Short | The new value for the property, see below |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x53 | Play | Client | Flags | Byte | Controls which fields are present. |
Source | Optional VarInt enum | Only if flags is 3 or 1 (bit mask 0x1). See below. If not present, then sounds from all sources are cleared. | |||
Sound | Optional Identifier | Only if flags is 2 or 3 (bit mask 0x2). A sound effect name, see Named Sound Effect. If not present, then all sounds are cleared. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x04 | Play | Server | Action ID | VarInt Enum | See below |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x51 | Play | Client | Sound ID | VarInt | ID of hardcoded sound event (events as of 1.15.2) |
Sound Category | VarInt Enum | The category that this sound will be played from (current categories) | |||
Entity ID | VarInt | ||||
Volume | Float | 1.0 is 100%, capped between 0.0 and 1.0 by Notchian clients | |||
Pitch | Float | Float between 0.5 and 2.0 by Notchian clients |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x04 | Play | Client | Entity ID | VarInt | |
Entity UUID | UUID | ||||
Motive | VarInt | Panting's ID, see below | |||
Location | Position | Center coordinates (see below) | |||
Direction | Byte Enum | Direction the painting faces (North = 2, South = 0, West = 1, East = 3) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x02 | Login | Client | UUID | String (36) | Unlike in other packets, this field contains the UUID as a string with hyphens. |
Username | String (16) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x10 | Play | Server | Locked | Boolean |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x1F | Play | Client | Reason | Unsigned Byte | See below |
Value | Float | Depends on Reason |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x32 | Play | Client | Flags | Byte | Bit field, see below |
Flying Speed | Float | 0.05 by default | |||
Field of View Modifier | Float | Modifies the field of view, like a speed potion. A Notchian server will use the same value as the movement speed sent in the Entity Properties packet, which defaults to 0.1 for players. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x1C | Play | Server | Sideways | Float | Positive to the left of the player |
Forward | Float | Positive forward | |||
Flags | Unsigned Byte | Bit mask. 0x1: jump, 0x2: unmount |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x17 | Play | Server | Slot to use | VarInt | See Inventory |
Packet ID | State | Bound To | Field Name | Field Type | Notes | |||||
---|---|---|---|---|---|---|---|---|---|---|
0x34 | Play | Client | Action | VarInt | Determines the rest of the Player format after the UUID | |||||
Number Of Players | VarInt | Number of elements in the following array | ||||||||
Player | UUID | Array | UUID | |||||||
Action | Field Name | |||||||||
0: add player | Name | String (16) | ||||||||
Number Of Properties | VarInt | Number of elements in the following array | ||||||||
Property | Name | Array | String (32767) | |||||||
Value | String (32767) | |||||||||
Is Signed | Boolean | |||||||||
Signature | Optional String (32767) | Only if Is Signed is true | ||||||||
Gamemode | VarInt | |||||||||
Ping | VarInt | Measured in milliseconds | ||||||||
Has Display Name | Boolean | |||||||||
Display Name | Optional Chat | Only if Has Display Name is true | ||||||||
1: update gamemode | Gamemode | VarInt | ||||||||
2: update latency | Ping | VarInt | Measured in milliseconds | |||||||
3: update display name | Has Display Name | Boolean | ||||||||
Display Name | Optional Chat | Only send if Has Display Name is true | ||||||||
4: remove player | no fields | no fields |
Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
---|---|---|---|---|---|---|---|
0x11 | Play | Client | |||||
ID | VarInt | Transaction ID | |||||
Start | VarInt | Start of the text to replace | |||||
Length | VarInt | Length of the text to replace | |||||
Count | VarInt | Number of elements in the following array | |||||
Matches | Match | Array | String (32767) | One eligible value to insert, note that each command is sent separately instead of in a single string, hence the need for Count. Note that for instance this doesn't include a leading / on commands. |
|||
Has tooltip | Boolean | True if the following is present | |||||
Tooltip | Optional Chat | Tooltip to display; only present if previous boolean is true |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x4B | Play | Client | Entity ID | VarInt | Vehicle's EID |
Passenger Count | VarInt | Number of elements in the following array | |||
Passengers | Array of VarInt | EIDs of entity's passengers |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x2D | Play | Server | Hand | VarInt Enum | Hand used for the animation. 0: main hand, 1: off hand. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x11 | Play | Server | X | Double | Absolute position |
Feet Y | Double | Absolute feet position, normally Head Y - 1.62 | |||
Z | Double | Absolute position | |||
On Ground | Boolean | True if the client is on the ground, false otherwise |
Packet ID | State | Bound To | Field Name | Field Type | Notes | |
---|---|---|---|---|---|---|
0x3E | Play | Client | Action | VarInt Enum | Determines the format of the rest of the packet | |
Action | Field Name | |||||
0: set size | Diameter | Double | Length of a single side of the world border, in meters | |||
1: lerp size | Old Diameter | Double | Current length of a single side of the world border, in meters | |||
New Diameter | Double | Target length of a single side of the world border, in meters | ||||
Speed | VarLong | Number of real-time milliseconds until New Diameter is reached. It appears that Notchian server does not sync world border speed to game ticks, so it gets out of sync with server lag. If the world border is not moving, this is set to 0. | ||||
2: set center | X | Double | ||||
Z | Double | |||||
3: initialize | X | Double | ||||
Z | Double | |||||
Old Diameter | Double | Current length of a single side of the world border, in meters | ||||
New Diameter | Double | Target length of a single side of the world border, in meters | ||||
Speed | VarLong | Number of real-time milliseconds until New Diameter is reached. It appears that Notchian server does not sync world border speed to game ticks, so it gets out of sync with server lag. If the world border is not moving, this is set to 0. | ||||
Portal Teleport Boundary | VarInt | Resulting coordinates from a portal teleport are limited to ±value. Usually 29999984. | ||||
Warning Time | VarInt | In seconds as set by /worldborder warning time |
||||
Warning Blocks | VarInt | In meters | ||||
4: set warning time | Warning Time | VarInt | In seconds as set by /worldborder warning time |
|||
5: set warning blocks | Warning Blocks | VarInt | In meters |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0C | Play | Client | Location | Position | Block Coordinates |
Block ID | VarInt | The new block state ID for the block as given in the global palette. See that section for more information. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0E | Play | Server | Entity ID | VarInt | The ID of the entity to interact |
Type | VarInt Enum | 0: interact, 1: attack, 2: interact at | |||
Target X | Optional Float | Only if Type is interact at | |||
Target Y | Optional Float | Only if Type is interact at | |||
Target Z | Optional Float | Only if Type is interact at | |||
Hand | Optional VarInt Enum | Only if Type is interact or interact at; 0: main hand, 1: off hand |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x18 | Play | Server | Window ID | Byte | |
Recipe | Identifier | A recipe ID | |||
Make all | Boolean | Affects the amount of items processed; true if shift is down when clicked |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x46 | Play | Client | Entity ID | VarInt | |
Velocity X | Short | Velocity on the X axis | |||
Velocity Y | Short | Velocity on the Y axis | |||
Velocity Z | Short | Velocity on the Z axis |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x5A | Play | Client | Entity ID | VarInt | |
Effect ID | Byte | See this table | |||
Amplifier | Byte | Notchian client displays effect level as Amplifier + 1 | |||
Duration | VarInt | Duration in ticks. | |||
Flags | Byte | Bit field, see below. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x08 | Play | Server | Window ID | Byte | The ID of the window sent by Open Window |
Button ID | Byte | Meaning depends on window type; see below |
Packet ID | State | Bound To | Field Name | Field Type | Notes | |
---|---|---|---|---|---|---|
0x33 | Play | Client | Event | VarInt Enum | Determines the layout of the remaining packet | |
Event | Field Name | |||||
0: enter combat | no fields | no fields | ||||
1: end combat | Duration | VarInt | Length of the combat in ticks. | |||
Entity ID | Int | ID of the primary opponent of the ended combat, or -1 if there is no obvious primary opponent. | ||||
2: entity dead | Player ID | VarInt | Entity ID of the player that died (should match the client's entity ID). | |||
Entity ID | Int | The killing entity's ID, or -1 if there is no obvious killer. | ||||
Message | Chat | The death message |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x00 | Login | Server | Name | String (16) | Player's Username |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x3A | Play | Client | URL | String (32767) | The URL to the resource pack. |
Hash | String (40) | A 40 character hexadecimal and lowercase SHA-1 hash of the resource pack file. (must be lower case in order to work) If it's not a 40 character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth — but it will still treat it as a unique id |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x47 | Play | Client | Entity ID | VarInt | Entity's EID |
Slot | VarInt Enum | Equipment slot. 0: main hand, 1: off hand, 2–5: armor slot (2: boots, 3: leggings, 4: chestplate, 5: helmet) | |||
Item | Slot |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x2F | Play | Client | Window ID | VarInt | A unique id number for the window to be displayed. Notchian server implementation is a counter, starting at 1. |
Window Type | VarInt | The window type to use for display. Contained in the minecraft:menu regisry; see Inventory for the different values. |
|||
Window Title | Chat | The title of the window |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x05 | Play | Client | Entity ID | VarInt | Player's EID |
Player UUID | UUID | See below for notes on offline mode and NPCs | |||
X | Double | ||||
Y | Double | ||||
Z | Double | ||||
Yaw | Angle | ||||
Pitch | Angle |
Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
---|---|---|---|---|---|---|---|
0x59 | Play | Client | Entity ID | VarInt | |||
Number Of Properties | Int | Number of elements in the following array | |||||
Property | Key | Array | String (64) | See below | |||
Value | Double | See below | |||||
Number Of Modifiers | VarInt | Number of elements in the following array | |||||
Modifiers | Array of Modifier Data | See Attribute#Modifiers. Modifier Data defined below. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x01 | Play | Client | Entity ID | VarInt | |
X | Double | ||||
Y | Double | ||||
Z | Double | ||||
Count | Short | The amount of experience this orb will reward once collected |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x26 | Play | Server | Slot | Short | Inventory slot |
Clicked Item | Slot |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x40 | Play | Client | Slot | Byte | The slot which the player has selected (0–8) |