Complete reference guide for Minecraft Java Edition packet IDs across all versions.
This comprehensive database contains packet IDs for Minecraft protocol packets including clientbound and serverbound packets. Find packet IDs, version ranges, packet fields, and detailed descriptions for all Minecraft versions from 1.8 to latest.
Minecraft packets are the fundamental units of communication between the Minecraft client and server. Each packet has a unique ID that varies between Minecraft versions. This reference provides:
- Packet IDs in hexadecimal and decimal formats
- Version ranges showing when each packet ID is valid
- Packet fields with types and descriptions
- Clientbound packets - sent from server to client
- Serverbound packets - sent from client to server
- Use Ctrl+F (or Cmd+F on Mac) to search for a specific packet name
- Check the version range to find the correct packet ID for your Minecraft version
- Use the packet ID in hexadecimal (0x...) or decimal format
- Review packet fields to understand the packet structure
Total packets documented: 241
- Clientbound Packets - 170 packets
- Serverbound Packets - 71 packets
Clientbound packets are sent from server to client. Total: 170 packets.
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0xE | 14 |
| 1.9 - 1.19.3 | 0x0 | 0 |
| 1.19.4 - 1.21.9 | 0x1 | 1 |
Description:
Sent by the server to create an entity on the client, normally upon the entity spawning within or entering the player's view range. The local player entity is automatically created by the client, and must not be created explicitly using this packet. Doing so on the vanilla client will have strange consequences.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID: A unique integer ID mostly used in the protocol to identify the entity. If an entity with the same ID already exists on the client, it is automatically deleted and replaced by the new entity. On the vanilla server entity IDs are globally unique across all dimensions and never reused while the server is running, but not preserved across server restarts. |
UUID |
Entity UUID: A unique identifier that is mostly used in persistence and places where the uniqueness matters more. It is possible to create multiple entities with the same UUID on the vanilla client, but a warning will be logged, and functionality dependent on UUIDs may ignore the entity or otherwise misbehave. |
VAR_INT |
Type: ID in the minecraft:entity_type registry (see "type" field in Entity metadata#Entities). |
DOUBLE |
X |
DOUBLE |
Y |
DOUBLE |
Z |
BYTE |
Pitch |
BYTE |
Yaw |
BYTE |
Head Yaw: Only used by living entities, where the head of the entity may differ from the general body rotation. |
VAR_INT |
Data: Meaning dependent on the value of the Type field, see Object Data for details. |
SHORT |
Velocity X: Same units as Set Entity Velocity. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x11 | 17 |
| 1.9 - 1.19.3 | 0x1 | 1 |
| 1.19.4 - 1.21.2 | 0x2 | 2 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x2C | 44 |
| 1.9 - 1.15 | 0x2 | 2 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0xF | 15 |
| 1.9 - 1.15 | 0x3 | 3 |
| 1.16 - 1.18 | 0x2 | 2 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x10 | 16 |
| 1.9 - 1.15 | 0x4 | 4 |
| 1.16 - 1.18 | 0x3 | 3 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0xC | 12 |
| 1.9 - 1.15 | 0x5 | 5 |
| 1.16 - 1.18 | 0x4 | 4 |
| 1.19 - 1.19.3 | 0x2 | 2 |
| 1.19.4 | 0x3 | 3 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.17 - 1.18 | 0x5 | 5 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0xB | 11 |
| 1.9 - 1.15 | 0x6 | 6 |
| 1.16 - 1.16.2 | 0x5 | 5 |
| 1.17 - 1.18 | 0x6 | 6 |
| 1.19 - 1.19.3 | 0x3 | 3 |
| 1.19.4 - 1.20.1 | 0x4 | 4 |
| 1.20.2 - 1.21.4 | 0x3 | 3 |
| 1.21.5 - 1.21.9 | 0x2 | 2 |
Description:
Sent whenever an entity should change animation.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID: Player ID. |
BYTE |
Animation: Animation ID (see below). |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x37 | 55 |
| 1.9 - 1.15 | 0x7 | 7 |
| 1.16 - 1.16.2 | 0x6 | 6 |
| 1.17 - 1.18 | 0x7 | 7 |
| 1.19 - 1.19.3 | 0x4 | 4 |
| 1.19.4 - 1.20.1 | 0x5 | 5 |
| 1.20.2 - 1.21.4 | 0x4 | 4 |
| 1.21.5 - 1.21.9 | 0x3 | 3 |
Description:
Sent as a response to Client Status (id 1). Will only send the changed values if previously requested.
Packet Fields:
| Type | Description |
|---|---|
CATEGORY_ID |
Statistics: Prefixed Array |
VAR_INT |
Statistic ID: See below. |
VAR_INT |
Value: The amount to set it to. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.14.4 | 0x5C | 92 |
| 1.15 | 0x8 | 8 |
| 1.16 - 1.16.2 | 0x7 | 7 |
| 1.17 - 1.18 | 0x8 | 8 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19 - 1.19.3 | 0x5 | 5 |
| 1.19.4 - 1.20.1 | 0x6 | 6 |
| 1.20.2 - 1.21.4 | 0x5 | 5 |
| 1.21.5 - 1.21.9 | 0x4 | 4 |
Description:
Acknowledges a user-initiated block change. After receiving this packet, the client will display the block state sent by the server instead of the one predicted by the client.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Sequence ID: Represents the sequence to acknowledge; this is used for properly syncing block changes to the client after interactions. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x25 | 37 |
| 1.9 - 1.14.4 | 0x8 | 8 |
| 1.15 | 0x9 | 9 |
| 1.16 - 1.16.2 | 0x8 | 8 |
| 1.17 - 1.18 | 0x9 | 9 |
| 1.19 - 1.19.3 | 0x6 | 6 |
| 1.19.4 - 1.20.1 | 0x7 | 7 |
| 1.20.2 - 1.21.4 | 0x6 | 6 |
| 1.21.5 - 1.21.9 | 0x5 | 5 |
Description:
0–9 are the displayable destroy stages and each other number means that there is no animation on this coordinate. Block break animations can still be applied on air; the animation will remain visible, although there is no block being broken. However, if this is applied to a transparent block, odd graphical effects may happen, including water losing its transparency. (An effect similar to this can be seen in normal gameplay when breaking ice blocks) If you need to display several break animations at the same time, you have to give each of them a unique Entity ID. The entity ID does not need to correspond to an actual entity on the client. It is valid to use a randomly generated number. When removing the break animation, you must use the ID of the entity that set it.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID: The ID of the entity breaking the block. |
POSITION |
Location: Block Position. |
BYTE |
Destroy Stage: 0–9 to set it, any other value to remove it. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x35 | 53 |
| 1.9 - 1.14.4 | 0x9 | 9 |
| 1.15 | 0xA | 10 |
| 1.16 - 1.16.2 | 0x9 | 9 |
| 1.17 - 1.18 | 0xA | 10 |
| 1.19 - 1.19.3 | 0x7 | 7 |
| 1.19.4 - 1.20.1 | 0x8 | 8 |
| 1.20.2 - 1.21.4 | 0x7 | 7 |
| 1.21.5 - 1.21.9 | 0x6 | 6 |
Description:
Sets the block entity associated with the block at the given location.
Packet Fields:
| Type | Description |
|---|---|
POSITION |
Location |
VAR_INT |
Type: ID in the minecraft:block_entity_type registry |
NBT |
NBT Data: Data to set. |
POSITION |
Location |
VAR_INT |
Type: ID in the minecraft:block_entity_type registry |
NBT |
NBT Data: Data to set. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x24 | 36 |
| 1.9 - 1.14.4 | 0xA | 10 |
| 1.15 | 0xB | 11 |
| 1.16 - 1.16.2 | 0xA | 10 |
| 1.17 - 1.18 | 0xB | 11 |
| 1.19 - 1.19.3 | 0x8 | 8 |
| 1.19.4 - 1.20.1 | 0x9 | 9 |
| 1.20.2 - 1.21.4 | 0x8 | 8 |
| 1.21.5 - 1.21.9 | 0x7 | 7 |
Description:
This packet is used for a number of actions and animations performed by blocks, usually non-persistent. The client ignores the provided block type and instead uses the block state in their world. See Block Actions for a list of values.
Packet Fields:
| Type | Description |
|---|---|
POSITION |
Location: Block coordinates. |
BYTE |
Action ID (Byte 1): Varies depending on block — see Block Actions. |
BYTE |
Action Parameter (Byte 2): Varies depending on block — see Block Actions. |
VAR_INT |
Block Type: ID in the minecraft:block registry. This value is unused by the vanilla client, as it will infer the type of block based on the given position. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x23 | 35 |
| 1.9 - 1.14.4 | 0xB | 11 |
| 1.15 | 0xC | 12 |
| 1.16 - 1.16.2 | 0xB | 11 |
| 1.17 - 1.18 | 0xC | 12 |
| 1.19 - 1.19.3 | 0x9 | 9 |
| 1.19.4 - 1.20.1 | 0xA | 10 |
| 1.20.2 - 1.21.4 | 0x9 | 9 |
| 1.21.5 - 1.21.9 | 0x8 | 8 |
Description:
Fired whenever a block is changed within the render distance.
Packet Fields:
| Type | Description |
|---|---|
POSITION |
Location: Block Coordinates. |
VAR_INT |
Block ID: The new block state ID for the block as given in the block state registry. |
POSITION |
Location: Block Coordinates. |
VAR_INT |
Block ID: The new block state ID for the block as given in the block state registry. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.9 - 1.14.4 | 0xC | 12 |
| 1.15 | 0xD | 13 |
| 1.16 - 1.16.2 | 0xC | 12 |
| 1.17 - 1.18 | 0xD | 13 |
| 1.19 - 1.19.3 | 0xA | 10 |
| 1.19.4 - 1.20.1 | 0xB | 11 |
| 1.20.2 - 1.21.4 | 0xA | 10 |
| 1.21.5 - 1.21.9 | 0x9 | 9 |
Packet Fields:
| Type | Description |
|---|---|
UUID |
UUID: Unique ID for this bar. |
VAR_INT |
Action: Determines the layout of the remaining packet. |
TEXT_COMPONENT |
Title |
FLOAT |
Health: From 0 to 1. Values greater than 1 do not crash a vanilla client, and start rendering part of a second health bar at around 1.5. |
VAR_INT |
Color: Color ID (see below). |
VAR_INT |
Division: Type of division (see below). |
BYTE |
Flags: Bit mask. 0x01: should darken sky, 0x02: is dragon bar (used to play end music), 0x04: create fog (previously was also controlled by 0x02). |
NO_FIELDS |
no fields: Removes this boss bar. |
FLOAT |
Health: as above |
TEXT_COMPONENT |
Title |
VAR_INT |
Color: Color ID (see below). |
VAR_INT |
Dividers: as above |
BYTE |
Flags: as above |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19.4 - 1.21.9 | 0x0 | 0 |
Description:
The delimiter for a bundle of packets. When received, the client should store every subsequent packet it receives and wait until another delimiter is received. Once that happens, the client is guaranteed to process every packet in the bundle on the same tick, and the client should stop storing packets. As of 1.20.6, the vanilla server only uses this to ensure Spawn Entity and associated packets used to configure the entity happen on the same tick. Each entity gets a separate bundle. The vanilla client doesn't allow more than 4096 packets in the same bundle.
Packet Fields:
| Type | Description |
|---|---|
CLIENT |
Play: no fields |
CLIENT |
Play: no fields |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x41 | 65 |
| 1.9 - 1.14.4 | 0xD | 13 |
| 1.15 | 0xE | 14 |
| 1.16 - 1.16.2 | 0xD | 13 |
| 1.17 - 1.18 | 0xE | 14 |
| 1.19 - 1.19.3 | 0xB | 11 |
| 1.19.4 - 1.20.1 | 0xC | 12 |
| 1.20.2 - 1.21.4 | 0xB | 11 |
| 1.21.5 - 1.21.9 | 0xA | 10 |
Description:
Changes the difficulty setting in the client's option menu
Packet Fields:
| Type | Description |
|---|---|
BYTE |
Difficulty: 0: peaceful, 1: easy, 2: normal, 3: hard. |
BOOLEAN |
Difficulty locked? |
BYTE |
Difficulty: 0: peaceful, 1: easy, 2: normal, 3: hard. |
BOOLEAN |
Difficulty locked? |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x2 | 2 |
| 1.9 - 1.12.1 | 0xF | 15 |
| 1.13 - 1.14.4 | 0xE | 14 |
| 1.15 | 0xF | 15 |
| 1.16 - 1.16.2 | 0xE | 14 |
| 1.17 - 1.18 | 0xF | 15 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19 - 1.19.1 | 0xC | 12 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19.4 - 1.20.1 | 0xD | 13 |
| 1.20.2 - 1.21.4 | 0xE | 14 |
| 1.21.5 - 1.21.9 | 0xD | 13 |
Packet Fields:
| Type | Description |
|---|---|
CHUNK_Z |
Chunk biome data: Prefixed Array |
INT |
Chunk X: Chunk coordinate (block coordinate divided by 16, rounded down) |
BYTE |
Data: Chunk data structure, with sections containing only the Biomes field |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.2 - 1.21.4 | 0xC | 12 |
| 1.21.5 - 1.21.9 | 0xB | 11 |
Description:
Marks the end of a chunk batch. The vanilla client marks the time it receives this packet and calculates the elapsed duration since the beginning of the chunk batch. The server uses this duration and the batch size received in this packet to estimate the number of milliseconds elapsed per chunk received. This value is then used to calculate the desired number of chunks per tick through the formula 25 / millisPerChunk, which is reported to the server through Chunk Batch Received. This likely uses 25 instead of the normal tick duration of 50 so chunk processing will only use half of the client's and network's bandwidth. The vanilla client uses the samples from the latest 15 batches to estimate the milliseconds per chunk number.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Batch size: Number of chunks. |
VAR_INT |
Batch size: Number of chunks. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.2 - 1.21.4 | 0xD | 13 |
| 1.21.5 - 1.21.9 | 0xC | 12 |
Description:
Marks the start of a chunk batch. The vanilla client marks and stores the time it receives this packet.
Packet Fields:
| Type | Description |
|---|---|
CLIENT |
Play: no fields |
CLIENT |
Play: no fields |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x22 | 34 |
| 1.9 - 1.12.1 | 0x10 | 16 |
| 1.13 - 1.14.4 | 0xF | 15 |
| 1.15 | 0x10 | 16 |
| 1.16 | 0xF | 15 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.6 - 1.21.8 | 0x84 | 132 |
| 1.21.9 | 0x89 | 137 |
Description:
If we're currently in a dialog screen, then this removes the current screen and switches back to the previous one.
Packet Fields:
| Type | Description |
|---|---|
CLIENT |
Configuration: no fields |
CLIENT |
Play: no fields |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.17 - 1.18 | 0x10 | 16 |
| 1.19 - 1.19.2 | 0xD | 13 |
| 1.19.3 | 0xC | 12 |
| 1.19.4 - 1.20.1 | 0xE | 14 |
| 1.20.2 - 1.21.4 | 0xF | 15 |
| 1.21.5 - 1.21.9 | 0xE | 14 |
Description:
Clear the client's current title information, with the option to also reset it.
Packet Fields:
| Type | Description |
|---|---|
BOOLEAN |
Reset |
BOOLEAN |
Reset |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.13 - 1.14.4 | 0x11 | 17 |
| 1.15 | 0x12 | 18 |
| 1.16 - 1.16.1 | 0x11 | 17 |
| 1.16.2 | 0x10 | 16 |
| 1.17 - 1.18 | 0x12 | 18 |
| 1.19 - 1.19.2 | 0xF | 15 |
| 1.19.3 | 0xE | 14 |
| 1.19.4 - 1.20.1 | 0x10 | 16 |
| 1.20.2 - 1.21.4 | 0x11 | 17 |
| 1.21.5 - 1.21.9 | 0x10 | 16 |
Description:
Lists all of the commands on the server, and how they are parsed. This is a directed graph, with one root node. Each redirect or child node must refer only to nodes that have already been declared.
Packet Fields:
| Type | Description |
|---|---|
ARRAY |
Nodes: An array of nodes. |
VAR_INT |
Root index: Index of the root node in the previous array. |
ARRAY |
Nodes: An array of nodes. |
VAR_INT |
Root index: Index of the root node in the previous array. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x3A | 58 |
| 1.9 - 1.12.1 | 0xE | 14 |
| 1.13 - 1.14.4 | 0x10 | 16 |
| 1.15 | 0x11 | 17 |
| 1.16 - 1.16.1 | 0x10 | 16 |
| 1.16.2 | 0xF | 15 |
| 1.17 - 1.18 | 0x11 | 17 |
| 1.19 - 1.19.2 | 0xE | 14 |
| 1.19.3 | 0xD | 13 |
| 1.19.4 - 1.20.1 | 0xF | 15 |
| 1.20.2 - 1.21.4 | 0x10 | 16 |
| 1.21.5 - 1.21.9 | 0xF | 15 |
Description:
The server responds with a list of auto-completions of the last word sent to it. In the case of regular chat, this is a player username. Command names and parameters are also supported. The client sorts these alphabetically before listing them.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
ID: Transaction ID. |
VAR_INT |
Start: Start of the text to replace. |
VAR_INT |
Length: Length of the text to replace. |
STRING |
Prefixed Array: One eligible value to insert, note that each command is sent separately instead of in a single string, hence the need for Count. |
PREFIXED_OPTIONAL_TEXT_COMPONENT |
Tooltip: Tooltip to display. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x32 | 50 |
| 1.9 - 1.12.1 | 0x11 | 17 |
| 1.13 - 1.14.4 | 0x12 | 18 |
| 1.15 | 0x13 | 19 |
| 1.16 - 1.16.1 | 0x12 | 18 |
| 1.16.2 | 0x11 | 17 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x2E | 46 |
| 1.9 - 1.12.1 | 0x12 | 18 |
| 1.13 - 1.14.4 | 0x13 | 19 |
| 1.15 | 0x14 | 20 |
| 1.16 - 1.16.1 | 0x13 | 19 |
| 1.16.2 | 0x12 | 18 |
| 1.17 - 1.18 | 0x13 | 19 |
| 1.19 - 1.19.2 | 0x10 | 16 |
| 1.19.3 | 0xF | 15 |
| 1.19.4 - 1.20.1 | 0x11 | 17 |
| 1.20.2 - 1.21.4 | 0x12 | 18 |
| 1.21.5 - 1.21.9 | 0x11 | 17 |
Description:
This packet is sent from the server to the client when a window is forcibly closed, such as when a chest is destroyed while it's open. The vanilla client disregards the provided window ID and closes any active window.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Window ID: This is the ID of the window that was closed. 0 for inventory. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x30 | 48 |
| 1.9 - 1.12.1 | 0x14 | 20 |
| 1.13 | 0x15 | 21 |
| 1.14 - 1.14.4 | 0x14 | 20 |
| 1.15 | 0x15 | 21 |
| 1.16 - 1.16.1 | 0x14 | 20 |
| 1.16.2 | 0x13 | 19 |
| 1.17 - 1.18 | 0x14 | 20 |
| 1.19 - 1.19.2 | 0x11 | 17 |
| 1.19.3 | 0x10 | 16 |
| 1.19.4 - 1.20.1 | 0x12 | 18 |
| 1.20.2 - 1.21.4 | 0x13 | 19 |
| 1.21.5 - 1.21.9 | 0x12 | 18 |
Description:
Replaces the contents of a container window. Sent by the server upon initialization of a container window or the player's inventory, and in response to state ID mismatches (see #Click Container).
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Window ID: The ID of window which items are being sent for. 0 for player inventory. The client ignores any packets targeting a Window ID other than the current one. However, an exception is made for the player inventory, which may be targeted at any time. (The vanilla server does not appear to utilize this special case.) |
VAR_INT |
State ID: A server-managed sequence number used to avoid desynchronization; see #Click Container. |
SLOT |
Carried Item: Item being dragged with the mouse. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x31 | 49 |
| 1.9 - 1.12.1 | 0x15 | 21 |
| 1.13 | 0x16 | 22 |
| 1.14 - 1.14.4 | 0x15 | 21 |
| 1.15 | 0x16 | 22 |
| 1.16 - 1.16.1 | 0x15 | 21 |
| 1.16.2 | 0x14 | 20 |
| 1.17 - 1.18 | 0x15 | 21 |
| 1.19 - 1.19.2 | 0x12 | 18 |
| 1.19.3 | 0x11 | 17 |
| 1.19.4 - 1.20.1 | 0x13 | 19 |
| 1.20.2 - 1.21.4 | 0x14 | 20 |
| 1.21.5 - 1.21.9 | 0x13 | 19 |
Description:
This packet is used to inform the client that part of a GUI window should be updated.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Window ID |
SHORT |
Property: The property to be updated, see below. |
SHORT |
Value: The new value for the property, see below. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x2F | 47 |
| 1.9 - 1.12.1 | 0x16 | 22 |
| 1.13 | 0x17 | 23 |
| 1.14 - 1.14.4 | 0x16 | 22 |
| 1.15 | 0x17 | 23 |
| 1.16 - 1.16.1 | 0x16 | 22 |
| 1.16.2 | 0x15 | 21 |
| 1.17 - 1.18 | 0x16 | 22 |
| 1.19 - 1.19.2 | 0x13 | 19 |
| 1.19.3 | 0x12 | 18 |
| 1.19.4 - 1.20.1 | 0x14 | 20 |
| 1.20.2 - 1.21.4 | 0x15 | 21 |
| 1.21.5 - 1.21.9 | 0x14 | 20 |
Description:
Sent by the server when an item in a slot (in a window) is added/removed.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Window ID: The window that is being updated. 0 for player inventory. The client ignores any packets targeting a Window ID other than the current one; see below for exceptions. |
VAR_INT |
State ID: A server-managed sequence number used to avoid desynchronization; see #Click Container. |
SHORT |
Slot: The slot that should be updated. |
SLOT |
Slot Data |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.5 - 1.21.4 | 0x16 | 22 |
| 1.21.5 - 1.21.9 | 0x15 | 21 |
Description:
Requests a cookie that was previously stored.
Packet Fields:
| Type | Description |
|---|---|
STRING |
Key: The identifier of the cookie. |
STRING |
Key: The identifier of the cookie. |
STRING |
Key: The identifier of the cookie. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.9 - 1.12.1 | 0x17 | 23 |
| 1.13 | 0x18 | 24 |
| 1.14 - 1.14.4 | 0x17 | 23 |
| 1.15 | 0x18 | 24 |
| 1.16 - 1.16.1 | 0x17 | 23 |
| 1.16.2 | 0x16 | 22 |
| 1.17 - 1.18 | 0x17 | 23 |
| 1.19 - 1.19.2 | 0x14 | 20 |
| 1.19.3 | 0x13 | 19 |
| 1.19.4 - 1.20.1 | 0x15 | 21 |
| 1.20.2 - 1.20.4 | 0x16 | 22 |
| 1.20.5 - 1.21.4 | 0x17 | 23 |
| 1.21.5 - 1.21.9 | 0x16 | 22 |
Description:
Applies a cooldown period to all items with the given type. Used by the vanilla server with enderpearls. This packet should be sent when the cooldown starts and also when the cooldown ends (to compensate for lag), although the client will end the cooldown automatically. Can be applied to any item, note that interactions still get sent to the server with the item, but the client does not play the animation nor attempt to predict results (i.e, block placing).
Packet Fields:
| Type | Description |
|---|---|
STRING |
Cooldown Group: Identifier of the item (minecraft:stone) or the cooldown group ("use_cooldown" item component) |
VAR_INT |
Cooldown Ticks: Number of ticks to apply a cooldown for, or 0 to clear the cooldown. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19.1 - 1.19.2 | 0x15 | 21 |
| 1.19.3 | 0x14 | 20 |
| 1.19.4 - 1.20.1 | 0x16 | 22 |
| 1.20.2 - 1.20.4 | 0x17 | 23 |
| 1.20.5 - 1.21.4 | 0x18 | 24 |
| 1.21.5 - 1.21.9 | 0x17 | 23 |
Description:
Unused by the vanilla server. Likely provided for custom servers to send chat message completions to clients.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Action: 0: Add, 1: Remove, 2: Set |
STRING |
Entries |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x3F | 63 |
| 1.9 - 1.12.1 | 0x18 | 24 |
| 1.13 | 0x19 | 25 |
| 1.14 - 1.14.4 | 0x18 | 24 |
| 1.15 | 0x19 | 25 |
| 1.16 - 1.16.1 | 0x18 | 24 |
| 1.16.2 | 0x17 | 23 |
| 1.17 - 1.18 | 0x18 | 24 |
| 1.19 - 1.19.0 | 0x15 | 21 |
| 1.19.1 - 1.19.2 | 0x16 | 22 |
| 1.19.3 | 0x15 | 21 |
| 1.19.4 - 1.20.1 | 0x17 | 23 |
| 1.20.2 - 1.20.4 | 0x18 | 24 |
| 1.20.5 - 1.21.4 | 0x19 | 25 |
| 1.21.5 - 1.21.9 | 0x18 | 24 |
Description:
Mods and plugins can use this to send their data. Minecraft itself uses several plugin channels. These internal channels are in the minecraft namespace. More information on how it works on Dinnerbone's blog. More documentation about internal and popular registered channels are here.
Packet Fields:
| Type | Description |
|---|---|
STRING |
Channel: Name of the plugin channel used to send the data. |
BYTE |
Data: Any data. The length of this array must be inferred from the packet length. |
STRING |
Channel: Name of the plugin channel used to send the data. |
BYTE |
Data: Any data. The length of this array must be inferred from the packet length. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21 - 1.21.1 | 0x7A | 122 |
| 1.21.2 - 1.21.8 | 0x81 | 129 |
| 1.21.9 | 0x86 | 134 |
Description:
Contains a list of key-value text entries that are included in any crash or disconnection report generated during connection to the server.
Packet Fields:
| Type | Description |
|---|---|
TITLE |
Details: Prefixed Array (32) |
STRING |
Description |
TITLE |
Details: Prefixed Array (32) |
STRING |
Description |
TITLE |
Details: Prefixed Array (32) |
STRING |
Description |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x29 | 41 |
| 1.9 - 1.12.1 | 0x19 | 25 |
| 1.13 | 0x1A | 26 |
| 1.14 - 1.14.4 | 0x19 | 25 |
| 1.15 | 0x1A | 26 |
| 1.16 - 1.16.1 | 0x19 | 25 |
| 1.16.2 | 0x18 | 24 |
| 1.17 - 1.18 | 0x19 | 25 |
| 1.19 - 1.19.0 | 0x16 | 22 |
| 1.19.1 | 0x17 | 23 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19.4 - 1.20.1 | 0x18 | 24 |
| 1.20.2 - 1.20.4 | 0x19 | 25 |
| 1.20.5 - 1.21.4 | 0x1A | 26 |
| 1.21.5 - 1.21.9 | 0x19 | 25 |
Packet Fields:
| Type | Description |
|---|---|
PLAY |
protocol:0x19resource:damage_event: Client |
VAR_INT |
Entity ID: The ID of the entity taking damage |
VAR_INT |
Source Type ID: The type of damage in the minecraft:damage_type registry, defined by the Registry Data packet. |
VAR_INT |
Source Cause ID: The ID + 1 of the entity responsible for the damage, if present. If not present, the value is 0 |
VAR_INT |
Source Direct ID: The ID + 1 of the entity that directly dealt the damage, if present. If not present, the value is 0. If this field is present: |
| and damage was dealt indirectly, such as by the use of a projectile, this field will contain the ID of such projectile; | |
| and damage was dealt directly, such as by manually attacking, this field will contain the same value as Source Cause ID. | |
DOUBLE |
Prefixed Optional: The vanilla server sends the Source Position when the damage was dealt by the /damage command and a position was specified |
PLAY |
protocol:0x19resource:damage_event: Client |
VAR_INT |
Entity ID: The ID of the entity taking damage |
VAR_INT |
Source Type ID: The type of damage in the minecraft:damage_type registry, defined by the Registry Data packet. |
VAR_INT |
Source Cause ID: The ID + 1 of the entity responsible for the damage, if present. If not present, the value is 0 |
VAR_INT |
Source Direct ID: The ID + 1 of the entity that directly dealt the damage, if present. If not present, the value is 0. If this field is present: |
| and damage was dealt indirectly, such as by the use of a projectile, this field will contain the ID of such projectile; | |
| and damage was dealt directly, such as by manually attacking, this field will contain the same value as Source Cause ID. | |
DOUBLE |
Prefixed Optional: The vanilla server sends the Source Position when the damage was dealt by the /damage command and a position was specified |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.9 | 0x1A | 26 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.9 | 0x1B | 27 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.9 | 0x1C | 28 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.9 | 0x1D | 29 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.5 - 1.21.4 | 0x1B | 27 |
| 1.21.5 - 1.21.8 | 0x1A | 26 |
| 1.21.9 | 0x1E | 30 |
Description:
Sample data that is sent periodically after the client has subscribed with Debug Sample Subscription. The vanilla server only sends debug samples to players who are server operators.
Packet Fields:
| Type | Description |
|---|---|
LONG |
Sample: Array of type-dependent samples. |
VAR_INT |
Sample Type: See below. |
LONG |
Sample: Array of type-dependent samples. |
VAR_INT |
Sample Type: See below. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19.1 - 1.19.2 | 0x18 | 24 |
| 1.19.3 | 0x16 | 22 |
| 1.19.4 - 1.20.1 | 0x19 | 25 |
| 1.20.2 - 1.20.4 | 0x1A | 26 |
| 1.20.5 - 1.21.4 | 0x1C | 28 |
| 1.21.5 - 1.21.8 | 0x1B | 27 |
| 1.21.9 | 0x1F | 31 |
Description:
Removes a message from the client's chat. This only works for messages with signatures; system messages cannot be deleted with this packet.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Message ID: The message ID + 1, used for validating message signature. The next field is present only when value of this field is equal to 0. |
BYTE |
Signature: The previous message's signature. Always 256 bytes and not length-prefixed. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x40 | 64 |
| 1.9 - 1.12.1 | 0x1A | 26 |
| 1.13 | 0x1B | 27 |
| 1.14 - 1.14.4 | 0x1A | 26 |
| 1.15 | 0x1B | 27 |
| 1.16 - 1.16.1 | 0x1A | 26 |
| 1.16.2 | 0x19 | 25 |
| 1.17 - 1.18 | 0x1A | 26 |
| 1.19 - 1.19.0 | 0x17 | 23 |
| 1.19.1 - 1.19.2 | 0x19 | 25 |
| 1.19.3 | 0x17 | 23 |
| 1.19.4 - 1.20.1 | 0x1A | 26 |
| 1.20.2 - 1.20.4 | 0x1B | 27 |
| 1.20.5 - 1.21.4 | 0x1D | 29 |
| 1.21.5 - 1.21.8 | 0x1C | 28 |
| 1.21.9 | 0x20 | 32 |
Description:
Sent by the server before it disconnects a client. The client assumes that the server has already closed the connection by the time the packet arrives.
Packet Fields:
| Type | Description |
|---|---|
TEXT_COMPONENT |
Reason: The reason why the player was disconnected. |
TEXT_COMPONENT |
Reason: Displayed to the client when the connection terminates. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19.3 | 0x18 | 24 |
| 1.19.4 - 1.20.1 | 0x1B | 27 |
| 1.20.2 - 1.20.4 | 0x1C | 28 |
| 1.20.5 - 1.21.4 | 0x1E | 30 |
| 1.21.5 - 1.21.8 | 0x1D | 29 |
| 1.21.9 | 0x21 | 33 |
Description:
Sends the client a chat message, but without any message signing information. The vanilla server uses this packet when the console is communicating with players through commands, such as /say, /tell, /me, among others. This is used as the sender parameter when formatting the message on the client. This is used as the target parameter when formatting the message on the client.
Packet Fields:
| Type | Description |
|---|---|
TEXT_COMPONENT |
Message: This is used as the content parameter when formatting the message on the client. |
COMPONENT |
Chat Type: Either the type of chat in the minecraft:chat_type registry, defined by the Registry Data packet, or an inline definition. |
TEXT_COMPONENT |
Sender Name: The name of the one sending the message, usually the sender's display name. |
| This is used as the sender parameter when formatting the message on the client. | |
PREFIXED_OPTIONAL_TEXT_COMPONENT |
Target Name: The name of the one receiving the message, usually the receiver's display name. |
| This is used as the target parameter when formatting the message on the client. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x1A | 26 |
| 1.9 - 1.12.1 | 0x1B | 27 |
| 1.13 | 0x1C | 28 |
| 1.14 - 1.14.4 | 0x1B | 27 |
| 1.15 | 0x1C | 28 |
| 1.16 - 1.16.1 | 0x1B | 27 |
| 1.16.2 | 0x1A | 26 |
| 1.17 - 1.18 | 0x1B | 27 |
| 1.19 - 1.19.0 | 0x18 | 24 |
| 1.19.1 - 1.19.2 | 0x1A | 26 |
| 1.19.3 | 0x19 | 25 |
| 1.19.4 - 1.20.1 | 0x1C | 28 |
| 1.20.2 - 1.20.4 | 0x1D | 29 |
| 1.20.5 - 1.21.4 | 0x1F | 31 |
| 1.21.5 - 1.21.8 | 0x1E | 30 |
| 1.21.9 | 0x22 | 34 |
Description:
Entity statuses generally trigger an animation for an entity. The available statuses vary by the entity's type (and are available to subclasses of that type as well).
Packet Fields:
| Type | Description |
|---|---|
INT |
Entity ID |
BYTE |
Entity Status: See Entity statuses for a list of which statuses are valid for each type of entity. |
INT |
Entity ID |
BYTE |
Entity Status: See Entity statuses for a list of which statuses are valid for each type of entity. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.2 - 1.21.4 | 0x20 | 32 |
| 1.21.5 - 1.21.8 | 0x1F | 31 |
| 1.21.9 | 0x23 | 35 |
Description:
This packet is sent by the server when an entity moves more than 8 blocks.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID |
DOUBLE |
X |
DOUBLE |
Y |
DOUBLE |
Z |
DOUBLE |
Velocity X |
DOUBLE |
Velocity Y |
DOUBLE |
Velocity Z |
FLOAT |
Yaw: Rotation on the X axis, in degrees. |
FLOAT |
Pitch: Rotation on the Y axis, in degrees. |
BOOLEAN |
On Ground |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x27 | 39 |
| 1.9 - 1.12.1 | 0x1C | 28 |
| 1.13 | 0x1E | 30 |
| 1.14 - 1.14.4 | 0x1C | 28 |
| 1.15 | 0x1D | 29 |
| 1.16 - 1.16.1 | 0x1C | 28 |
| 1.16.2 | 0x1B | 27 |
| 1.17 - 1.18 | 0x1C | 28 |
| 1.19 - 1.19.0 | 0x19 | 25 |
| 1.19.1 - 1.19.2 | 0x1B | 27 |
| 1.19.3 | 0x1A | 26 |
| 1.19.4 - 1.20.1 | 0x1D | 29 |
| 1.20.2 - 1.20.4 | 0x1E | 30 |
| 1.20.5 - 1.21.1 | 0x20 | 32 |
| 1.21.2 - 1.21.4 | 0x21 | 33 |
| 1.21.5 - 1.21.8 | 0x20 | 32 |
| 1.21.9 | 0x24 | 36 |
Description:
Sent when an explosion occurs (creepers, TNT, and ghast fireballs).
Packet Fields:
| Type | Description |
|---|---|
DOUBLE |
X |
DOUBLE |
Y |
DOUBLE |
Z |
DOUBLE |
Prefixed Optional: Velocity difference of the player being pushed by the explosion. |
VAR_INT |
Explosion Particle ID: ID in the minecraft:particle_type registry. |
VARIES |
Explosion Particle Data: Particle data as specified in Particles. |
ID_OR_SOUND_EVENT |
Explosion Sound: ID in the minecraft:sound_event registry, or an inline definition. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.9 - 1.12.1 | 0x1D | 29 |
| 1.13 | 0x1F | 31 |
| 1.14 - 1.14.4 | 0x1D | 29 |
| 1.15 | 0x1E | 30 |
| 1.16 - 1.16.1 | 0x1D | 29 |
| 1.16.2 | 0x1C | 28 |
| 1.17 - 1.18 | 0x1D | 29 |
| 1.19 - 1.19.0 | 0x1A | 26 |
| 1.19.1 - 1.19.2 | 0x1C | 28 |
| 1.19.3 | 0x1B | 27 |
| 1.19.4 - 1.20.1 | 0x1E | 30 |
| 1.20.2 - 1.20.4 | 0x1F | 31 |
| 1.20.5 - 1.21.1 | 0x21 | 33 |
| 1.21.2 - 1.21.4 | 0x22 | 34 |
| 1.21.5 - 1.21.8 | 0x21 | 33 |
| 1.21.9 | 0x25 | 37 |
Description:
Tells the client to unload a chunk column.
Packet Fields:
| Type | Description |
|---|---|
INT |
Chunk Z: Block coordinate divided by 16, rounded down. |
INT |
Chunk X: Block coordinate divided by 16, rounded down. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x2B | 43 |
| 1.9 - 1.12.1 | 0x1E | 30 |
| 1.13 | 0x20 | 32 |
| 1.14 - 1.14.4 | 0x1E | 30 |
| 1.15 | 0x1F | 31 |
| 1.16 - 1.16.1 | 0x1E | 30 |
| 1.16.2 | 0x1D | 29 |
| 1.17 - 1.18 | 0x1E | 30 |
| 1.19 - 1.19.0 | 0x1B | 27 |
| 1.19.1 - 1.19.2 | 0x1D | 29 |
| 1.19.3 | 0x1C | 28 |
| 1.19.4 - 1.20.1 | 0x1F | 31 |
| 1.20.2 - 1.20.4 | 0x20 | 32 |
| 1.20.5 - 1.21.1 | 0x22 | 34 |
| 1.21.2 - 1.21.4 | 0x23 | 35 |
| 1.21.5 - 1.21.8 | 0x22 | 34 |
| 1.21.9 | 0x26 | 38 |
Description:
Used for a wide variety of game events, such as weather, respawn availability (from bed and respawn anchor), game mode, some game rules, and demo messages.
Packet Fields:
| Type | Description |
|---|---|
BYTE |
Event: See below. |
FLOAT |
Value: Depends on Event. |
BYTE |
Event: See below. |
FLOAT |
Value: Depends on Event. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.9 | 0x27 | 39 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.14 - 1.14.4 | 0x1F | 31 |
| 1.15 | 0x20 | 32 |
| 1.16 - 1.16.1 | 0x1F | 31 |
| 1.16.2 | 0x1E | 30 |
| 1.17 - 1.18 | 0x1F | 31 |
| 1.19 - 1.19.0 | 0x1C | 28 |
| 1.19.1 - 1.19.2 | 0x1E | 30 |
| 1.19.3 | 0x1D | 29 |
| 1.19.4 - 1.20.1 | 0x20 | 32 |
| 1.20.2 - 1.20.4 | 0x21 | 33 |
| 1.20.5 - 1.21.1 | 0x23 | 35 |
| 1.21.2 - 1.21.4 | 0x24 | 36 |
| 1.21.5 - 1.21.8 | 0x23 | 35 |
| 1.21.9 | 0x28 | 40 |
Description:
This packet is used exclusively for opening the horse GUI. Open Screen is used for all other GUIs. The client will not open the inventory if the Entity ID does not point to a horse-like animal.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Window ID: Same as the field of Open Screen. |
VAR_INT |
Inventory columns count: How many columns of horse inventory slots exist in the GUI, 3 slots per column. |
INT |
Entity ID: The "owner" entity of the GUI. The client should close the GUI if the owner entity dies or is cleared. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19.4 - 1.20.1 | 0x21 | 33 |
| 1.20.2 - 1.20.4 | 0x22 | 34 |
| 1.20.5 - 1.21.1 | 0x24 | 36 |
| 1.21.2 - 1.21.4 | 0x25 | 37 |
| 1.21.5 - 1.21.8 | 0x24 | 36 |
| 1.21.9 | 0x29 | 41 |
Description:
Plays a bobbing animation for the entity receiving damage.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID: The ID of the entity taking damage |
FLOAT |
Yaw: The direction the damage is coming from in relation to the entity |
VAR_INT |
Entity ID: The ID of the entity taking damage |
FLOAT |
Yaw: The direction the damage is coming from in relation to the entity |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.17 - 1.18 | 0x20 | 32 |
| 1.19 - 1.19.0 | 0x1D | 29 |
| 1.19.1 - 1.19.2 | 0x1F | 31 |
| 1.19.3 | 0x1E | 30 |
| 1.19.4 - 1.20.1 | 0x22 | 34 |
| 1.20.2 - 1.20.4 | 0x23 | 35 |
| 1.20.5 - 1.21.1 | 0x25 | 37 |
| 1.21.2 - 1.21.4 | 0x26 | 38 |
| 1.21.5 - 1.21.8 | 0x25 | 37 |
| 1.21.9 | 0x2A | 42 |
Packet Fields:
| Type | Description |
|---|---|
DOUBLE |
X |
DOUBLE |
Z |
DOUBLE |
Old Diameter: Current length of a single side of the world border, in meters. |
DOUBLE |
New Diameter: Target length of a single side of the world border, in meters. |
VAR_LONG |
Speed: Number of real-time milliseconds until New Diameter is reached. It appears that vanilla 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. |
VAR_INT |
Portal Teleport Boundary: Resulting coordinates from a portal teleport are limited to ±value. Usually 29999984. |
VAR_INT |
Warning Blocks: In meters. |
VAR_INT |
Warning Time: In seconds as set by /worldborder warning time. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x0 | 0 |
| 1.9 - 1.12.1 | 0x1F | 31 |
| 1.13 | 0x21 | 33 |
| 1.14 - 1.14.4 | 0x20 | 32 |
| 1.15 | 0x21 | 33 |
| 1.16 - 1.16.1 | 0x20 | 32 |
| 1.16.2 | 0x1F | 31 |
| 1.17 - 1.18 | 0x21 | 33 |
| 1.19 - 1.19.0 | 0x1E | 30 |
| 1.19.1 - 1.19.2 | 0x20 | 32 |
| 1.19.3 | 0x1F | 31 |
| 1.19.4 - 1.20.1 | 0x23 | 35 |
| 1.20.2 - 1.20.4 | 0x24 | 36 |
| 1.20.5 - 1.21.1 | 0x26 | 38 |
| 1.21.2 - 1.21.4 | 0x27 | 39 |
| 1.21.5 - 1.21.8 | 0x26 | 38 |
| 1.21.9 | 0x2B | 43 |
Description:
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same payload (see Serverbound Keep Alive). If the client does not respond to a Keep Alive packet within 15 seconds after it was sent, the server kicks the client. Vice versa, if the server does not send any keep-alives for 20 seconds, the client will disconnect and yield a "Timed out" exception. The vanilla server uses a system-dependent time in milliseconds to generate the keep alive ID value.
Packet Fields:
| Type | Description |
|---|---|
LONG |
Keep Alive ID |
LONG |
Keep Alive ID |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x21 | 33 |
| 1.9 - 1.12.1 | 0x20 | 32 |
| 1.13 | 0x22 | 34 |
| 1.14 - 1.14.4 | 0x21 | 33 |
| 1.15 | 0x22 | 34 |
| 1.16 - 1.16.1 | 0x21 | 33 |
| 1.16.2 | 0x20 | 32 |
| 1.17 - 1.17.1 | 0x22 | 34 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.18 | 0x22 | 34 |
| 1.19 - 1.19.0 | 0x1F | 31 |
| 1.19.1 - 1.19.2 | 0x21 | 33 |
| 1.19.3 | 0x20 | 32 |
| 1.19.4 - 1.20.1 | 0x24 | 36 |
| 1.20.2 - 1.20.4 | 0x25 | 37 |
| 1.20.5 - 1.21.1 | 0x27 | 39 |
| 1.21.2 - 1.21.4 | 0x28 | 40 |
| 1.21.5 - 1.21.8 | 0x27 | 39 |
| 1.21.9 | 0x2C | 44 |
Description:
Sent when a chunk comes into the client's view distance, specifying its terrain, lighting and block entities. The chunk must be within the view area previously specified with Set Center Chunk; see that packet for details. It is not strictly necessary to send all block entities in this packet; it is still legal to send them with Block Entity Data later.
Packet Fields:
| Type | Description |
|---|---|
INT |
Chunk X: Chunk coordinate (block coordinate divided by 16, rounded down) |
INT |
Chunk Z: Chunk coordinate (block coordinate divided by 16, rounded down) |
CHUNK_DATA |
Data |
LIGHT_DATA |
Light |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x28 | 40 |
| 1.9 - 1.12.1 | 0x21 | 33 |
| 1.13 | 0x23 | 35 |
| 1.14 - 1.14.4 | 0x22 | 34 |
| 1.15 | 0x23 | 35 |
| 1.16 - 1.16.1 | 0x22 | 34 |
| 1.16.2 | 0x21 | 33 |
| 1.17 - 1.18 | 0x23 | 35 |
| 1.19 - 1.19.0 | 0x20 | 32 |
| 1.19.1 - 1.19.2 | 0x22 | 34 |
| 1.19.3 | 0x21 | 33 |
| 1.19.4 - 1.20.1 | 0x25 | 37 |
| 1.20.2 - 1.20.4 | 0x26 | 38 |
| 1.20.5 - 1.21.1 | 0x28 | 40 |
| 1.21.2 - 1.21.4 | 0x29 | 41 |
| 1.21.5 - 1.21.8 | 0x28 | 40 |
| 1.21.9 | 0x2D | 45 |
Description:
Sent when a client is to play a sound or particle effect. By default, the Minecraft client adjusts the volume of sound effects based on distance. The final boolean field is used to disable this, and instead, the effect is played from 2 blocks away in the correct direction. Currently, this is only used for effect 1023 (wither spawn), effect 1028 (enderdragon death), and effect 1038 (end portal opening); it is ignored on other effects.
Packet Fields:
| Type | Description |
|---|---|
INT |
Event: The event, see below. |
POSITION |
Location: The location of the event. |
INT |
Data: Extra data for certain events, see below. |
BOOLEAN |
Disable Relative Volume: See above. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x2A | 42 |
| 1.9 - 1.12.1 | 0x22 | 34 |
| 1.13 | 0x24 | 36 |
| 1.14 - 1.14.4 | 0x23 | 35 |
| 1.15 | 0x24 | 36 |
| 1.16 - 1.16.1 | 0x23 | 35 |
| 1.16.2 | 0x22 | 34 |
| 1.17 - 1.18 | 0x24 | 36 |
| 1.19 - 1.19.0 | 0x21 | 33 |
| 1.19.1 - 1.19.2 | 0x23 | 35 |
| 1.19.3 | 0x22 | 34 |
| 1.19.4 - 1.20.1 | 0x26 | 38 |
| 1.20.2 - 1.20.4 | 0x27 | 39 |
| 1.20.5 - 1.21.1 | 0x29 | 41 |
| 1.21.2 - 1.21.4 | 0x2A | 42 |
| 1.21.5 - 1.21.8 | 0x29 | 41 |
| 1.21.9 | 0x2E | 46 |
Description:
Displays the named particle
Packet Fields:
| Type | Description |
|---|---|
BOOLEAN |
Long Distance: If true, particle distance increases from 256 to 65536. |
BOOLEAN |
Always Visible: Whether this particle should always be visible. |
DOUBLE |
X: X position of the particle. |
DOUBLE |
Y: Y position of the particle. |
DOUBLE |
Z: Z position of the particle. |
FLOAT |
Offset X: This is added to the X position after being multiplied by random.nextGaussian(). |
FLOAT |
Offset Y: This is added to the Y position after being multiplied by random.nextGaussian(). |
FLOAT |
Offset Z: This is added to the Z position after being multiplied by random.nextGaussian(). |
FLOAT |
Max Speed |
INT |
Particle Count: The number of particles to create. |
VAR_INT |
Particle ID: ID in the minecraft:particle_type registry. |
VARIES |
Data: Particle data as specified in Particles. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.14 - 1.14.4 | 0x24 | 36 |
| 1.15 | 0x25 | 37 |
| 1.16 - 1.16.1 | 0x24 | 36 |
| 1.16.2 | 0x23 | 35 |
| 1.17 - 1.18 | 0x25 | 37 |
| 1.19 - 1.19.0 | 0x22 | 34 |
| 1.19.1 - 1.19.2 | 0x24 | 36 |
| 1.19.3 | 0x23 | 35 |
| 1.19.4 - 1.20.1 | 0x27 | 39 |
| 1.20.2 - 1.20.4 | 0x28 | 40 |
| 1.20.5 - 1.21.1 | 0x2A | 42 |
| 1.21.2 - 1.21.4 | 0x2B | 43 |
| 1.21.5 - 1.21.8 | 0x2A | 42 |
| 1.21.9 | 0x2F | 47 |
Description:
Updates light levels for a chunk. See Light for information on how lighting works in Minecraft.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Chunk X: Chunk coordinate (block coordinate divided by 16, rounded down) |
VAR_INT |
Chunk Z: Chunk coordinate (block coordinate divided by 16, rounded down) |
LIGHT_DATA |
Data |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x1 | 1 |
| 1.9 - 1.12.1 | 0x23 | 35 |
| 1.13 - 1.14.4 | 0x25 | 37 |
| 1.15 | 0x26 | 38 |
| 1.16 - 1.16.1 | 0x25 | 37 |
| 1.16.2 | 0x24 | 36 |
| 1.17 - 1.18 | 0x26 | 38 |
| 1.19 - 1.19.0 | 0x23 | 35 |
| 1.19.1 - 1.19.2 | 0x25 | 37 |
| 1.19.3 | 0x24 | 36 |
| 1.19.4 - 1.20.1 | 0x28 | 40 |
| 1.20.2 - 1.20.4 | 0x29 | 41 |
| 1.20.5 - 1.21.1 | 0x2B | 43 |
| 1.21.2 - 1.21.4 | 0x2C | 44 |
| 1.21.5 - 1.21.8 | 0x2B | 43 |
| 1.21.9 | 0x30 | 48 |
Description:
See protocol encryption for information on logging in.
Packet Fields:
| Type | Description |
|---|---|
INT |
Entity ID: The player's Entity ID (EID). |
BOOLEAN |
Is hardcore |
STRING |
Dimension Names: Identifiers for all dimensions on the server. |
VAR_INT |
Max Players: Was once used by the client to draw the player list, but now it is ignored. |
VAR_INT |
View Distance: Render distance (2-32). |
VAR_INT |
Simulation Distance: The distance that the client will process specific things, such as entities. |
BOOLEAN |
Reduced Debug Info: If true, a vanilla client shows reduced information on the debug screen. For servers in development, this should almost always be false. |
BOOLEAN |
Enable respawn screen: Set to false when the doImmediateRespawn gamerule is true. |
BOOLEAN |
Do limited crafting: Whether players can only craft recipes they have already unlocked. Currently unused by the client. |
VAR_INT |
Dimension Type: The ID of the type of dimension in the minecraft:dimension_type registry, defined by the Registry Data packet. |
STRING |
Dimension Name: Name of the dimension being spawned into. |
LONG |
Hashed seed: First 8 bytes of the SHA-256 hash of the world's seed. Used client-side for biome noise |
BYTE |
Game mode: 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. |
BYTE |
Previous Game mode: -1: Undefined (null), 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. The previous game mode. Vanilla client uses this for the debug (F3 + N & F3 + F4) game mode switch. (More information needed) |
BOOLEAN |
Is Debug: True if the world is a debug mode world; debug mode worlds cannot be modified and have predefined blocks. |
BOOLEAN |
Is Flat: True if the world is a superflat world; flat worlds have different void fog and a horizon at y=0 instead of y=63. |
BOOLEAN |
Has death location: If true, then the next two fields are present. |
STRING |
Death dimension name: Name of the dimension the player died in. |
POSITION |
Death location: The location that the player died at. |
VAR_INT |
Portal cooldown: The number of ticks until the player can use the last used portal again. Looks like it's an attempt to fix MC-180. |
VAR_INT |
Sea level |
BOOLEAN |
Enforces Secure Chat |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x26 | 38 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x34 | 52 |
| 1.9 - 1.12.1 | 0x24 | 36 |
| 1.13 - 1.14.4 | 0x26 | 38 |
| 1.15 | 0x27 | 39 |
| 1.16 - 1.16.1 | 0x26 | 38 |
| 1.16.2 | 0x25 | 37 |
| 1.17 - 1.18 | 0x27 | 39 |
| 1.19 - 1.19.0 | 0x24 | 36 |
| 1.19.1 - 1.19.2 | 0x26 | 38 |
| 1.19.3 | 0x25 | 37 |
| 1.19.4 - 1.20.1 | 0x29 | 41 |
| 1.20.2 - 1.20.4 | 0x2A | 42 |
| 1.20.5 - 1.21.1 | 0x2C | 44 |
| 1.21.2 - 1.21.4 | 0x2D | 45 |
| 1.21.5 - 1.21.8 | 0x2C | 44 |
| 1.21.9 | 0x31 | 49 |
Description:
Updates a rectangular area on a map item.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Map ID: Map ID of the map being modified |
BYTE |
Scale: From 0 for a fully zoomed-in map (1 block per pixel) to 4 for a fully zoomed-out map (16 blocks per pixel) |
BOOLEAN |
Locked: True if the map has been locked in a cartography table |
VAR_INT |
Prefixed Optional Prefixed Array: See below |
BYTE |
X: Map coordinates: -128 for furthest left, +127 for furthest right |
BYTE |
Z: Map coordinates: -128 for highest, +127 for lowest |
BYTE |
Direction: 0-15 |
PREFIXED_OPTIONAL_TEXT_COMPONENT |
Display Name |
BYTE |
Columns: Number of columns updated |
BYTE |
Rows: Only if Columns is more than 0; number of rows updated |
BYTE |
X: Only if Columns is more than 0; x offset of the westernmost column |
BYTE |
Z: Only if Columns is more than 0; z offset of the northernmost row |
BYTE |
Data: Only if Columns is more than 0; see Map item format |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.14 - 1.14.4 | 0x27 | 39 |
| 1.15 | 0x28 | 40 |
| 1.16 - 1.16.1 | 0x27 | 39 |
| 1.16.2 | 0x26 | 38 |
| 1.17 - 1.18 | 0x28 | 40 |
| 1.19 - 1.19.0 | 0x25 | 37 |
| 1.19.1 - 1.19.2 | 0x27 | 39 |
| 1.19.3 | 0x26 | 38 |
| 1.19.4 - 1.20.1 | 0x2A | 42 |
| 1.20.2 - 1.20.4 | 0x2B | 43 |
| 1.20.5 - 1.21.1 | 0x2D | 45 |
| 1.21.2 - 1.21.4 | 0x2E | 46 |
| 1.21.5 - 1.21.8 | 0x2D | 45 |
| 1.21.9 | 0x32 | 50 |
Description:
The list of trades a villager NPC is offering. 1: Novice, 2: Apprentice, 3: Journeyman, 4: Expert, 5: Master.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Window ID: The ID of the window that is open; this is an int rather than a byte. |
TRADE_ITEM |
Prefixed Array: See below. The first item the player has to supply for this villager trade. The count of the item stack is the default "price" of this trade. |
SLOT |
Output item: The item the player will receive from this villager trade. |
PREFIXED_OPTIONAL_TRADE_ITEM |
Input item 2: The second item the player has to supply for this villager trade. |
BOOLEAN |
Trade disabled: True if the trade is disabled; false if the trade is enabled. |
INT |
Number of trade uses: Number of times the trade has been used so far. If equal to the maximum number of trades, the client will display a red X. |
INT |
Maximum number of trade uses: Number of times this trade can be used before it's exhausted. |
INT |
XP: Amount of XP the villager will earn each time the trade is used. |
INT |
Special Price: Can be zero or negative. The number is added to the price when an item is discounted due to player reputation or other effects. |
FLOAT |
Price Multiplier: Can be low (0.05) or high (0.2). Determines how much demand, player reputation, and temporary effects will adjust the price. |
INT |
Demand: If positive, causes the price to increase. Negative values seem to be treated the same as zero. |
VAR_INT |
Villager level: Appears on the trade GUI; meaning comes from the translation key merchant.level. + level. |
| 1: Novice, 2: Apprentice, 3: Journeyman, 4: Expert, 5: Master. | |
VAR_INT |
Experience: Total experience for this villager (always 0 for the wandering trader). |
BOOLEAN |
Is regular villager: True if this is a regular villager; false for the wandering trader. When false, hides the villager level and some other GUI elements. |
BOOLEAN |
Can restock: 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. |
VAR_INT |
Window ID: The ID of the window that is open; this is an int rather than a byte. |
TRADE_ITEM |
Prefixed Array: See below. The first item the player has to supply for this villager trade. The count of the item stack is the default "price" of this trade. |
SLOT |
Output item: The item the player will receive from this villager trade. |
PREFIXED_OPTIONAL_TRADE_ITEM |
Input item 2: The second item the player has to supply for this villager trade. |
BOOLEAN |
Trade disabled: True if the trade is disabled; false if the trade is enabled. |
INT |
Number of trade uses: Number of times the trade has been used so far. If equal to the maximum number of trades, the client will display a red X. |
INT |
Maximum number of trade uses: Number of times this trade can be used before it's exhausted. |
INT |
XP: Amount of XP the villager will earn each time the trade is used. |
INT |
Special Price: Can be zero or negative. The number is added to the price when an item is discounted due to player reputation or other effects. |
FLOAT |
Price Multiplier: Can be low (0.05) or high (0.2). Determines how much demand, player reputation, and temporary effects will adjust the price. |
INT |
Demand: If positive, causes the price to increase. Negative values seem to be treated the same as zero. |
VAR_INT |
Villager level: Appears on the trade GUI; meaning comes from the translation key merchant.level. + level. |
| 1: Novice, 2: Apprentice, 3: Journeyman, 4: Expert, 5: Master. | |
VAR_INT |
Experience: Total experience for this villager (always 0 for the wandering trader). |
BOOLEAN |
Is regular villager: True if this is a regular villager; false for the wandering trader. When false, hides the villager level and some other GUI elements. |
BOOLEAN |
Can restock: 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. |
VAR_INT |
Item ID: The item ID. Item IDs are distinct from block IDs; see Data Generators for more information. |
VAR_INT |
Item Count: The item count. |
COMPONENT_TYPE |
Components: Prefixed Array |
VARIES |
Component data: The component-dependent data. See Structured components for more detail. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x14 | 20 |
| 1.9 - 1.11 | 0x28 | 40 |
| 1.12 - 1.12.1 | 0x25 | 37 |
| 1.13 | 0x27 | 39 |
| 1.14 - 1.14.4 | 0x2B | 43 |
| 1.15 | 0x2C | 44 |
| 1.16 - 1.16.1 | 0x2B | 43 |
| 1.16.2 | 0x2A | 42 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x15 | 21 |
| 1.9 - 1.11 | 0x25 | 37 |
| 1.12 - 1.12.1 | 0x26 | 38 |
| 1.13 - 1.14.4 | 0x28 | 40 |
| 1.15 | 0x29 | 41 |
| 1.16 - 1.16.1 | 0x28 | 40 |
| 1.16.2 | 0x27 | 39 |
| 1.17 - 1.18 | 0x29 | 41 |
| 1.19 - 1.19.0 | 0x26 | 38 |
| 1.19.1 - 1.19.2 | 0x28 | 40 |
| 1.19.3 | 0x27 | 39 |
| 1.19.4 - 1.20.1 | 0x2B | 43 |
| 1.20.2 - 1.20.4 | 0x2C | 44 |
| 1.20.5 - 1.21.1 | 0x2E | 46 |
| 1.21.2 - 1.21.4 | 0x2F | 47 |
| 1.21.5 - 1.21.8 | 0x2E | 46 |
| 1.21.9 | 0x33 | 51 |
Description:
This packet is sent by the server when an entity moves a small distance. The change in position is represented as a fixed-point number with 12 fraction bits and 4 integer bits. As such, the maximum movement distance along each axis is 8 blocks in the negative direction, or 7.999755859375 blocks in the positive direction. If the movement exceeds these limits, Teleport Entity should be sent instead.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID |
SHORT |
Delta X: Change in X position as currentX * 4096 - prevX * 4096. |
SHORT |
Delta Y: Change in Y position as currentY * 4096 - prevY * 4096. |
SHORT |
Delta Z: Change in Z position as currentZ * 4096 - prevZ * 4096. |
BOOLEAN |
On Ground |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x17 | 23 |
| 1.9 - 1.11 | 0x26 | 38 |
| 1.12 - 1.12.1 | 0x27 | 39 |
| 1.13 - 1.14.4 | 0x29 | 41 |
| 1.15 | 0x2A | 42 |
| 1.16 - 1.16.1 | 0x29 | 41 |
| 1.16.2 | 0x28 | 40 |
| 1.17 - 1.18 | 0x2A | 42 |
| 1.19 - 1.19.0 | 0x27 | 39 |
| 1.19.1 - 1.19.2 | 0x29 | 41 |
| 1.19.3 | 0x28 | 40 |
| 1.19.4 - 1.20.1 | 0x2C | 44 |
| 1.20.2 - 1.20.4 | 0x2D | 45 |
| 1.20.5 - 1.21.1 | 0x2F | 47 |
| 1.21.2 - 1.21.4 | 0x30 | 48 |
| 1.21.5 - 1.21.8 | 0x2F | 47 |
| 1.21.9 | 0x34 | 52 |
Description:
This packet is sent by the server when an entity rotates and moves. See #Update Entity Position for how the position is encoded.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID |
SHORT |
Delta X: Change in X position as currentX * 4096 - prevX * 4096. |
SHORT |
Delta Y: Change in Y position as currentY * 4096 - prevY * 4096. |
SHORT |
Delta Z: Change in Z position as currentZ * 4096 - prevZ * 4096. |
BYTE |
Yaw: New angle, not a delta. |
BYTE |
Pitch: New angle, not a delta. |
BOOLEAN |
On Ground |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x16 | 22 |
| 1.9 - 1.11 | 0x27 | 39 |
| 1.12 - 1.12.1 | 0x28 | 40 |
| 1.13 - 1.14.4 | 0x2A | 42 |
| 1.15 | 0x2B | 43 |
| 1.16 - 1.16.1 | 0x2A | 42 |
| 1.16.2 | 0x29 | 41 |
| 1.17 - 1.18 | 0x2B | 43 |
| 1.19 - 1.19.0 | 0x28 | 40 |
| 1.19.1 - 1.19.2 | 0x2A | 42 |
| 1.19.3 | 0x29 | 41 |
| 1.19.4 - 1.20.1 | 0x2D | 45 |
| 1.20.2 - 1.20.4 | 0x2E | 46 |
| 1.20.5 - 1.21.1 | 0x30 | 48 |
| 1.21.2 - 1.21.4 | 0x32 | 50 |
| 1.21.5 - 1.21.8 | 0x31 | 49 |
| 1.21.9 | 0x36 | 54 |
Description:
This packet is sent by the server when an entity rotates.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID |
BYTE |
Yaw: New angle, not a delta. |
BYTE |
Pitch: New angle, not a delta. |
BOOLEAN |
On Ground |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.2 - 1.21.4 | 0x31 | 49 |
| 1.21.5 - 1.21.8 | 0x30 | 48 |
| 1.21.9 | 0x35 | 53 |
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID |
DOUBLE |
Prefixed Array |
DOUBLE |
Y |
DOUBLE |
Z |
DOUBLE |
Velocity X |
DOUBLE |
Velocity Y |
DOUBLE |
Velocity Z |
BYTE |
Yaw |
BYTE |
Pitch |
VAR_INT |
Entity ID |
DOUBLE |
Prefixed Array |
DOUBLE |
Y |
DOUBLE |
Z |
DOUBLE |
Velocity X |
DOUBLE |
Velocity Y |
DOUBLE |
Velocity Z |
BYTE |
Yaw |
BYTE |
Pitch |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.9 - 1.12.1 | 0x29 | 41 |
| 1.13 | 0x2B | 43 |
| 1.14 - 1.14.4 | 0x2C | 44 |
| 1.15 | 0x2D | 45 |
| 1.16 - 1.16.1 | 0x2C | 44 |
| 1.16.2 | 0x2B | 43 |
| 1.17 - 1.18 | 0x2C | 44 |
| 1.19 - 1.19.0 | 0x29 | 41 |
| 1.19.1 - 1.19.2 | 0x2B | 43 |
| 1.19.3 | 0x2A | 42 |
| 1.19.4 - 1.20.1 | 0x2E | 46 |
| 1.20.2 - 1.20.4 | 0x2F | 47 |
| 1.20.5 - 1.21.1 | 0x31 | 49 |
| 1.21.2 - 1.21.4 | 0x33 | 51 |
| 1.21.5 - 1.21.8 | 0x32 | 50 |
| 1.21.9 | 0x37 | 55 |
Description:
If the player is riding a client-side-controlled vehicle, teleports the vehicle to the specified position. Sent by the vanilla server in response to serverbound Move Vehicle packets that fail the movement speed check. Note that all fields use absolute positioning and do not allow for relative positioning.
Packet Fields:
| Type | Description |
|---|---|
DOUBLE |
X: Absolute position (X coordinate). |
DOUBLE |
Y: Absolute position (Y coordinate). |
DOUBLE |
Z: Absolute position (Z coordinate). |
FLOAT |
Yaw: Absolute rotation on the vertical axis, in degrees. |
FLOAT |
Pitch: Absolute rotation on the horizontal axis, in degrees. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.14 - 1.14.4 | 0x2D | 45 |
| 1.15 | 0x2E | 46 |
| 1.16 - 1.16.1 | 0x2D | 45 |
| 1.16.2 | 0x2C | 44 |
| 1.17 - 1.18 | 0x2D | 45 |
| 1.19 - 1.19.0 | 0x2A | 42 |
| 1.19.1 - 1.19.2 | 0x2C | 44 |
| 1.19.3 | 0x2B | 43 |
| 1.19.4 - 1.20.1 | 0x2F | 47 |
| 1.20.2 - 1.20.4 | 0x30 | 48 |
| 1.20.5 - 1.21.1 | 0x32 | 50 |
| 1.21.2 - 1.21.4 | 0x34 | 52 |
| 1.21.5 - 1.21.8 | 0x33 | 51 |
| 1.21.9 | 0x38 | 56 |
Description:
Sent when a player right-clicks with a signed book. This tells the client to open the book GUI.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Hand: 0: Main hand, 1: Off hand . |
VAR_INT |
Hand: 0: Main hand, 1: Off hand . |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x2D | 45 |
| 1.9 - 1.12.1 | 0x13 | 19 |
| 1.13 | 0x14 | 20 |
| 1.14 - 1.14.4 | 0x2E | 46 |
| 1.15 | 0x2F | 47 |
| 1.16 - 1.16.1 | 0x2E | 46 |
| 1.16.2 | 0x2D | 45 |
| 1.17 - 1.18 | 0x2E | 46 |
| 1.19 - 1.19.0 | 0x2B | 43 |
| 1.19.1 - 1.19.2 | 0x2D | 45 |
| 1.19.3 | 0x2C | 44 |
| 1.19.4 - 1.20.1 | 0x30 | 48 |
| 1.20.2 - 1.20.4 | 0x31 | 49 |
| 1.20.5 - 1.21.1 | 0x33 | 51 |
| 1.21.2 - 1.21.4 | 0x35 | 53 |
| 1.21.5 - 1.21.8 | 0x34 | 52 |
| 1.21.9 | 0x39 | 57 |
Description:
This is sent to the client when it should open an inventory, such as a chest, workbench, furnace, or other container. Resending this packet with the already existing window ID, will update the window title and window type without closing the window. This message is not sent to clients opening their own inventory, nor do clients inform the server in any way when doing so. From the server's perspective, the inventory is always "open" whenever no other windows are. For horses, use Open Horse Screen.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Window ID: An identifier for the window to be displayed. The vanilla server implementation is a counter, starting at 1. There can only be one window at a time; this is only used to ignore outdated packets targeting already-closed windows. Note also that the Window ID field in most other packets is only a single byte, and indeed, the vanilla server wraps around after 100. |
VAR_INT |
Window Type: The window type to use for display. Contained in the minecraft:menu registry; see Inventory for the different values. |
TEXT_COMPONENT |
Window Title: The title of the window. |
VAR_INT |
Window ID: An identifier for the window to be displayed. The vanilla server implementation is a counter, starting at 1. There can only be one window at a time; this is only used to ignore outdated packets targeting already-closed windows. Note also that the Window ID field in most other packets is only a single byte, and indeed, the vanilla server wraps around after 100. |
VAR_INT |
Window Type: The window type to use for display. Contained in the minecraft:menu registry; see Inventory for the different values. |
TEXT_COMPONENT |
Window Title: The title of the window. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x36 | 54 |
| 1.9 - 1.12.1 | 0x2A | 42 |
| 1.13 | 0x2C | 44 |
| 1.14 - 1.14.4 | 0x2F | 47 |
| 1.15 | 0x30 | 48 |
| 1.16 - 1.16.1 | 0x2F | 47 |
| 1.16.2 | 0x2E | 46 |
| 1.17 - 1.18 | 0x2F | 47 |
| 1.19 - 1.19.0 | 0x2C | 44 |
| 1.19.1 - 1.19.2 | 0x2E | 46 |
| 1.19.3 | 0x2D | 45 |
| 1.19.4 - 1.20.1 | 0x31 | 49 |
| 1.20.2 - 1.20.4 | 0x32 | 50 |
| 1.20.5 - 1.21.1 | 0x34 | 52 |
| 1.21.2 - 1.21.4 | 0x36 | 54 |
| 1.21.5 - 1.21.8 | 0x35 | 53 |
| 1.21.9 | 0x3A | 58 |
Description:
Sent when the client has placed a sign and is allowed to send Update Sign. There must already be a sign at the given location (which the client does not do automatically) - send a Block Update first.
Packet Fields:
| Type | Description |
|---|---|
POSITION |
Location |
BOOLEAN |
Is Front Text: Whether the opened editor is for the front or on the back of the sign |
POSITION |
Location |
BOOLEAN |
Is Front Text: Whether the opened editor is for the front or on the back of the sign |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.17 - 1.18 | 0x30 | 48 |
| 1.19 - 1.19.0 | 0x2D | 45 |
| 1.19.1 - 1.19.2 | 0x2F | 47 |
| 1.19.3 | 0x2E | 46 |
| 1.19.4 - 1.20.1 | 0x32 | 50 |
| 1.20.2 - 1.20.4 | 0x33 | 51 |
| 1.20.5 - 1.21.1 | 0x35 | 53 |
| 1.21.2 - 1.21.4 | 0x37 | 55 |
| 1.21.5 - 1.21.8 | 0x36 | 54 |
| 1.21.9 | 0x3B | 59 |
Description:
Packet is not used by the vanilla server. When sent to the client, the client responds with a Pong packet with the same ID.
Packet Fields:
| Type | Description |
|---|---|
INT |
ID |
INT |
ID |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.12.1 | 0x2B | 43 |
| 1.13 | 0x2D | 45 |
| 1.14 - 1.14.4 | 0x30 | 48 |
| 1.15 | 0x31 | 49 |
| 1.16 - 1.16.1 | 0x30 | 48 |
| 1.16.2 | 0x2F | 47 |
| 1.17 - 1.18 | 0x31 | 49 |
| 1.19 - 1.19.0 | 0x2E | 46 |
| 1.19.1 - 1.19.2 | 0x30 | 48 |
| 1.19.3 | 0x2F | 47 |
| 1.19.4 - 1.20.1 | 0x33 | 51 |
| 1.20.2 - 1.20.4 | 0x35 | 53 |
| 1.20.5 - 1.21.1 | 0x37 | 55 |
| 1.21.2 - 1.21.4 | 0x39 | 57 |
| 1.21.5 - 1.21.8 | 0x38 | 56 |
| 1.21.9 | 0x3D | 61 |
Description:
Response to the serverbound packet (Place Recipe), with the same recipe ID. Appears to be used to notify the UI.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Window ID |
RECIPE_DISPLAY |
Recipe Display |
VAR_INT |
Window ID |
RECIPE_DISPLAY |
Recipe Display |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x39 | 57 |
| 1.9 - 1.12.0 | 0x2B | 43 |
| 1.12.1 | 0x2C | 44 |
| 1.13 | 0x2E | 46 |
| 1.14 - 1.14.4 | 0x31 | 49 |
| 1.15 | 0x32 | 50 |
| 1.16 - 1.16.1 | 0x31 | 49 |
| 1.16.2 | 0x30 | 48 |
| 1.17 - 1.18 | 0x32 | 50 |
| 1.19 - 1.19.0 | 0x2F | 47 |
| 1.19.1 - 1.19.2 | 0x31 | 49 |
| 1.19.3 | 0x30 | 48 |
| 1.19.4 - 1.20.1 | 0x34 | 52 |
| 1.20.2 - 1.20.4 | 0x36 | 54 |
| 1.20.5 - 1.21.1 | 0x38 | 56 |
| 1.21.2 - 1.21.4 | 0x3A | 58 |
| 1.21.5 - 1.21.8 | 0x39 | 57 |
| 1.21.9 | 0x3E | 62 |
Description:
The latter 2 floats are used to indicate the flying speed and field of view respectively, while the first byte is used to determine the value of 4 booleans.
Packet Fields:
| Type | Description |
|---|---|
BYTE |
Flags: Bit field, see below. |
FLOAT |
Flying Speed: 0.05 by default. |
FLOAT |
Field of View Modifier: Modifies the field of view, like a speed potion. A vanilla server will use the same value as the movement speed sent in the Update Attributes packet, which defaults to 0.1 for players. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19 - 1.19.0 | 0x30 | 48 |
| 1.19.1 - 1.19.2 | 0x33 | 51 |
| 1.19.3 | 0x31 | 49 |
| 1.19.4 - 1.20.1 | 0x35 | 53 |
| 1.20.2 - 1.20.4 | 0x37 | 55 |
| 1.20.5 - 1.21.1 | 0x39 | 57 |
| 1.21.2 - 1.21.4 | 0x3B | 59 |
| 1.21.5 - 1.21.8 | 0x3A | 58 |
| 1.21.9 | 0x3F | 63 |
Description:
Sends the client a chat message from a player. Currently, a lot is unknown about this packet, blank descriptions are for those that are unknown This is used as the content parameter when formatting the message on the client. This is used as the sender parameter when formatting the message on the client. This is used as the target parameter when formatting the message on the client.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Global Index: A counter that starts at zero and gets increased by one for each chat message sent to the client. Each client has its own counter. |
UUID |
Sender: Used by the vanilla client for the disableChat launch option. Setting both longs to 0 will always display the message regardless of the setting. |
VAR_INT |
Index |
BYTE |
Message Signature bytes: Cryptography, the signature consists of the Sender UUID, Session UUID from the Player Session packet, Index, Salt, Timestamp in epoch seconds, the length of the original chat content, the original content itself, the length of Previous Messages, and all of the Previous message signatures. These values are hashed with SHA-256 and signed using the RSA cryptosystem. Modifying any of these values in the packet will cause this signature to fail. This buffer is always 256 bytes long and it is not length-prefixed. |
STRING |
Message: Raw (optionally) signed sent message content. |
| This is used as the content parameter when formatting the message on the client. | |
LONG |
Timestamp: Represents the time the message was signed as milliseconds since the epoch, used to check if the message was received within 2 minutes of it being sent. |
LONG |
Salt: Cryptography, used for validating the message signature. |
VAR_INT |
Message ID: The message ID + 1, used for validating message signature. The next field is present only when value of this field is equal to 0. |
BYTE |
Signature: The previous message's signature. Contains the same type of data as Message Signature bytes (256 bytes) above. Not length-prefixed. |
PREFIXED_OPTIONAL_TEXT_COMPONENT |
Unsigned Content |
VAR_INT |
Filter Type: If the message has been filtered |
OPTIONAL_BITSET |
Filter Type Bits: Only present if the Filter Type is Partially Filtered. Specifies the indices at which characters in the original message string should be replaced with the # symbol (i.e., filtered) by the vanilla client |
COMPONENT |
Chat Type: Either the type of chat in the minecraft:chat_type registry, defined by the Registry Data packet, or an inline definition. |
TEXT_COMPONENT |
Sender Name: The name of the one sending the message, usually the sender's display name. |
| This is used as the sender parameter when formatting the message on the client. | |
PREFIXED_OPTIONAL_TEXT_COMPONENT |
Target Name: The name of the one receiving the message, usually the receiver's display name. |
| This is used as the target parameter when formatting the message on the client. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19.1 | 0x32 | 50 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x42 | 66 |
| 1.9 - 1.12.0 | 0x2C | 44 |
| 1.12.1 | 0x2D | 45 |
| 1.13 | 0x2F | 47 |
| 1.14 - 1.14.4 | 0x32 | 50 |
| 1.15 | 0x33 | 51 |
| 1.16 - 1.16.1 | 0x32 | 50 |
| 1.16.2 | 0x31 | 49 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.17 - 1.18 | 0x33 | 51 |
| 1.19 - 1.19.0 | 0x31 | 49 |
| 1.19.1 - 1.19.2 | 0x34 | 52 |
| 1.19.3 | 0x32 | 50 |
| 1.19.4 - 1.20.1 | 0x36 | 54 |
| 1.20.2 - 1.20.4 | 0x38 | 56 |
| 1.20.5 - 1.21.1 | 0x3A | 58 |
| 1.21.2 - 1.21.4 | 0x3C | 60 |
| 1.21.5 - 1.21.8 | 0x3B | 59 |
| 1.21.9 | 0x40 | 64 |
Description:
Unused by the vanilla client. This data was once used for twitch.tv metadata circa 1.8.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Duration: Length of the combat in ticks. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.17 - 1.18 | 0x34 | 52 |
| 1.19 - 1.19.0 | 0x32 | 50 |
| 1.19.1 - 1.19.2 | 0x35 | 53 |
| 1.19.3 | 0x33 | 51 |
| 1.19.4 - 1.20.1 | 0x37 | 55 |
| 1.20.2 - 1.20.4 | 0x39 | 57 |
| 1.20.5 - 1.21.1 | 0x3B | 59 |
| 1.21.2 - 1.21.4 | 0x3D | 61 |
| 1.21.5 - 1.21.8 | 0x3C | 60 |
| 1.21.9 | 0x41 | 65 |
Description:
Unused by the vanilla client. This data was once used for twitch.tv metadata circa 1.8.
Packet Fields:
| Type | Description |
|---|---|
CLIENT |
Play: no fields |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.17 - 1.18 | 0x35 | 53 |
| 1.19 - 1.19.0 | 0x33 | 51 |
| 1.19.1 - 1.19.2 | 0x36 | 54 |
| 1.19.3 | 0x34 | 52 |
| 1.19.4 - 1.20.1 | 0x38 | 56 |
| 1.20.2 - 1.20.4 | 0x3A | 58 |
| 1.20.5 - 1.21.1 | 0x3C | 60 |
| 1.21.2 - 1.21.4 | 0x3E | 62 |
| 1.21.5 - 1.21.8 | 0x3D | 61 |
| 1.21.9 | 0x42 | 66 |
Description:
Used to send a respawn screen.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Player ID: Entity ID of the player that died (should match the client's entity ID). |
TEXT_COMPONENT |
Message: The death message. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x38 | 56 |
| 1.9 - 1.12.0 | 0x2D | 45 |
| 1.12.1 | 0x2E | 46 |
| 1.13 | 0x30 | 48 |
| 1.14 - 1.14.4 | 0x33 | 51 |
| 1.15 | 0x34 | 52 |
| 1.16 - 1.16.1 | 0x33 | 51 |
| 1.16.2 | 0x32 | 50 |
| 1.17 - 1.18 | 0x36 | 54 |
| 1.19 - 1.19.0 | 0x34 | 52 |
| 1.19.1 | 0x37 | 55 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19.3 | 0x35 | 53 |
| 1.19.4 - 1.20.1 | 0x39 | 57 |
| 1.20.2 - 1.20.4 | 0x3B | 59 |
| 1.20.5 - 1.21.1 | 0x3D | 61 |
| 1.21.2 - 1.21.4 | 0x3F | 63 |
| 1.21.5 - 1.21.8 | 0x3E | 62 |
| 1.21.9 | 0x43 | 67 |
Description:
Used by the server to remove players from the player list.
Packet Fields:
| Type | Description |
|---|---|
UUID |
UUIDs: UUIDs of players to remove. |
UUID |
UUIDs: UUIDs of players to remove. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19.3 | 0x36 | 54 |
| 1.19.4 - 1.20.1 | 0x3A | 58 |
| 1.20.2 - 1.20.4 | 0x3C | 60 |
| 1.20.5 - 1.21.1 | 0x3E | 62 |
| 1.21.2 - 1.21.4 | 0x40 | 64 |
| 1.21.5 - 1.21.8 | 0x3F | 63 |
| 1.21.9 | 0x44 | 68 |
Description:
Sent by the server to update the user list ( in the client).
Packet Fields:
| Type | Description |
|---|---|
ENUMSET |
Actions: Determines what actions are present. |
UUID |
Prefixed Array: The player UUID |
ARRAY_OF_PLAYERACTIONS |
Player Actions: The length of this array is determined by the number of Player Actions that give a non-zero value when applying its mask to the actions flag. For example, given the decimal number 5, binary 00000101. The masks 0x01 and 0x04 would return a non-zero value, meaning the Player Actions array would include two actions: Add Player and Update Game Mode. |
ENUMSET |
Actions: Determines what actions are present. |
UUID |
Prefixed Array: The player UUID |
ARRAY_OF_PLAYERACTIONS |
Player Actions: The length of this array is determined by the number of Player Actions that give a non-zero value when applying its mask to the actions flag. For example, given the decimal number 5, binary 00000101. The masks 0x01 and 0x04 would return a non-zero value, meaning the Player Actions array would include two actions: Add Player and Update Game Mode. |
NAME |
0x01: String (16) |
STRING |
Value |
STRING |
Signature |
LONG |
Public key expiry time: Key expiry time, as a UNIX timestamp in milliseconds. Only sent if Has Signature Data is true. |
BYTE |
Encoded public key: The player's public key, in bytes. Only sent if Has Signature Data is true. |
BYTE |
Public key signature: The public key's digital signature. Only sent if Has Signature Data is true. |
GAME_MODE |
0x04: VarInt |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.13 | 0x31 | 49 |
| 1.14 - 1.14.4 | 0x34 | 52 |
| 1.15 | 0x35 | 53 |
| 1.16 - 1.16.1 | 0x34 | 52 |
| 1.16.2 | 0x33 | 51 |
| 1.17 - 1.18 | 0x37 | 55 |
| 1.19 - 1.19.0 | 0x35 | 53 |
| 1.19.1 - 1.19.2 | 0x38 | 56 |
| 1.19.3 | 0x37 | 55 |
| 1.19.4 - 1.20.1 | 0x3B | 59 |
| 1.20.2 - 1.20.4 | 0x3D | 61 |
| 1.20.5 - 1.21.1 | 0x3F | 63 |
| 1.21.2 - 1.21.4 | 0x41 | 65 |
| 1.21.5 - 1.21.8 | 0x40 | 64 |
| 1.21.9 | 0x45 | 69 |
Description:
Used to rotate the client player to face the given location or entity (for /teleport [] facing).
Packet Fields:
| Type | Description |
|---|---|
PLAY |
protocol:0x40resource:player_look_at: Client |
VAR_INT |
Feet/eyes: Values are feet=0, eyes=1. If set to eyes, aims using the head position; otherwise, aims using the feet position. |
DOUBLE |
Target x: x coordinate of the point to face towards. |
DOUBLE |
Target y: y coordinate of the point to face towards. |
DOUBLE |
Target z: z coordinate of the point to face towards. |
BOOLEAN |
Is entity: If true, additional information about an entity is provided. |
VAR_INT |
Entity ID: Only if is entity is true — the entity to face towards. |
VAR_INT |
Entity feet/eyes: Whether to look at the entity's eyes or feet. Same values and meanings as before, just for the entity's head/feet. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x8 | 8 |
| 1.9 - 1.12.0 | 0x2E | 46 |
| 1.12.1 | 0x2F | 47 |
| 1.13 | 0x32 | 50 |
| 1.14 - 1.14.4 | 0x35 | 53 |
| 1.15 | 0x36 | 54 |
| 1.16 - 1.16.1 | 0x35 | 53 |
| 1.16.2 | 0x34 | 52 |
| 1.17 - 1.18 | 0x38 | 56 |
| 1.19 - 1.19.0 | 0x36 | 54 |
| 1.19.1 - 1.19.2 | 0x39 | 57 |
| 1.19.3 | 0x38 | 56 |
| 1.19.4 - 1.20.1 | 0x3C | 60 |
| 1.20.2 - 1.20.4 | 0x3E | 62 |
| 1.20.5 - 1.21.1 | 0x40 | 64 |
| 1.21.2 - 1.21.4 | 0x42 | 66 |
| 1.21.5 - 1.21.8 | 0x41 | 65 |
| 1.21.9 | 0x46 | 70 |
Description:
Teleports the client, e.g., during login, when using an ender pearl, in response to invalid move packets, etc. Due to latency, the server may receive outdated movement packets sent before the client was aware of the teleport. To account for this, the server ignores all movement packets from the client until a Confirm Teleportation packet with an ID matching the one sent in the teleport packet is received. The vanilla client will also send a Set Player Position and Rotation packet after the Confirm Teleportation packet with the position and rotation received from this packet, and horizontal collision and on ground set to false. Yaw is measured in degrees and does not follow classical trigonometry rules. The unit circle of yaw on the XZ-plane starts at (0, 1) and turns counterclockwise, with 90 at (-1, 0), 180 at (0, -1) and 270 at (1, 0). Additionally, yaw is not clamped to between 0 and 360 degrees; any number is valid, including negative numbers and numbers greater than 360 (see MC-90097). Pitch is measured in degrees, where 0 is looking straight ahead, -90 is looking straight up, and 90 is looking straight down. If the player is riding a vehicle, this packet has no effect, but both the Confirm Teleportation and Set Player Position and Rotation packets are still sent.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Teleport ID: Client should confirm this packet with Confirm Teleportation containing the same Teleport ID. |
DOUBLE |
X: Absolute or relative position, depending on Flags. |
DOUBLE |
Y: Absolute or relative position, depending on Flags. |
DOUBLE |
Z: Absolute or relative position, depending on Flags. |
DOUBLE |
Velocity X |
DOUBLE |
Velocity Y |
DOUBLE |
Velocity Z |
FLOAT |
Yaw: Absolute or relative rotation on the X axis, in degrees. |
FLOAT |
Pitch: Absolute or relative rotation on the Y axis, in degrees. |
TELEPORT_FLAGS |
Flags |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.2 - 1.21.4 | 0x43 | 67 |
| 1.21.5 - 1.21.8 | 0x42 | 66 |
| 1.21.9 | 0x47 | 71 |
Packet Fields:
| Type | Description |
|---|---|
FLOAT |
Yaw: Rotation on the X axis, in degrees. |
FLOAT |
Pitch: Rotation on the Y axis, in degrees. |
FLOAT |
Yaw: Rotation on the X axis, in degrees. |
FLOAT |
Pitch: Rotation on the Y axis, in degrees. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0xA | 10 |
| 1.9 - 1.12.0 | 0x2F | 47 |
| 1.12.1 | 0x30 | 48 |
| 1.13 | 0x33 | 51 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.2 - 1.20.4 | 0x34 | 52 |
| 1.20.5 - 1.21.1 | 0x36 | 54 |
| 1.21.2 - 1.21.4 | 0x38 | 56 |
| 1.21.5 - 1.21.8 | 0x37 | 55 |
| 1.21.9 | 0x3C | 60 |
Packet Fields:
| Type | Description |
|---|---|
LONG |
Timestamp: Should match the one sent by the client. |
LONG |
Payload: Should be the same as sent by the client. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.5 - 1.21.1 | 0x79 | 121 |
| 1.21.2 - 1.21.8 | 0x80 | 128 |
| 1.21.9 | 0x85 | 133 |
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID |
DOUBLE |
Power |
VAR_INT |
Entity ID |
DOUBLE |
Power |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.12 - 1.12.0 | 0x30 | 48 |
| 1.12.1 | 0x31 | 49 |
| 1.13 | 0x34 | 52 |
| 1.14 - 1.14.4 | 0x36 | 54 |
| 1.15 | 0x37 | 55 |
| 1.16 - 1.16.1 | 0x36 | 54 |
| 1.16.2 | 0x35 | 53 |
| 1.17 - 1.18 | 0x39 | 57 |
| 1.19 - 1.19.0 | 0x37 | 55 |
| 1.19.1 - 1.19.2 | 0x3A | 58 |
| 1.19.3 | 0x39 | 57 |
| 1.19.4 - 1.20.1 | 0x3D | 61 |
| 1.20.2 - 1.20.4 | 0x3F | 63 |
| 1.20.5 - 1.21 | 0x41 | 65 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.2 - 1.21.4 | 0x44 | 68 |
| 1.21.5 - 1.21.8 | 0x43 | 67 |
| 1.21.9 | 0x48 | 72 |
Packet Fields:
| Type | Description |
|---|---|
RECIPE_ID |
Recipes: Prefixed Array |
RECIPE_DISPLAY |
Display |
VAR_INT |
Group ID |
VAR_INT |
Category ID: ID in the minecraft:recipe_book_category registry. |
ARRAY |
Ingredients: IDs in the minecraft:item registry, or an inline definition. |
BYTE |
Flags: 0x01: show notification; 0x02: highlight as new |
BOOLEAN |
Replace: Replace or Add to known recipes |
RECIPE_ID |
Recipes: Prefixed Array |
RECIPE_DISPLAY |
Display |
VAR_INT |
Group ID |
VAR_INT |
Category ID: ID in the minecraft:recipe_book_category registry. |
ARRAY |
Ingredients: IDs in the minecraft:item registry, or an inline definition. |
BYTE |
Flags: 0x01: show notification; 0x02: highlight as new |
BOOLEAN |
Replace: Replace or Add to known recipes |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.2 - 1.21.4 | 0x45 | 69 |
| 1.21.5 - 1.21.8 | 0x44 | 68 |
| 1.21.9 | 0x49 | 73 |
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Recipes: IDs of recipes to remove. |
VAR_INT |
Recipes: IDs of recipes to remove. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.2 - 1.21.4 | 0x46 | 70 |
| 1.21.5 - 1.21.8 | 0x45 | 69 |
| 1.21.9 | 0x4A | 74 |
Packet Fields:
| Type | Description |
|---|---|
BOOLEAN |
Crafting Recipe Book Open: If true, then the crafting recipe book will be open when the player opens its inventory. |
BOOLEAN |
Crafting Recipe Book Filter Active: If true, then the filtering option is active when the player opens its inventory. |
BOOLEAN |
Smelting Recipe Book Open: If true, then the smelting recipe book will be open when the player opens its inventory. |
BOOLEAN |
Smelting Recipe Book Filter Active: If true, then the filtering option is active when the player opens its inventory. |
BOOLEAN |
Blast Furnace Recipe Book Open: If true, then the blast furnace recipe book will be open when the player opens its inventory. |
BOOLEAN |
Blast Furnace Recipe Book Filter Active: If true, then the filtering option is active when the player opens its inventory. |
BOOLEAN |
Smoker Recipe Book Open: If true, then the smoker recipe book will be open when the player opens its inventory. |
BOOLEAN |
Smoker Recipe Book Filter Active: If true, then the filtering option is active when the player opens its inventory. |
BOOLEAN |
Crafting Recipe Book Open: If true, then the crafting recipe book will be open when the player opens its inventory. |
BOOLEAN |
Crafting Recipe Book Filter Active: If true, then the filtering option is active when the player opens its inventory. |
BOOLEAN |
Smelting Recipe Book Open: If true, then the smelting recipe book will be open when the player opens its inventory. |
BOOLEAN |
Smelting Recipe Book Filter Active: If true, then the filtering option is active when the player opens its inventory. |
BOOLEAN |
Blast Furnace Recipe Book Open: If true, then the blast furnace recipe book will be open when the player opens its inventory. |
BOOLEAN |
Blast Furnace Recipe Book Filter Active: If true, then the filtering option is active when the player opens its inventory. |
BOOLEAN |
Smoker Recipe Book Open: If true, then the smoker recipe book will be open when the player opens its inventory. |
BOOLEAN |
Smoker Recipe Book Filter Active: If true, then the filtering option is active when the player opens its inventory. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x13 | 19 |
| 1.9 - 1.11 | 0x30 | 48 |
| 1.12 - 1.12.0 | 0x31 | 49 |
| 1.12.1 | 0x32 | 50 |
| 1.13 | 0x35 | 53 |
| 1.14 - 1.14.4 | 0x37 | 55 |
| 1.15 | 0x38 | 56 |
| 1.16 - 1.16.1 | 0x37 | 55 |
| 1.16.2 - 1.17.0 | 0x36 | 54 |
| 1.17.1 - 1.18 | 0x3A | 58 |
| 1.19 - 1.19.0 | 0x38 | 56 |
| 1.19.1 - 1.19.2 | 0x3B | 59 |
| 1.19.3 | 0x3A | 58 |
| 1.19.4 - 1.20.1 | 0x3E | 62 |
| 1.20.2 - 1.20.4 | 0x40 | 64 |
| 1.20.5 - 1.21.1 | 0x42 | 66 |
| 1.21.2 - 1.21.4 | 0x47 | 71 |
| 1.21.5 - 1.21.8 | 0x46 | 70 |
| 1.21.9 | 0x4B | 75 |
Description:
Sent by the server when an entity is to be destroyed on the client.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity IDs: The list of entities to destroy. |
VAR_INT |
Entity IDs: The list of entities to destroy. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.17 | 0x3A | 58 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x1E | 30 |
| 1.9 - 1.11 | 0x31 | 49 |
| 1.12 - 1.12.0 | 0x32 | 50 |
| 1.12.1 | 0x33 | 51 |
| 1.13 | 0x36 | 54 |
| 1.14 - 1.14.4 | 0x38 | 56 |
| 1.15 | 0x39 | 57 |
| 1.16 - 1.16.1 | 0x38 | 56 |
| 1.16.2 | 0x37 | 55 |
| 1.17 - 1.18 | 0x3B | 59 |
| 1.19 - 1.19.0 | 0x39 | 57 |
| 1.19.1 - 1.19.2 | 0x3C | 60 |
| 1.19.3 | 0x3B | 59 |
| 1.19.4 - 1.20.1 | 0x3F | 63 |
| 1.20.2 - 1.20.4 | 0x41 | 65 |
| 1.20.5 - 1.21.1 | 0x43 | 67 |
| 1.21.2 - 1.21.4 | 0x48 | 72 |
| 1.21.5 - 1.21.8 | 0x47 | 71 |
| 1.21.9 | 0x4C | 76 |
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID |
VAR_INT |
Effect ID: See this table. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.3 - 1.20.4 | 0x42 | 66 |
| 1.20.5 - 1.21.1 | 0x44 | 68 |
| 1.21.2 - 1.21.4 | 0x49 | 73 |
| 1.21.5 - 1.21.8 | 0x48 | 72 |
| 1.21.9 | 0x4D | 77 |
Description:
This is sent to the client when it should remove a scoreboard item.
Packet Fields:
| Type | Description |
|---|---|
STRING |
Entity Name: The entity whose score this is. For players, this is their username; for other entities, it is their UUID. |
STRING |
Objective Name: The name of the objective the score belongs to. |
STRING |
Entity Name: The entity whose score this is. For players, this is their username; for other entities, it is their UUID. |
STRING |
Objective Name: The name of the objective the score belongs to. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x48 | 72 |
| 1.9 - 1.11 | 0x32 | 50 |
| 1.12 - 1.12.0 | 0x33 | 51 |
| 1.12.1 | 0x34 | 52 |
| 1.13 | 0x37 | 55 |
| 1.14 - 1.14.4 | 0x39 | 57 |
| 1.15 | 0x3A | 58 |
| 1.16 - 1.16.1 | 0x39 | 57 |
| 1.16.2 | 0x38 | 56 |
| 1.17 - 1.18 | 0x3C | 60 |
| 1.19 - 1.19.0 | 0x3A | 58 |
| 1.19.1 - 1.19.2 | 0x3D | 61 |
| 1.19.3 | 0x3C | 60 |
| 1.19.4 - 1.20.1 | 0x40 | 64 |
| 1.20.2 | 0x42 | 66 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.3 - 1.20.4 | 0x43 | 67 |
| 1.20.5 - 1.21.1 | 0x45 | 69 |
| 1.21.2 - 1.21.4 | 0x4A | 74 |
| 1.21.5 - 1.21.8 | 0x49 | 73 |
| 1.21.9 | 0x4E | 78 |
Packet Fields:
| Type | Description |
|---|---|
UUID |
UUID: The UUID of the resource pack to be removed. If not present, every resource pack will be removed. |
UUID |
UUID: The UUID of the resource pack to be removed. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.3 - 1.20.4 | 0x44 | 68 |
| 1.20.5 - 1.21.1 | 0x46 | 70 |
| 1.21.2 - 1.21.4 | 0x4B | 75 |
| 1.21.5 - 1.21.8 | 0x4A | 74 |
| 1.21.9 | 0x4F | 79 |
Packet Fields:
| Type | Description |
|---|---|
UUID |
UUID: The unique identifier of the resource pack. |
STRING |
URL: The URL to the resource pack. |
STRING |
Hash: A 40 character hexadecimal, case-insensitive SHA-1 hash of the resource pack file.If it's not a 40-character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth. |
BOOLEAN |
Forced: The vanilla client will be forced to use the resource pack from the server. If they decline, they will be kicked from the server. |
PREFIXED_OPTIONAL_TEXT_COMPONENT |
Prompt Message: This is shown in the prompt making the client accept or decline the resource pack (only if present). |
UUID |
UUID: The unique identifier of the resource pack. |
STRING |
URL: The URL to the resource pack. |
STRING |
Hash: A 40 character hexadecimal, case-insensitive SHA-1 hash of the resource pack file.If it's not a 40-character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth. |
BOOLEAN |
Forced: The vanilla client will be forced to use the resource pack from the server. If they decline, they will be kicked from the server. |
PREFIXED_OPTIONAL_TEXT_COMPONENT |
Prompt Message: This is shown in the prompt making the client accept or decline the resource pack. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x7 | 7 |
| 1.9 - 1.11 | 0x33 | 51 |
| 1.12 - 1.12.0 | 0x34 | 52 |
| 1.12.1 | 0x35 | 53 |
| 1.13 | 0x38 | 56 |
| 1.14 - 1.14.4 | 0x3A | 58 |
| 1.15 | 0x3B | 59 |
| 1.16 - 1.16.1 | 0x3A | 58 |
| 1.16.2 | 0x39 | 57 |
| 1.17 - 1.18 | 0x3D | 61 |
| 1.19 - 1.19.0 | 0x3B | 59 |
| 1.19.1 - 1.19.2 | 0x3E | 62 |
| 1.19.3 | 0x3D | 61 |
| 1.19.4 - 1.20.1 | 0x41 | 65 |
| 1.20.2 | 0x43 | 67 |
| 1.20.3 - 1.20.4 | 0x45 | 69 |
| 1.20.5 - 1.21.1 | 0x47 | 71 |
| 1.21.2 - 1.21.4 | 0x4C | 76 |
| 1.21.5 - 1.21.8 | 0x4B | 75 |
| 1.21.9 | 0x50 | 80 |
Description:
To change the player's dimension (overworld/nether/end), send them a respawn packet with the appropriate dimension, followed by prechunks/chunks for the new dimension, and finally a position and look packet. You do not need to unload chunks; the client will do it automatically. The background of the loading screen is determined based on the Dimension Name specified in this packet and the one specified in the previous Login or Respawn packet. If either the current or the previous dimension is minecraft:nether, the Nether portal background is used. Otherwise, if the current or the previous dimension is minecraft:the_end, the End portal background is used. If the player is dead (health is 0), the default background is always used. In the vanilla implementation, this is context-dependent:
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Dimension Type: The ID of type of dimension in the minecraft:dimension_type registry, defined by the Registry Data packet. |
STRING |
Dimension Name: Name of the dimension being spawned into. |
LONG |
Hashed seed: First 8 bytes of the SHA-256 hash of the world's seed. Used client-side for biome noise |
BYTE |
Game mode: 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. |
BYTE |
Previous Game mode: -1: Undefined (null), 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. The previous game mode. Vanilla client uses this for the debug (F3 + N & F3 + F4) game mode switch. (More information needed) |
BOOLEAN |
Is Debug: True if the world is a debug mode world; debug mode worlds cannot be modified and have predefined blocks. |
BOOLEAN |
Is Flat: True if the world is a superflat world; flat worlds have different void fog and a horizon at y=0 instead of y=63. |
BOOLEAN |
Has death location: If true, then the next two fields are present. |
STRING |
Death dimension Name: Name of the dimension the player died in. |
POSITION |
Death location: The location that the player died at. |
VAR_INT |
Portal cooldown: The number of ticks until the player can use the portal again. |
VAR_INT |
Sea level |
BYTE |
Data kept: Bit mask. 0x01: Keep attributes, 0x02: Keep metadata. Tells which data should be kept on the client side once the player has respawned. |
| In the vanilla implementation, this is context-dependent: |
normal respawns (after death) keep no data;
exiting the end poem/credits keeps the attributes;
other dimension changes (portals or teleports) keep all data. |
| VAR_INT | Dimension Type: The ID of type of dimension in the minecraft:dimension_type registry, defined by the Registry Data packet. |
| STRING | Dimension Name: Name of the dimension being spawned into. |
| LONG | Hashed seed: First 8 bytes of the SHA-256 hash of the world's seed. Used client-side for biome noise |
| BYTE | Game mode: 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. |
| BYTE | Previous Game mode: -1: Undefined (null), 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. The previous game mode. Vanilla client uses this for the debug (F3 + N & F3 + F4) game mode switch. (More information needed) |
| BOOLEAN | Is Debug: True if the world is a debug mode world; debug mode worlds cannot be modified and have predefined blocks. |
| BOOLEAN | Is Flat: True if the world is a superflat world; flat worlds have different void fog and a horizon at y=0 instead of y=63. |
| BOOLEAN | Has death location: If true, then the next two fields are present. |
| STRING | Death dimension Name: Name of the dimension the player died in. |
| POSITION | Death location: The location that the player died at. |
| VAR_INT | Portal cooldown: The number of ticks until the player can use the portal again. |
| VAR_INT | Sea level |
| BYTE | Data kept: Bit mask. 0x01: Keep attributes, 0x02: Keep metadata. Tells which data should be kept on the client side once the player has respawned.
In the vanilla implementation, this is context-dependent:
normal respawns (after death) keep no data; exiting the end poem/credits keeps the attributes; other dimension changes (portals or teleports) keep all data. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x19 | 25 |
| 1.9 - 1.11 | 0x34 | 52 |
| 1.12 - 1.12.0 | 0x35 | 53 |
| 1.12.1 | 0x36 | 54 |
| 1.13 | 0x39 | 57 |
| 1.14 - 1.14.4 | 0x3B | 59 |
| 1.15 | 0x3C | 60 |
| 1.16 - 1.16.1 | 0x3B | 59 |
| 1.16.2 | 0x3A | 58 |
| 1.17 - 1.18 | 0x3E | 62 |
| 1.19 - 1.19.0 | 0x3C | 60 |
| 1.19.1 - 1.19.2 | 0x3F | 63 |
| 1.19.3 | 0x3E | 62 |
| 1.19.4 - 1.20.1 | 0x42 | 66 |
| 1.20.2 | 0x44 | 68 |
| 1.20.3 - 1.20.4 | 0x46 | 70 |
| 1.20.5 - 1.21.1 | 0x48 | 72 |
| 1.21.2 - 1.21.4 | 0x4D | 77 |
| 1.21.5 - 1.21.8 | 0x4C | 76 |
| 1.21.9 | 0x51 | 81 |
Description:
Changes the direction an entity's head is facing. While sending the Entity Look packet changes the vertical rotation of the head, sending this packet appears to be necessary to rotate the head horizontally.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID |
BYTE |
Head Yaw: New angle, not a delta. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.16.2 | 0x3B | 59 |
| 1.17 - 1.18 | 0x3F | 63 |
| 1.19 - 1.19.0 | 0x3D | 61 |
| 1.19.1 - 1.19.2 | 0x40 | 64 |
| 1.19.3 | 0x3F | 63 |
| 1.19.4 - 1.20.1 | 0x43 | 67 |
| 1.20.2 | 0x45 | 69 |
| 1.20.3 - 1.20.4 | 0x47 | 71 |
| 1.20.5 - 1.21.1 | 0x49 | 73 |
| 1.21.2 - 1.21.4 | 0x4E | 78 |
| 1.21.5 - 1.21.8 | 0x4D | 77 |
| 1.21.9 | 0x52 | 82 |
Description:
Fired whenever 2 or more blocks are changed within the same chunk on the same tick.
Packet Fields:
| Type | Description |
|---|---|
LONG |
Chunk section position: Chunk section coordinate (encoded chunk x and z with each 22 bits, and section y with 20 bits, from left to right). |
VAR_LONG |
Blocks: Each entry is composed of the block state id, shifted left by 12, and the relative block position in the chunk section (4 bits for x, z, and y, from left to right). |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.12 - 1.12.0 | 0x36 | 54 |
| 1.12.1 | 0x37 | 55 |
| 1.13 | 0x3A | 58 |
| 1.14 - 1.14.4 | 0x3C | 60 |
| 1.15 | 0x3D | 61 |
| 1.16 - 1.16.2 | 0x3C | 60 |
| 1.17 - 1.18 | 0x40 | 64 |
| 1.19 - 1.19.0 | 0x3E | 62 |
| 1.19.1 - 1.19.2 | 0x41 | 65 |
| 1.19.3 | 0x40 | 64 |
| 1.19.4 - 1.20.1 | 0x44 | 68 |
| 1.20.2 | 0x46 | 70 |
| 1.20.3 - 1.20.4 | 0x48 | 72 |
| 1.20.5 - 1.21.1 | 0x4A | 74 |
| 1.21.2 - 1.21.4 | 0x4F | 79 |
| 1.21.5 - 1.21.8 | 0x4E | 78 |
| 1.21.9 | 0x53 | 83 |
Description:
Sent by the server to indicate that the client should switch advancement tab. Sent either when the client switches tab in the GUI or when an advancement is made in another tab.
Packet Fields:
| Type | Description |
|---|---|
STRING |
Identifier: See below. |
STRING |
Identifier: See below. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19 - 1.19.0 | 0x3F | 63 |
| 1.19.1 - 1.19.2 | 0x42 | 66 |
| 1.19.3 | 0x41 | 65 |
| 1.19.4 - 1.20.1 | 0x45 | 69 |
| 1.20.2 | 0x47 | 71 |
| 1.20.3 - 1.20.4 | 0x49 | 73 |
| 1.20.5 - 1.21.1 | 0x4B | 75 |
| 1.21.2 - 1.21.4 | 0x50 | 80 |
| 1.21.5 - 1.21.8 | 0x4F | 79 |
| 1.21.9 | 0x54 | 84 |
Packet Fields:
| Type | Description |
|---|---|
TEXT_COMPONENT |
MOTD |
BYTE |
Icon: Icon bytes in the PNG format. |
TEXT_COMPONENT |
MOTD |
BYTE |
Icon: Icon bytes in the PNG format. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21 - 1.21.1 | 0x7B | 123 |
| 1.21.2 - 1.21.8 | 0x82 | 130 |
| 1.21.9 | 0x87 | 135 |
Description:
This packet contains a list of links that the vanilla client will display in the menu available from the pause menu. Link labels can be built-in or custom (i.e., any text).
Packet Fields:
| Type | Description |
|---|---|
LABEL |
Links: Prefixed Array |
STRING |
URL: Valid URL. |
IS_BUILTIN |
Links: Prefixed Array |
VAR_INT |
Label: See below. |
STRING |
URL: Valid URL. |
IS_BUILTIN |
Links: Prefixed Array |
VAR_INT |
Label: See below. |
STRING |
URL: Valid URL. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.17 - 1.18 | 0x41 | 65 |
| 1.19 - 1.19.0 | 0x40 | 64 |
| 1.19.1 - 1.19.2 | 0x43 | 67 |
| 1.19.3 | 0x42 | 66 |
| 1.19.4 - 1.20.1 | 0x46 | 70 |
| 1.20.2 | 0x48 | 72 |
| 1.20.3 - 1.20.4 | 0x4A | 74 |
| 1.20.5 - 1.21.1 | 0x4C | 76 |
| 1.21.2 - 1.21.4 | 0x51 | 81 |
| 1.21.5 - 1.21.8 | 0x50 | 80 |
| 1.21.9 | 0x55 | 85 |
Description:
Displays a message above the hotbar. Equivalent to System Chat Message with Overlay set to true, except that chat message blocking isn't performed. Used by the vanilla server only to implement the /title command.
Packet Fields:
| Type | Description |
|---|---|
ACTION_BAR_TEXT |
Client: Text Component |
ACTION_BAR_TEXT |
Client: Text Component |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x44 | 68 |
| 1.9 - 1.11 | 0x35 | 53 |
| 1.12 - 1.12.0 | 0x37 | 55 |
| 1.12.1 | 0x38 | 56 |
| 1.13 | 0x3B | 59 |
| 1.14 - 1.14.4 | 0x3D | 61 |
| 1.15 | 0x3E | 62 |
| 1.16 - 1.16.2 | 0x3D | 61 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.17 - 1.18 | 0x42 | 66 |
| 1.19 - 1.19.0 | 0x41 | 65 |
| 1.19.1 - 1.19.2 | 0x44 | 68 |
| 1.19.3 | 0x43 | 67 |
| 1.19.4 - 1.20.1 | 0x47 | 71 |
| 1.20.2 | 0x49 | 73 |
| 1.20.3 - 1.20.4 | 0x4B | 75 |
| 1.20.5 - 1.21.1 | 0x4D | 77 |
| 1.21.2 - 1.21.4 | 0x52 | 82 |
| 1.21.5 - 1.21.8 | 0x51 | 81 |
| 1.21.9 | 0x56 | 86 |
Packet Fields:
| Type | Description |
|---|---|
DOUBLE |
X |
DOUBLE |
Z |
DOUBLE |
X |
DOUBLE |
Z |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.17 - 1.18 | 0x43 | 67 |
| 1.19 - 1.19.0 | 0x42 | 66 |
| 1.19.1 - 1.19.2 | 0x45 | 69 |
| 1.19.3 | 0x44 | 68 |
| 1.19.4 - 1.20.1 | 0x48 | 72 |
| 1.20.2 | 0x4A | 74 |
| 1.20.3 - 1.20.4 | 0x4C | 76 |
| 1.20.5 - 1.21.1 | 0x4E | 78 |
| 1.21.2 - 1.21.4 | 0x53 | 83 |
| 1.21.5 - 1.21.8 | 0x52 | 82 |
| 1.21.9 | 0x57 | 87 |
Packet Fields:
| Type | Description |
|---|---|
DOUBLE |
Old Diameter: Current length of a single side of the world border, in meters. |
DOUBLE |
New Diameter: Target length of a single side of the world border, in meters. |
VAR_LONG |
Speed: Number of real-time milliseconds until New Diameter is reached. It appears that vanilla 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. |
DOUBLE |
Old Diameter: Current length of a single side of the world border, in meters. |
DOUBLE |
New Diameter: Target length of a single side of the world border, in meters. |
VAR_LONG |
Speed: Number of real-time milliseconds until New Diameter is reached. It appears that vanilla 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. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.17 - 1.18 | 0x44 | 68 |
| 1.19 - 1.19.0 | 0x43 | 67 |
| 1.19.1 - 1.19.2 | 0x46 | 70 |
| 1.19.3 | 0x45 | 69 |
| 1.19.4 - 1.20.1 | 0x49 | 73 |
| 1.20.2 | 0x4B | 75 |
| 1.20.3 - 1.20.4 | 0x4D | 77 |
| 1.20.5 - 1.21.1 | 0x4F | 79 |
| 1.21.2 - 1.21.4 | 0x54 | 84 |
| 1.21.5 - 1.21.8 | 0x53 | 83 |
| 1.21.9 | 0x58 | 88 |
Packet Fields:
| Type | Description |
|---|---|
DOUBLE |
Diameter: Length of a single side of the world border, in meters. |
DOUBLE |
Diameter: Length of a single side of the world border, in meters. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.17 - 1.18 | 0x45 | 69 |
| 1.19 - 1.19.0 | 0x44 | 68 |
| 1.19.1 - 1.19.2 | 0x47 | 71 |
| 1.19.3 | 0x46 | 70 |
| 1.19.4 - 1.20.1 | 0x4A | 74 |
| 1.20.2 | 0x4C | 76 |
| 1.20.3 - 1.20.4 | 0x4E | 78 |
| 1.20.5 - 1.21.1 | 0x50 | 80 |
| 1.21.2 - 1.21.4 | 0x55 | 85 |
| 1.21.5 - 1.21.8 | 0x54 | 84 |
| 1.21.9 | 0x59 | 89 |
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Warning Time: In seconds as set by /worldborder warning time. |
VAR_INT |
Warning Time: In seconds as set by /worldborder warning time. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.17 - 1.18 | 0x46 | 70 |
| 1.19 - 1.19.0 | 0x45 | 69 |
| 1.19.1 - 1.19.2 | 0x48 | 72 |
| 1.19.3 | 0x47 | 71 |
| 1.19.4 - 1.20.1 | 0x4B | 75 |
| 1.20.2 | 0x4D | 77 |
| 1.20.3 - 1.20.4 | 0x4F | 79 |
| 1.20.5 - 1.21.1 | 0x51 | 81 |
| 1.21.2 - 1.21.4 | 0x56 | 86 |
| 1.21.5 - 1.21.8 | 0x55 | 85 |
| 1.21.9 | 0x5A | 90 |
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Warning Blocks: In meters. |
VAR_INT |
Warning Blocks: In meters. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x43 | 67 |
| 1.9 - 1.11 | 0x36 | 54 |
| 1.12 - 1.12.0 | 0x38 | 56 |
| 1.12.1 | 0x39 | 57 |
| 1.13 | 0x3C | 60 |
| 1.14 - 1.14.4 | 0x3E | 62 |
| 1.15 | 0x3F | 63 |
| 1.16 - 1.16.2 | 0x3E | 62 |
| 1.17 - 1.18 | 0x47 | 71 |
| 1.19 - 1.19.0 | 0x46 | 70 |
| 1.19.1 - 1.19.2 | 0x49 | 73 |
| 1.19.3 | 0x48 | 72 |
| 1.19.4 - 1.20.1 | 0x4C | 76 |
| 1.20.2 | 0x4E | 78 |
| 1.20.3 - 1.20.4 | 0x50 | 80 |
| 1.20.5 - 1.21.1 | 0x52 | 82 |
| 1.21.2 - 1.21.4 | 0x57 | 87 |
| 1.21.5 - 1.21.8 | 0x56 | 86 |
| 1.21.9 | 0x5B | 91 |
Description:
Sets the entity that the player renders from. This is normally used when the player left-clicks an entity while in spectator mode. The player's camera will move with the entity and look where it is looking. The entity is often another player, but can be any type of entity. The player is unable to move this entity (move packets will act as if they are coming from the other entity). If the given entity is not loaded by the player, this packet is ignored. To return control to the player, send this packet with their entity ID. The vanilla server resets this (sends it back to the default entity) whenever the spectated entity is killed or the player sneaks, but only if they were spectating an entity. It also sends this packet whenever the player switches out of spectator mode (even if they weren't spectating an entity).
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Camera ID: ID of the entity to set the client's camera to. |
VAR_INT |
Camera ID: ID of the entity to set the client's camera to. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x9 | 9 |
| 1.9 - 1.11 | 0x37 | 55 |
| 1.12 - 1.12.0 | 0x39 | 57 |
| 1.12.1 | 0x3A | 58 |
| 1.13 | 0x3D | 61 |
| 1.14 - 1.14.4 | 0x3F | 63 |
| 1.15 | 0x40 | 64 |
| 1.16 - 1.16.2 | 0x3F | 63 |
| 1.17 - 1.18 | 0x48 | 72 |
| 1.19 - 1.19.0 | 0x47 | 71 |
| 1.19.1 - 1.19.2 | 0x4A | 74 |
| 1.19.3 | 0x49 | 73 |
| 1.19.4 - 1.20.1 | 0x4D | 77 |
| 1.20.2 | 0x4F | 79 |
| 1.20.3 - 1.20.4 | 0x51 | 81 |
| 1.20.5 - 1.21 | 0x53 | 83 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.14 - 1.14.4 | 0x40 | 64 |
| 1.15 | 0x41 | 65 |
| 1.16 - 1.16.2 | 0x40 | 64 |
| 1.17 - 1.18 | 0x49 | 73 |
| 1.19 - 1.19.0 | 0x48 | 72 |
| 1.19.1 - 1.19.2 | 0x4B | 75 |
| 1.19.3 | 0x4A | 74 |
| 1.19.4 - 1.20.1 | 0x4E | 78 |
| 1.20.2 | 0x50 | 80 |
| 1.20.3 - 1.20.4 | 0x52 | 82 |
| 1.20.5 - 1.21.1 | 0x54 | 84 |
| 1.21.2 - 1.21.4 | 0x58 | 88 |
| 1.21.5 - 1.21.8 | 0x57 | 87 |
| 1.21.9 | 0x5C | 92 |
Description:
Sets the center position of the client's chunk loading area. The area is square-shaped, spanning 2 × server view distance + 7 chunks on both axes (width, not radius!). Since the area's width is always an odd number, there is no ambiguity as to which chunk is the center. The vanilla client never renders or simulates chunks located outside the loading area, but keeps them in memory (unless explicitly unloaded by the server while still in range), and only automatically unloads a chunk when another chunk is loaded at coordinates congruent to the old chunk's coordinates modulo (2 × server view distance + 7). This means that a chunk may reappear after leaving and later re-entering the loading area through successive uses of this packet, unless it is replaced in the meantime by a different chunk in the same "slot". The vanilla client ignores attempts to load or unload chunks located outside the loading area. This applies even to unloads targeting chunks that are still loaded, but currently located outside the loading area (per the previous paragraph). The vanilla server does not rely on any specific behavior for chunks leaving the loading area, and custom clients need not replicate the above exactly. A client may instead choose to immediately unload any chunks outside the loading area, to use a different modulus, or to ignore the loading area completely and keep chunks loaded regardless of their location until the server requests to unload them. Servers aiming for maximal interoperability should always explicitly unload any loaded chunks before they go outside the loading area. The center chunk is normally the chunk the player is in, but apart from the implications on chunk loading, the (vanilla) client takes no issue with this not being the case. Indeed, as long as chunks are sent only within the default loading area centered on the world origin, it is not necessary to send this packet at all. This may be useful for servers with small bounded worlds, such as minigames, since it ensures chunks never need to be resent after the client has joined, saving on bandwidth. The vanilla server sends this packet whenever the player moves across a chunk border horizontally, and also (according to testing) for any integer change in the vertical axis, even if it doesn't go across a chunk section border.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Chunk X: Chunk X coordinate of the loading area center. |
VAR_INT |
Chunk Z: Chunk Z coordinate of the loading area center. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.14 - 1.14.4 | 0x41 | 65 |
| 1.15 | 0x42 | 66 |
| 1.16 - 1.16.2 | 0x41 | 65 |
| 1.17 - 1.18 | 0x4A | 74 |
| 1.19 - 1.19.0 | 0x49 | 73 |
| 1.19.1 - 1.19.2 | 0x4C | 76 |
| 1.19.3 | 0x4B | 75 |
| 1.19.4 - 1.20.1 | 0x4F | 79 |
| 1.20.2 | 0x51 | 81 |
| 1.20.3 - 1.20.4 | 0x53 | 83 |
| 1.20.5 - 1.21.1 | 0x55 | 85 |
| 1.21.2 - 1.21.4 | 0x59 | 89 |
| 1.21.5 - 1.21.8 | 0x58 | 88 |
| 1.21.9 | 0x5D | 93 |
Description:
Sent by the integrated singleplayer server when changing render distance. This packet is sent by the server when the client reappears in the overworld after leaving the end.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
View Distance: Render distance (2-32). |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x46 | 70 |
Description:
Enables compression. If compression is enabled, all following packets are encoded in the compressed packet format. Negative values will disable compression, meaning the packet format should remain in the uncompressed packet format. However, this packet is entirely optional, and if not sent, compression will also not be enabled (the vanilla server does not send the packet when compression is disabled).
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Threshold: Maximum size of a packet before it is compressed. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.2 - 1.21.4 | 0x5A | 90 |
| 1.21.5 - 1.21.8 | 0x59 | 89 |
| 1.21.9 | 0x5E | 94 |
Description:
Replaces or sets the inventory item that's being dragged with the mouse.
Packet Fields:
| Type | Description |
|---|---|
SLOT |
Carried item |
SLOT |
Carried item |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x5 | 5 |
| 1.9 - 1.11 | 0x43 | 67 |
| 1.12 - 1.12.0 | 0x45 | 69 |
| 1.12.1 | 0x46 | 70 |
| 1.13 | 0x49 | 73 |
| 1.14 - 1.14.4 | 0x4D | 77 |
| 1.15 | 0x4E | 78 |
| 1.16 - 1.16.2 | 0x42 | 66 |
| 1.17 - 1.18 | 0x4B | 75 |
| 1.19 - 1.19.0 | 0x4A | 74 |
| 1.19.1 - 1.19.2 | 0x4D | 77 |
| 1.19.3 | 0x4C | 76 |
| 1.19.4 - 1.20.1 | 0x50 | 80 |
| 1.20.2 | 0x52 | 82 |
| 1.20.3 - 1.20.4 | 0x54 | 84 |
| 1.20.5 - 1.21.1 | 0x56 | 86 |
| 1.21.2 - 1.21.4 | 0x5B | 91 |
| 1.21.5 - 1.21.8 | 0x5A | 90 |
| 1.21.9 | 0x5F | 95 |
Description:
Sent by the server after login to specify the coordinates of the spawn point (the point at which players spawn at, and which the compass points to). It can be sent at any time to update the point compasses point at. Before receiving this packet, the client uses the default position 8, 64, 8, and angle 0.0.
Packet Fields:
| Type | Description |
|---|---|
POSITION |
Location: Spawn location. |
FLOAT |
Angle: The angle at which to respawn. |
POSITION |
Location: Spawn location. |
FLOAT |
Angle: The angle at which to respawn. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19 - 1.19.0 | 0x4B | 75 |
| 1.19.1 | 0x4E | 78 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x3D | 61 |
| 1.9 - 1.11 | 0x38 | 56 |
| 1.12 - 1.12.0 | 0x3A | 58 |
| 1.12.1 | 0x3B | 59 |
| 1.13 | 0x3E | 62 |
| 1.14 - 1.14.4 | 0x42 | 66 |
| 1.15 - 1.16.2 | 0x43 | 67 |
| 1.17 - 1.19.0 | 0x4C | 76 |
| 1.19.1 - 1.19.2 | 0x4F | 79 |
| 1.19.3 | 0x4D | 77 |
| 1.19.4 - 1.20.1 | 0x51 | 81 |
| 1.20.2 | 0x53 | 83 |
| 1.20.3 - 1.20.4 | 0x55 | 85 |
| 1.20.5 - 1.21.1 | 0x57 | 87 |
| 1.21.2 - 1.21.4 | 0x5C | 92 |
| 1.21.5 - 1.21.8 | 0x5B | 91 |
| 1.21.9 | 0x60 | 96 |
Description:
This is sent to the client when it should display a scoreboard.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Position: The position of the scoreboard. 0: list, 1: sidebar, 2: below name, 3 - 18: team-specific sidebar, indexed as 3 + team color. |
STRING |
Score Name: The unique name for the scoreboard to be displayed. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x1C | 28 |
| 1.9 - 1.11 | 0x39 | 57 |
| 1.12 - 1.12.0 | 0x3B | 59 |
| 1.12.1 | 0x3C | 60 |
| 1.13 | 0x3F | 63 |
| 1.14 - 1.14.4 | 0x43 | 67 |
| 1.15 - 1.16.2 | 0x44 | 68 |
| 1.17 - 1.19.0 | 0x4D | 77 |
| 1.19.1 - 1.19.2 | 0x50 | 80 |
| 1.19.3 | 0x4E | 78 |
| 1.19.4 - 1.20.1 | 0x52 | 82 |
| 1.20.2 | 0x54 | 84 |
| 1.20.3 - 1.20.4 | 0x56 | 86 |
| 1.20.5 - 1.21.1 | 0x58 | 88 |
| 1.21.2 - 1.21.4 | 0x5D | 93 |
| 1.21.5 - 1.21.8 | 0x5C | 92 |
| 1.21.9 | 0x61 | 97 |
Description:
Updates one or more metadata properties for an existing entity. Any properties not included in the Metadata field are left unchanged.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID |
ENTITY_METADATA |
Metadata |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x1B | 27 |
| 1.9 - 1.11 | 0x3A | 58 |
| 1.12 - 1.12.0 | 0x3C | 60 |
| 1.12.1 | 0x3D | 61 |
| 1.13 | 0x40 | 64 |
| 1.14 - 1.14.4 | 0x44 | 68 |
| 1.15 - 1.16.2 | 0x45 | 69 |
| 1.17 - 1.19.0 | 0x4E | 78 |
| 1.19.1 - 1.19.2 | 0x51 | 81 |
| 1.19.3 | 0x4F | 79 |
| 1.19.4 - 1.20.1 | 0x53 | 83 |
| 1.20.2 | 0x55 | 85 |
| 1.20.3 - 1.20.4 | 0x57 | 87 |
| 1.20.5 - 1.21.1 | 0x59 | 89 |
| 1.21.2 - 1.21.4 | 0x5E | 94 |
| 1.21.5 - 1.21.8 | 0x5D | 93 |
| 1.21.9 | 0x62 | 98 |
Description:
This packet is sent when an entity has been leashed to another entity.
Packet Fields:
| Type | Description |
|---|---|
INT |
Attached Entity ID: Attached entity's EID. |
INT |
Holding Entity ID: ID of the entity holding the lead. Set to -1 to detach. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x12 | 18 |
| 1.9 - 1.11 | 0x3B | 59 |
| 1.12 - 1.12.0 | 0x3D | 61 |
| 1.12.1 | 0x3E | 62 |
| 1.13 | 0x41 | 65 |
| 1.14 - 1.14.4 | 0x45 | 69 |
| 1.15 - 1.16.2 | 0x46 | 70 |
| 1.17 - 1.19.0 | 0x4F | 79 |
| 1.19.1 - 1.19.2 | 0x52 | 82 |
| 1.19.3 | 0x50 | 80 |
| 1.19.4 - 1.20.1 | 0x54 | 84 |
| 1.20.2 | 0x56 | 86 |
| 1.20.3 - 1.20.4 | 0x58 | 88 |
| 1.20.5 - 1.21.1 | 0x5A | 90 |
| 1.21.2 - 1.21.4 | 0x5F | 95 |
| 1.21.5 - 1.21.8 | 0x5E | 94 |
| 1.21.9 | 0x63 | 99 |
Description:
Velocity is in units of 1/8000 of a block per server tick (50ms); for example, -1343 would move (-1343 / 8000) = −0.167875 blocks per tick (or −3.3575 blocks per second).
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID |
SHORT |
Velocity X: Velocity on the X axis. |
SHORT |
Velocity Y: Velocity on the Y axis. |
SHORT |
Velocity Z: Velocity on the Z axis. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.16 - 1.16.2 | 0x47 | 71 |
| 1.17 - 1.19.0 | 0x50 | 80 |
| 1.19.1 - 1.19.2 | 0x53 | 83 |
| 1.19.3 | 0x51 | 81 |
| 1.19.4 - 1.20.1 | 0x55 | 85 |
| 1.20.2 | 0x57 | 87 |
| 1.20.3 - 1.20.4 | 0x59 | 89 |
| 1.20.5 - 1.21.1 | 0x5B | 91 |
| 1.21.2 - 1.21.4 | 0x60 | 96 |
| 1.21.5 - 1.21.8 | 0x5F | 95 |
| 1.21.9 | 0x64 | 100 |
Description:
Equipment slot can be one of the following:
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID: Entity's ID. |
THE_LENGTH_OF_THE_ARRAY_IS_NOT_KNOWN_BEFOREHAND_AND_HAS_TO_BE_DETERMINED_BY_READING_ALL_ENTRIES_AS_THE_MOST_SIGNIFICANT_BIT_OF_THE_SLOT_INDICATES_IF_THERE_IS_A_NEXT_ENTRY |
Byte Enum: Equipment slot (see below). Also has the top bit set if another entry follows, and otherwise unset if this is the last item in the array. |
SLOT |
Item |
VAR_INT |
Entity ID: Entity's ID. |
THE_LENGTH_OF_THE_ARRAY_IS_NOT_KNOWN_BEFOREHAND_AND_HAS_TO_BE_DETERMINED_BY_READING_ALL_ENTRIES_AS_THE_MOST_SIGNIFICANT_BIT_OF_THE_SLOT_INDICATES_IF_THERE_IS_A_NEXT_ENTRY |
Byte Enum: Equipment slot (see below). Also has the top bit set if another entry follows, and otherwise unset if this is the last item in the array. |
SLOT |
Item |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x4 | 4 |
| 1.9 - 1.11 | 0x3C | 60 |
| 1.12 - 1.12.0 | 0x3E | 62 |
| 1.12.1 | 0x3F | 63 |
| 1.13 | 0x42 | 66 |
| 1.14 - 1.14.4 | 0x46 | 70 |
| 1.15 | 0x47 | 71 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x1F | 31 |
| 1.9 - 1.11 | 0x3D | 61 |
| 1.12 - 1.12.0 | 0x3F | 63 |
| 1.12.1 | 0x40 | 64 |
| 1.13 | 0x43 | 67 |
| 1.14 - 1.14.4 | 0x47 | 71 |
| 1.15 - 1.16.2 | 0x48 | 72 |
| 1.17 - 1.19.0 | 0x51 | 81 |
| 1.19.1 - 1.19.2 | 0x54 | 84 |
| 1.19.3 | 0x52 | 82 |
| 1.19.4 - 1.20.1 | 0x56 | 86 |
| 1.20.2 | 0x58 | 88 |
| 1.20.3 - 1.20.4 | 0x5A | 90 |
| 1.20.5 - 1.21.1 | 0x5C | 92 |
| 1.21.2 - 1.21.4 | 0x61 | 97 |
| 1.21.5 - 1.21.8 | 0x60 | 96 |
| 1.21.9 | 0x65 | 101 |
Description:
Sent by the server when the client should change experience levels.
Packet Fields:
| Type | Description |
|---|---|
FLOAT |
Experience bar: Between 0 and 1. |
VAR_INT |
Level |
VAR_INT |
Total Experience: See Experience#Leveling up on the Minecraft Wiki for Total Experience to Level conversion. |
FLOAT |
Experience bar: Between 0 and 1. |
VAR_INT |
Level |
VAR_INT |
Total Experience: See Experience#Leveling up on the Minecraft Wiki for Total Experience to Level conversion. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x6 | 6 |
| 1.9 - 1.11 | 0x3E | 62 |
| 1.12 - 1.12.0 | 0x40 | 64 |
| 1.12.1 | 0x41 | 65 |
| 1.13 | 0x44 | 68 |
| 1.14 - 1.14.4 | 0x48 | 72 |
| 1.15 - 1.16.2 | 0x49 | 73 |
| 1.17 - 1.19.0 | 0x52 | 82 |
| 1.19.1 - 1.19.2 | 0x55 | 85 |
| 1.19.3 | 0x53 | 83 |
| 1.19.4 - 1.20.1 | 0x57 | 87 |
| 1.20.2 | 0x59 | 89 |
| 1.20.3 - 1.20.4 | 0x5B | 91 |
| 1.20.5 - 1.21.1 | 0x5D | 93 |
| 1.21.2 - 1.21.4 | 0x62 | 98 |
| 1.21.5 - 1.21.8 | 0x61 | 97 |
| 1.21.9 | 0x66 | 102 |
Description:
Sent by the server to set the health of the player it is sent to. Food saturation acts as a food “overcharge”. Food values will not decrease while the saturation is over zero. New players logging in or respawning automatically get a saturation of 5.0. Eating food increases the saturation as well as the food bar.
Packet Fields:
| Type | Description |
|---|---|
FLOAT |
Health: 0 or less = dead, 20 = full HP. |
VAR_INT |
Food: 0–20. |
FLOAT |
Food Saturation: Seems to vary from 0.0 to 5.0 in integer increments. |
FLOAT |
Health: 0 or less = dead, 20 = full HP. |
VAR_INT |
Food: 0–20. |
FLOAT |
Food Saturation: Seems to vary from 0.0 to 5.0 in integer increments. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.2 - 1.21.4 | 0x63 | 99 |
| 1.21.5 - 1.21.8 | 0x62 | 98 |
| 1.21.9 | 0x67 | 103 |
Description:
Sent to change the player's slot selection.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Slot: The slot which the player has selected (0–8). |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x3B | 59 |
| 1.9 - 1.11 | 0x3F | 63 |
| 1.12 - 1.12.0 | 0x41 | 65 |
| 1.12.1 | 0x42 | 66 |
| 1.13 | 0x45 | 69 |
| 1.14 - 1.14.4 | 0x49 | 73 |
| 1.15 - 1.16.2 | 0x4A | 74 |
| 1.17 - 1.19.0 | 0x53 | 83 |
| 1.19.1 - 1.19.2 | 0x56 | 86 |
| 1.19.3 | 0x54 | 84 |
| 1.19.4 - 1.20.1 | 0x58 | 88 |
| 1.20.2 | 0x5A | 90 |
| 1.20.3 - 1.20.4 | 0x5C | 92 |
| 1.20.5 - 1.21.1 | 0x5E | 94 |
| 1.21.2 - 1.21.4 | 0x64 | 100 |
| 1.21.5 - 1.21.8 | 0x63 | 99 |
| 1.21.9 | 0x68 | 104 |
Description:
This is sent to the client when it should create a new scoreboard objective or remove one.
Packet Fields:
| Type | Description |
|---|---|
STRING |
Objective Name: A unique name for the objective. |
BYTE |
Mode: 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text. |
OPTIONAL_TEXT_COMPONENT |
Objective Value: Only if mode is 0 or 2.The text to be displayed for the score. |
VAR_INT |
Type: Only if mode is 0 or 2. 0 = "integer", 1 = "hearts". |
BOOLEAN |
Has Number Format: Only if mode is 0 or 2. Whether this objective has a set number format for the scores. |
VAR_INT |
Number Format: Only if mode is 0 or 2 and the previous boolean is true. Determines how the score number should be formatted. |
NO_FIELDS |
0: blank: Show nothing. |
COMPOUND_TAG |
Styling: The styling to be used when formatting the score number. Contains the text component styling fields. |
TEXT_COMPONENT |
Content: The text to be used as placeholder. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.9 - 1.11 | 0x40 | 64 |
| 1.12 - 1.12.0 | 0x42 | 66 |
| 1.12.1 | 0x43 | 67 |
| 1.13 | 0x46 | 70 |
| 1.14 - 1.14.4 | 0x4A | 74 |
| 1.15 - 1.16.2 | 0x4B | 75 |
| 1.17 - 1.19.0 | 0x54 | 84 |
| 1.19.1 - 1.19.2 | 0x57 | 87 |
| 1.19.3 | 0x55 | 85 |
| 1.19.4 - 1.20.1 | 0x59 | 89 |
| 1.20.2 | 0x5B | 91 |
| 1.20.3 - 1.20.4 | 0x5D | 93 |
| 1.20.5 - 1.21.1 | 0x5F | 95 |
| 1.21.2 - 1.21.4 | 0x65 | 101 |
| 1.21.5 - 1.21.8 | 0x64 | 100 |
| 1.21.9 | 0x69 | 105 |
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID: Vehicle's EID. |
VAR_INT |
Passengers: EIDs of entity's passengers. |
VAR_INT |
Entity ID: Vehicle's EID. |
VAR_INT |
Passengers: EIDs of entity's passengers. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.2 - 1.21.4 | 0x66 | 102 |
| 1.21.5 - 1.21.8 | 0x65 | 101 |
| 1.21.9 | 0x6A | 106 |
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Slot |
SLOT |
Slot Data |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x3E | 62 |
| 1.9 - 1.11 | 0x41 | 65 |
| 1.12 - 1.12.0 | 0x43 | 67 |
| 1.12.1 | 0x44 | 68 |
| 1.13 | 0x47 | 71 |
| 1.14 - 1.14.4 | 0x4B | 75 |
| 1.15 - 1.16.2 | 0x4C | 76 |
| 1.17 - 1.19.0 | 0x55 | 85 |
| 1.19.1 - 1.19.2 | 0x58 | 88 |
| 1.19.3 | 0x56 | 86 |
| 1.19.4 - 1.20.1 | 0x5A | 90 |
| 1.20.2 | 0x5C | 92 |
| 1.20.3 - 1.20.4 | 0x5E | 94 |
| 1.20.5 - 1.21.1 | 0x60 | 96 |
| 1.21.2 - 1.21.4 | 0x67 | 103 |
| 1.21.5 - 1.21.8 | 0x66 | 102 |
| 1.21.9 | 0x6B | 107 |
Description:
Creates and updates teams.
Packet Fields:
| Type | Description |
|---|---|
STRING |
Team Name: A unique name for the team. (Shared with scoreboard). |
BYTE |
Method: Determines the layout of the remaining packet. |
TEXT_COMPONENT |
Team Display Name |
BYTE |
Friendly Flags: Bit mask. 0x01: Allow friendly fire, 0x02: can see invisible players on the same team. |
VAR_INT |
Name Tag Visibility: 0 = ALWAYS, 1 = NEVER, 2 = HIDE_FOR_OTHER_TEAMS, 3 = HIDE_FOR_OWN_TEAMS |
VAR_INT |
Collision Rule: 0 = ALWAYS, 1 = NEVER, 2 = PUSH_OTHER_TEAMS, 3 = PUSH_OWN_TEAM |
VAR_INT |
Team Color: Used to color the names of players on the team; see below. |
TEXT_COMPONENT |
Team Prefix: Displayed before the names of players that are part of this team. |
TEXT_COMPONENT |
Team Suffix: Displayed after the names of players that are part of this team. |
STRING |
Entities: Identifiers for the entities in this team. For players, this is their username; for other entities, it is their UUID. |
NO_FIELDS |
no fields |
TEXT_COMPONENT |
Team Display Name |
BYTE |
Friendly Flags: Bit mask. 0x01: Allow friendly fire, 0x02: can see invisible entities on the same team. |
VAR_INT |
Name Tag Visibility: 0 = ALWAYS, 1 = NEVER, 2 = HIDE_FOR_OTHER_TEAMS, 3 = HIDE_FOR_OWN_TEAMS |
VAR_INT |
Collision Rule: 0 = ALWAYS, 1 = NEVER, 2 = PUSH_OTHER_TEAMS, 3 = PUSH_OWN_TEAM |
VAR_INT |
Team Color: Used to color the names of players on the team; see below. |
TEXT_COMPONENT |
Team Prefix: Displayed before the names of players that are part of this team. |
TEXT_COMPONENT |
Team Suffix: Displayed after the names of players that are part of this team. |
STRING |
Entities: Identifiers for the added entities. For players, this is their username; for other entities, it is their UUID. |
STRING |
Entities: Identifiers for the removed entities. For players, this is their username; for other entities, it is their UUID. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x3C | 60 |
| 1.9 - 1.11 | 0x42 | 66 |
| 1.12 - 1.12.0 | 0x44 | 68 |
| 1.12.1 | 0x45 | 69 |
| 1.13 | 0x48 | 72 |
| 1.14 - 1.14.4 | 0x4C | 76 |
| 1.15 - 1.16.2 | 0x4D | 77 |
| 1.17 - 1.19.0 | 0x56 | 86 |
| 1.19.1 - 1.19.2 | 0x59 | 89 |
| 1.19.3 | 0x57 | 87 |
| 1.19.4 - 1.20.1 | 0x5B | 91 |
| 1.20.2 | 0x5D | 93 |
| 1.20.3 - 1.20.4 | 0x5F | 95 |
| 1.20.5 - 1.21.1 | 0x61 | 97 |
| 1.21.2 - 1.21.4 | 0x68 | 104 |
| 1.21.5 - 1.21.8 | 0x67 | 103 |
| 1.21.9 | 0x6C | 108 |
Description:
This is sent to the client when it should update a scoreboard item.
Packet Fields:
| Type | Description |
|---|---|
STRING |
Entity Name: The entity whose score this is. For players, this is their username; for other entities, it is their UUID. |
STRING |
Objective Name: The name of the objective the score belongs to. |
VAR_INT |
Value: The score to be displayed next to the entry. |
PREFIXED_OPTIONAL_TEXT_COMPONENT |
Display Name: The custom display name. |
VAR_INT |
Number Format: Determines how the score number should be formatted. |
NO_FIELDS |
0: blank: Show nothing. |
COMPOUND_TAG |
Styling: The styling to be used when formatting the score number. Contains the text component styling fields. |
TEXT_COMPONENT |
Content: The text to be used as placeholder. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.18 - 1.19.0 | 0x57 | 87 |
| 1.19.1 - 1.19.2 | 0x5A | 90 |
| 1.19.3 | 0x58 | 88 |
| 1.19.4 - 1.20.1 | 0x5C | 92 |
| 1.20.2 | 0x5E | 94 |
| 1.20.3 - 1.20.4 | 0x60 | 96 |
| 1.20.5 - 1.21.1 | 0x62 | 98 |
| 1.21.2 - 1.21.4 | 0x69 | 105 |
| 1.21.5 - 1.21.8 | 0x68 | 104 |
| 1.21.9 | 0x6D | 109 |
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Simulation Distance: The distance that the client will process specific things, such as entities. |
VAR_INT |
Simulation Distance: The distance that the client will process specific things, such as entities. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.17 - 1.17.1 | 0x57 | 87 |
| 1.18 - 1.19.0 | 0x58 | 88 |
| 1.19.1 - 1.19.2 | 0x5B | 91 |
| 1.19.3 | 0x59 | 89 |
| 1.19.4 - 1.20.1 | 0x5D | 93 |
| 1.20.2 | 0x5F | 95 |
| 1.20.3 - 1.20.4 | 0x61 | 97 |
| 1.20.5 - 1.21.1 | 0x63 | 99 |
| 1.21.2 - 1.21.4 | 0x6A | 106 |
| 1.21.5 - 1.21.8 | 0x69 | 105 |
| 1.21.9 | 0x6E | 110 |
Packet Fields:
| Type | Description |
|---|---|
TEXT_COMPONENT |
Subtitle Text |
TEXT_COMPONENT |
Subtitle Text |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x3 | 3 |
| 1.9 - 1.11 | 0x44 | 68 |
| 1.12 - 1.12.0 | 0x46 | 70 |
| 1.12.1 | 0x47 | 71 |
| 1.13 | 0x4A | 74 |
| 1.14 - 1.14.4 | 0x4E | 78 |
| 1.15 | 0x4F | 79 |
| 1.16 - 1.16.2 | 0x4E | 78 |
| 1.17 - 1.17.1 | 0x58 | 88 |
| 1.18 - 1.19.0 | 0x59 | 89 |
| 1.19.1 - 1.19.2 | 0x5C | 92 |
| 1.19.3 | 0x5A | 90 |
| 1.19.4 - 1.20.1 | 0x5E | 94 |
| 1.20.2 | 0x60 | 96 |
| 1.20.3 - 1.20.4 | 0x62 | 98 |
| 1.20.5 - 1.21.1 | 0x64 | 100 |
| 1.21.2 - 1.21.4 | 0x6B | 107 |
| 1.21.5 - 1.21.8 | 0x6A | 106 |
| 1.21.9 | 0x6F | 111 |
Description:
Time is based on ticks, where 20 ticks happen every second. There are 24000 ticks in a day, making Minecraft days exactly 20 minutes long. The time of day is based on the timestamp modulo 24000. 0 is sunrise, 6000 is noon, 12000 is sunset, and 18000 is midnight. The default SMP server increments the time by 20 every second.
Packet Fields:
| Type | Description |
|---|---|
LONG |
World Age: In ticks; not changed by server commands. |
LONG |
Time of day: The world (or region) time, in ticks. |
BOOLEAN |
Time of day increasing: If true, the client should automatically advance the time of day according to its ticking rate. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 - 1.11 | 0x45 | 69 |
| 1.12 - 1.12.0 | 0x47 | 71 |
| 1.12.1 | 0x48 | 72 |
| 1.13 | 0x4B | 75 |
| 1.14 - 1.14.4 | 0x4F | 79 |
| 1.15 | 0x50 | 80 |
| 1.16 - 1.16.2 | 0x4F | 79 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.17 - 1.17.1 | 0x5A | 90 |
| 1.18 - 1.19.0 | 0x5B | 91 |
| 1.19.1 - 1.19.2 | 0x5E | 94 |
| 1.19.3 | 0x5C | 92 |
| 1.19.4 - 1.20.1 | 0x60 | 96 |
| 1.20.2 | 0x62 | 98 |
| 1.20.3 - 1.20.4 | 0x64 | 100 |
| 1.20.5 - 1.21.1 | 0x66 | 102 |
| 1.21.2 - 1.21.4 | 0x6D | 109 |
| 1.21.5 - 1.21.8 | 0x6C | 108 |
| 1.21.9 | 0x71 | 113 |
Packet Fields:
| Type | Description |
|---|---|
INT |
Fade In: Ticks to spend fading in. |
INT |
Stay: Ticks to keep the title displayed. |
INT |
Fade Out: Ticks to spend fading out, not when to start fading out. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.17 - 1.17.1 | 0x59 | 89 |
| 1.18 - 1.19.0 | 0x5A | 90 |
| 1.19.1 - 1.19.2 | 0x5D | 93 |
| 1.19.3 | 0x5B | 91 |
| 1.19.4 - 1.20.1 | 0x5F | 95 |
| 1.20.2 | 0x61 | 97 |
| 1.20.3 - 1.20.4 | 0x63 | 99 |
| 1.20.5 - 1.21.1 | 0x65 | 101 |
| 1.21.2 - 1.21.4 | 0x6C | 108 |
| 1.21.5 - 1.21.8 | 0x6B | 107 |
| 1.21.9 | 0x70 | 112 |
Packet Fields:
| Type | Description |
|---|---|
TEXT_COMPONENT |
Title Text |
TEXT_COMPONENT |
Title Text |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.6 - 1.21.8 | 0x85 | 133 |
| 1.21.9 | 0x8A | 138 |
Description:
Show a custom dialog screen to the client.
Packet Fields:
| Type | Description |
|---|---|
NBT |
Dialog: Inline definition as described at Registry_data#Dialog. |
ID_OR_NBT |
Dialog: ID in the minecraft:dialog registry, or an inline definition as described at Registry_data#Dialog. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.9 - 1.9.2 | 0x47 | 71 |
| 1.9.3 - 1.11 | 0x46 | 70 |
| 1.12 - 1.12.0 | 0x48 | 72 |
| 1.12.1 | 0x49 | 73 |
| 1.13 | 0x4D | 77 |
| 1.14 - 1.14.4 | 0x51 | 81 |
| 1.15 | 0x52 | 82 |
| 1.16 - 1.16.2 | 0x51 | 81 |
| 1.17 - 1.17.1 | 0x5C | 92 |
| 1.18 - 1.19.0 | 0x5D | 93 |
| 1.19.1 - 1.19.2 | 0x60 | 96 |
| 1.19.3 | 0x5E | 94 |
| 1.19.4 - 1.20.1 | 0x62 | 98 |
| 1.20.2 | 0x64 | 100 |
| 1.20.3 - 1.20.4 | 0x66 | 102 |
| 1.20.5 - 1.21.1 | 0x68 | 104 |
| 1.21.2 - 1.21.4 | 0x6F | 111 |
| 1.21.5 - 1.21.8 | 0x6E | 110 |
| 1.21.9 | 0x73 | 115 |
Description:
Plays a sound effect at the given location, either by hardcoded ID or Identifier. Sound IDs and names can be found here.
Packet Fields:
| Type | Description |
|---|---|
ID_OR_SOUND_EVENT |
Sound Event: ID in the minecraft:sound_event registry, or an inline definition. |
VAR_INT |
Sound Category: The category that this sound will be played from (current categories). |
INT |
Effect Position X: Effect X multiplied by 8 (fixed-point number with only 3 bits dedicated to the fractional part). |
INT |
Effect Position Y: Effect Y multiplied by 8 (fixed-point number with only 3 bits dedicated to the fractional part). |
INT |
Effect Position Z: Effect Z multiplied by 8 (fixed-point number with only 3 bits dedicated to the fractional part). |
FLOAT |
Volume: 1.0 is 100%, capped between 0.0 and 1.0 by vanilla clients. |
FLOAT |
Pitch: Float between 0.5 and 2.0 by vanilla clients. |
LONG |
Seed: Seed used to pick sound variant. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.14 - 1.14.4 | 0x50 | 80 |
| 1.15 | 0x51 | 81 |
| 1.16 - 1.16.2 | 0x50 | 80 |
| 1.17 - 1.17.1 | 0x5B | 91 |
| 1.18 - 1.19.0 | 0x5C | 92 |
| 1.19.1 - 1.19.2 | 0x5F | 95 |
| 1.19.3 | 0x5D | 93 |
| 1.19.4 - 1.20.1 | 0x61 | 97 |
| 1.20.2 | 0x63 | 99 |
| 1.20.3 - 1.20.4 | 0x65 | 101 |
| 1.20.5 - 1.21.1 | 0x67 | 103 |
| 1.21.2 - 1.21.4 | 0x6E | 110 |
| 1.21.5 - 1.21.8 | 0x6D | 109 |
| 1.21.9 | 0x72 | 114 |
Description:
Plays a sound effect from an entity, either by hardcoded ID or Identifier. Sound IDs and names can be found here.
Packet Fields:
| Type | Description |
|---|---|
ID_OR_SOUND_EVENT |
Sound Event: ID in the minecraft:sound_event registry, or an inline definition. |
VAR_INT |
Sound Category: The category that this sound will be played from (current categories). |
VAR_INT |
Entity ID |
FLOAT |
Volume: 1.0 is 100%, capped between 0.0 and 1.0 by vanilla clients. |
FLOAT |
Pitch: Float between 0.5 and 2.0 by vanilla clients. |
LONG |
Seed: Seed used to pick sound variant. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.2 | 0x65 | 101 |
| 1.20.3 - 1.20.4 | 0x67 | 103 |
| 1.20.5 - 1.21.1 | 0x69 | 105 |
| 1.21.2 - 1.21.4 | 0x70 | 112 |
| 1.21.5 - 1.21.8 | 0x6F | 111 |
| 1.21.9 | 0x74 | 116 |
Description:
Sent during gameplay in order to redo the configuration process. The client must respond with Acknowledge Configuration for the process to start.
Packet Fields:
| Type | Description |
|---|---|
CLIENT |
Play: no fields |
CLIENT |
Play: no fields |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.13 | 0x4C | 76 |
| 1.14 - 1.14.4 | 0x52 | 82 |
| 1.15 | 0x53 | 83 |
| 1.16 - 1.16.2 | 0x52 | 82 |
| 1.17 - 1.17.1 | 0x5D | 93 |
| 1.18 - 1.19.0 | 0x5E | 94 |
| 1.19.1 - 1.19.2 | 0x61 | 97 |
| 1.19.3 | 0x5F | 95 |
| 1.19.4 - 1.20.1 | 0x63 | 99 |
| 1.20.2 | 0x66 | 102 |
| 1.20.3 - 1.20.4 | 0x68 | 104 |
| 1.20.5 - 1.21.1 | 0x6A | 106 |
| 1.21.2 - 1.21.4 | 0x71 | 113 |
| 1.21.5 - 1.21.8 | 0x70 | 112 |
| 1.21.9 | 0x75 | 117 |
Description:
Categories:
Packet Fields:
| Type | Description |
|---|---|
BYTE |
Flags: Controls which fields are present. |
VAR_INT |
Source: Only if flags is 3 or 1 (bit mask 0x1). See below. If not present, then sounds from all sources are cleared. |
STRING |
Sound: Only if flags is 2 or 3 (bit mask 0x2). A sound effect name, see Custom Sound Effect. If not present, then all sounds are cleared. |
BYTE |
Flags: Controls which fields are present. |
VAR_INT |
Source: Only if flags is 3 or 1 (bit mask 0x1). See below. If not present, then sounds from all sources are cleared. |
STRING |
Sound: Only if flags is 2 or 3 (bit mask 0x2). A sound effect name, see Custom Sound Effect. If not present, then all sounds are cleared. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.5 - 1.21.1 | 0x6B | 107 |
| 1.21.2 - 1.21.4 | 0x72 | 114 |
| 1.21.5 - 1.21.8 | 0x71 | 113 |
| 1.21.9 | 0x76 | 118 |
Description:
Stores some arbitrary data on the client, which persists between server transfers. The vanilla client only accepts cookies of up to 5 kiB in size.
Packet Fields:
| Type | Description |
|---|---|
STRING |
Key: The identifier of the cookie. |
BYTE |
Payload: The data of the cookie. |
STRING |
Key: The identifier of the cookie. |
BYTE |
Payload: The data of the cookie. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19 - 1.19.0 | 0x5F | 95 |
| 1.19.1 - 1.19.2 | 0x62 | 98 |
| 1.19.3 | 0x60 | 96 |
| 1.19.4 - 1.20.1 | 0x64 | 100 |
| 1.20.2 | 0x67 | 103 |
| 1.20.3 - 1.20.4 | 0x69 | 105 |
| 1.20.5 - 1.21.1 | 0x6C | 108 |
| 1.21.2 - 1.21.4 | 0x73 | 115 |
| 1.21.5 - 1.21.8 | 0x72 | 114 |
| 1.21.9 | 0x77 | 119 |
Description:
Sends the client a raw system message.
Packet Fields:
| Type | Description |
|---|---|
TEXT_COMPONENT |
Content: Limited to 262144 bytes. |
BOOLEAN |
Overlay: Whether the message is an actionbar or chat message. See also #Set Action Bar Text. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x47 | 71 |
| 1.9 - 1.9.2 | 0x48 | 72 |
| 1.9.3 - 1.11 | 0x47 | 71 |
| 1.12 - 1.12.0 | 0x49 | 73 |
| 1.12.1 | 0x4A | 74 |
| 1.13 | 0x4E | 78 |
| 1.14 - 1.14.4 | 0x53 | 83 |
| 1.15 | 0x54 | 84 |
| 1.16 - 1.16.2 | 0x53 | 83 |
| 1.17 - 1.17.1 | 0x5E | 94 |
| 1.18 | 0x5F | 95 |
| 1.19 - 1.19.0 | 0x60 | 96 |
| 1.19.1 - 1.19.2 | 0x63 | 99 |
| 1.19.3 | 0x61 | 97 |
| 1.19.4 - 1.20.1 | 0x65 | 101 |
| 1.20.2 | 0x68 | 104 |
| 1.20.3 - 1.20.4 | 0x6A | 106 |
| 1.20.5 - 1.21.1 | 0x6D | 109 |
| 1.21.2 - 1.21.4 | 0x74 | 116 |
| 1.21.5 - 1.21.8 | 0x73 | 115 |
| 1.21.9 | 0x78 | 120 |
Description:
This packet may be used by custom servers to display additional information above/below the player list. It is never sent by the vanilla server.
Packet Fields:
| Type | Description |
|---|---|
TEXT_COMPONENT |
Header: To remove the header, send an empty text component: {"text":""}. |
TEXT_COMPONENT |
Footer: To remove the footer, send an empty text component: {"text":""}. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.13 | 0x1D | 29 |
| 1.14 - 1.14.4 | 0x54 | 84 |
| 1.15 | 0x55 | 85 |
| 1.16 - 1.16.2 | 0x54 | 84 |
| 1.17 - 1.17.1 | 0x5F | 95 |
| 1.18 | 0x60 | 96 |
| 1.19 - 1.19.0 | 0x61 | 97 |
| 1.19.1 - 1.19.2 | 0x64 | 100 |
| 1.19.3 | 0x62 | 98 |
| 1.19.4 - 1.20.1 | 0x66 | 102 |
| 1.20.2 | 0x69 | 105 |
| 1.20.3 - 1.20.4 | 0x6B | 107 |
| 1.20.5 - 1.21.1 | 0x6E | 110 |
| 1.21.2 - 1.21.4 | 0x75 | 117 |
| 1.21.5 - 1.21.8 | 0x74 | 116 |
| 1.21.9 | 0x79 | 121 |
Description:
Sent in response to Query Block Entity Tag or Query Entity Tag.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Transaction ID: Can be compared to the one sent in the original query packet. |
NBT |
NBT: The NBT of the block or entity. May be a TAG_END (0), in which case no NBT is present. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0xD | 13 |
| 1.9 - 1.9.2 | 0x49 | 73 |
| 1.9.3 - 1.11 | 0x48 | 72 |
| 1.12 - 1.12.0 | 0x4A | 74 |
| 1.12.1 | 0x4B | 75 |
| 1.13 | 0x4F | 79 |
| 1.14 - 1.14.4 | 0x55 | 85 |
| 1.15 | 0x56 | 86 |
| 1.16 - 1.16.2 | 0x55 | 85 |
| 1.17 - 1.17.1 | 0x60 | 96 |
| 1.18 | 0x61 | 97 |
| 1.19 - 1.19.0 | 0x62 | 98 |
| 1.19.1 - 1.19.2 | 0x65 | 101 |
| 1.19.3 | 0x63 | 99 |
| 1.19.4 - 1.20.1 | 0x67 | 103 |
| 1.20.2 | 0x6A | 106 |
| 1.20.3 - 1.20.4 | 0x6C | 108 |
| 1.20.5 - 1.21.1 | 0x6F | 111 |
| 1.21.2 - 1.21.4 | 0x76 | 118 |
| 1.21.5 - 1.21.8 | 0x75 | 117 |
| 1.21.9 | 0x7A | 122 |
Description:
Sent by the server when someone picks up an item lying on the ground — its sole purpose appears to be the animation of the item flying towards you. It doesn't destroy the entity in the client memory, and it doesn't add it to your inventory. The server only checks for items to be picked up after each Set Player Position (and Set Player Position And Rotation) packet sent by the client. The collector entity can be any entity; it does not have to be a player. The collected entity can also be any entity, but the vanilla server only uses this for items, experience orbs, and the different varieties of arrows.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Collected Entity ID |
VAR_INT |
Collector Entity ID |
VAR_INT |
Pickup Item Count: Seems to be 1 for XP orbs, otherwise the number of items in the stack. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x18 | 24 |
| 1.9 - 1.9.2 | 0x4A | 74 |
| 1.9.3 - 1.11 | 0x49 | 73 |
| 1.12 - 1.12.0 | 0x4B | 75 |
| 1.12.1 | 0x4C | 76 |
| 1.13 | 0x50 | 80 |
| 1.14 - 1.14.4 | 0x56 | 86 |
| 1.15 | 0x57 | 87 |
| 1.16 - 1.16.2 | 0x56 | 86 |
| 1.17 - 1.17.1 | 0x61 | 97 |
| 1.18 | 0x62 | 98 |
| 1.19 - 1.19.0 | 0x63 | 99 |
| 1.19.1 - 1.19.2 | 0x66 | 102 |
| 1.19.3 | 0x64 | 100 |
| 1.19.4 - 1.20.1 | 0x68 | 104 |
| 1.20.2 | 0x6B | 107 |
| 1.20.3 - 1.20.4 | 0x6D | 109 |
| 1.20.5 - 1.21.1 | 0x70 | 112 |
| 1.21.2 - 1.21.4 | 0x77 | 119 |
| 1.21.5 - 1.21.8 | 0x76 | 118 |
| 1.21.9 | 0x7B | 123 |
Description:
This packet is sent by the server when an entity moves more than 8 blocks.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID |
DOUBLE |
X |
DOUBLE |
Y |
DOUBLE |
Z |
DOUBLE |
Velocity X |
DOUBLE |
Velocity Y |
DOUBLE |
Velocity Z |
FLOAT |
Yaw: Rotation on the X axis, in degrees. |
FLOAT |
Pitch: Rotation on the Y axis, in degrees. |
BOOLEAN |
On Ground |
VAR_INT |
Entity ID |
DOUBLE |
X |
DOUBLE |
Y |
DOUBLE |
Z |
DOUBLE |
Velocity X |
DOUBLE |
Velocity Y |
DOUBLE |
Velocity Z |
FLOAT |
Yaw: Rotation on the Y axis, in degrees. |
FLOAT |
Pitch: Rotation on the Y axis, in degrees. |
TELEPORT_FLAGS |
Flags |
BOOLEAN |
On Ground |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.5 - 1.21.8 | 0x77 | 119 |
| 1.21.9 | 0x7C | 124 |
Description:
Updates the status of the currently open Test Instance Block screen, if any.
Packet Fields:
| Type | Description |
|---|---|
TEXT_COMPONENT |
Status |
BOOLEAN |
Has Size |
DOUBLE |
Size X: Only present if Has Size is true. |
DOUBLE |
Size Y: Only present if Has Size is true. |
DOUBLE |
Size Z: Only present if Has Size is true. |
TEXT_COMPONENT |
Status |
BOOLEAN |
Has Size |
DOUBLE |
Size X: Only present if Has Size is true. |
DOUBLE |
Size Y: Only present if Has Size is true. |
DOUBLE |
Size Z: Only present if Has Size is true. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.3 - 1.20.4 | 0x6E | 110 |
| 1.20.5 - 1.21.1 | 0x71 | 113 |
| 1.21.2 - 1.21.8 | 0x78 | 120 |
| 1.21.9 | 0x7D | 125 |
Description:
Used to adjust the ticking rate of the client, and whether it's frozen.
Packet Fields:
| Type | Description |
|---|---|
FLOAT |
Tick rate |
BOOLEAN |
Is frozen |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.3 - 1.20.4 | 0x6F | 111 |
| 1.20.5 - 1.21.1 | 0x72 | 114 |
| 1.21.2 - 1.21.8 | 0x79 | 121 |
| 1.21.9 | 0x7E | 126 |
Description:
Advances the client processing by the specified number of ticks. Has no effect unless client ticking is frozen.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Tick steps |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.6 - 1.21.8 | 0x83 | 131 |
| 1.21.9 | 0x88 | 136 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.5 - 1.21.1 | 0x73 | 115 |
| 1.21.2 - 1.21.8 | 0x7A | 122 |
| 1.21.9 | 0x7F | 127 |
Description:
Notifies the client that it should transfer to the given server. Cookies previously stored are preserved between server transfers.
Packet Fields:
| Type | Description |
|---|---|
STRING |
Host: The hostname or IP of the server. |
VAR_INT |
Port: The port of the server. |
STRING |
Host: The hostname or IP of the server. |
VAR_INT |
Port: The port of the server. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.12 - 1.12.0 | 0x4C | 76 |
| 1.12.1 | 0x4D | 77 |
| 1.13 | 0x51 | 81 |
| 1.14 - 1.14.4 | 0x57 | 87 |
| 1.15 | 0x58 | 88 |
| 1.16 - 1.16.2 | 0x57 | 87 |
| 1.17 - 1.17.1 | 0x62 | 98 |
| 1.18 | 0x63 | 99 |
| 1.19 - 1.19.0 | 0x64 | 100 |
| 1.19.1 - 1.19.2 | 0x67 | 103 |
| 1.19.3 | 0x65 | 101 |
| 1.19.4 - 1.20.1 | 0x69 | 105 |
| 1.20.2 | 0x6C | 108 |
| 1.20.3 - 1.20.4 | 0x70 | 112 |
| 1.20.5 - 1.21.1 | 0x74 | 116 |
| 1.21.2 - 1.21.8 | 0x7B | 123 |
| 1.21.9 | 0x80 | 128 |
Description:
Advancement structure: These booleans must be mapped with the AND operator to get the result. The vanilla client only sends data for advancements on the minecraft namespace.
Packet Fields:
| Type | Description |
|---|---|
BOOLEAN |
Reset/Clear: Whether to reset/clear the current advancements. |
STRING |
Prefixed Array: The identifier of the advancement. |
ADVANCEMENT |
Value: See below |
STRING |
Identifiers: The identifiers of the advancements that should be removed. |
STRING |
Prefixed Array: The identifier of the advancement. |
ADVANCEMENT_PROGRESS |
Value: See below. |
BOOLEAN |
Show advancements |
BOOLEAN |
Reset/Clear: Whether to reset/clear the current advancements. |
STRING |
Prefixed Array: The identifier of the advancement. |
ADVANCEMENT |
Value: See below |
STRING |
Identifiers: The identifiers of the advancements that should be removed. |
STRING |
Prefixed Array: The identifier of the advancement. |
ADVANCEMENT_PROGRESS |
Value: See below. |
BOOLEAN |
Show advancements |
STRING |
Parent id: The identifier of the parent advancement. |
PREFIXED_OPTIONAL_ADVANCEMENT_DISPLAY |
Display data: See below. |
ARRAY |
Nested requirements: Prefixed Array of String (32767) |
BOOLEAN |
Sends telemetry data: Whether the client should include this achievement in the telemetry data when it's completed. |
| The vanilla client only sends data for advancements on the minecraft namespace. | |
TEXT_COMPONENT |
Title |
TEXT_COMPONENT |
Description |
SLOT |
Icon |
VAR_INT |
Frame type: 0 = task, 1 = challenge, 2 = goal. |
INT |
Flags: 0x01: has background texture; 0x02: show_toast; 0x04: hidden. |
STRING |
Background texture: Background texture location. Only if flags indicates it. |
FLOAT |
X coord |
FLOAT |
Y coord |
STRING |
Criteria: Prefixed Array |
LONG |
Date of achieving: Present if achieved. As returned by Date.getTime. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x20 | 32 |
| 1.9 - 1.9.2 | 0x4B | 75 |
| 1.9.3 - 1.11 | 0x4A | 74 |
| 1.12 - 1.12.0 | 0x4D | 77 |
| 1.12.1 | 0x4E | 78 |
| 1.13 | 0x52 | 82 |
| 1.14 - 1.14.4 | 0x58 | 88 |
| 1.15 | 0x59 | 89 |
| 1.16 - 1.16.2 | 0x58 | 88 |
| 1.17 - 1.17.1 | 0x63 | 99 |
| 1.18 | 0x64 | 100 |
| 1.19 - 1.19.0 | 0x65 | 101 |
| 1.19.1 - 1.19.2 | 0x68 | 104 |
| 1.19.3 | 0x66 | 102 |
| 1.19.4 - 1.20.1 | 0x6A | 106 |
| 1.20.2 | 0x6D | 109 |
| 1.20.3 - 1.20.4 | 0x71 | 113 |
| 1.20.5 - 1.21.1 | 0x75 | 117 |
| 1.21.2 - 1.21.8 | 0x7C | 124 |
| 1.21.9 | 0x81 | 129 |
Description:
Sets attributes on the given entity.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID |
VAR_INT |
Prefixed Array: ID in the minecraft:attribute registry. See also Attribute#Attributes. |
DOUBLE |
Value: See below. |
ARRAY |
Modifiers: See Attribute#Modifiers. Modifier Data defined below. |
VAR_INT |
Entity ID |
VAR_INT |
Prefixed Array: ID in the minecraft:attribute registry. See also Attribute#Attributes. |
DOUBLE |
Value: See below. |
ARRAY |
Modifiers: See Attribute#Modifiers. Modifier Data defined below. |
STRING |
Id |
DOUBLE |
Amount: May be positive or negative. |
BYTE |
Operation: See below. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19.3 | 0x67 | 103 |
| 1.19.4 | 0x6B | 107 |
Description:
Used to enable and disable features, generally experimental ones, on the client.
Packet Fields:
| Type | Description |
|---|---|
STRING |
Feature Flags |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x49 | 73 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x1D | 29 |
| 1.9 - 1.9.2 | 0x4C | 76 |
| 1.9.3 - 1.11 | 0x4B | 75 |
| 1.12 - 1.12.0 | 0x4E | 78 |
| 1.12.1 | 0x4F | 79 |
| 1.13 | 0x53 | 83 |
| 1.14 - 1.14.4 | 0x59 | 89 |
| 1.15 | 0x5A | 90 |
| 1.16 - 1.16.2 | 0x59 | 89 |
| 1.17 - 1.17.1 | 0x64 | 100 |
| 1.18 | 0x65 | 101 |
| 1.19 - 1.19.0 | 0x66 | 102 |
| 1.19.1 - 1.19.2 | 0x69 | 105 |
| 1.19.3 | 0x68 | 104 |
| 1.19.4 - 1.20.1 | 0x6C | 108 |
| 1.20.2 | 0x6E | 110 |
| 1.20.3 - 1.20.4 | 0x72 | 114 |
| 1.20.5 - 1.21.1 | 0x76 | 118 |
| 1.21.2 - 1.21.8 | 0x7D | 125 |
| 1.21.9 | 0x82 | 130 |
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID |
VAR_INT |
Effect ID: See this table. |
VAR_INT |
Amplifier: Vanilla client displays effect level as Amplifier + 1. |
VAR_INT |
Duration: Duration in ticks. (-1 for infinite) |
BYTE |
Flags: Bit field, see below. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.13 | 0x54 | 84 |
| 1.14 - 1.14.4 | 0x5A | 90 |
| 1.15 | 0x5B | 91 |
| 1.16 - 1.16.2 | 0x5A | 90 |
| 1.17 - 1.17.1 | 0x65 | 101 |
| 1.18 | 0x66 | 102 |
| 1.19 - 1.19.0 | 0x67 | 103 |
| 1.19.1 - 1.19.2 | 0x6A | 106 |
| 1.19.3 | 0x69 | 105 |
| 1.19.4 - 1.20.1 | 0x6D | 109 |
| 1.20.2 | 0x6F | 111 |
| 1.20.3 - 1.20.4 | 0x73 | 115 |
| 1.20.5 - 1.21.1 | 0x77 | 119 |
| 1.21.2 - 1.21.8 | 0x7E | 126 |
| 1.21.9 | 0x83 | 131 |
Packet Fields:
| Type | Description |
|---|---|
PROPERTY_SET_ID |
Property Sets: Prefixed Array |
VAR_INT |
Items: IDs in the minecraft:item registry. |
ID_SET |
Prefixed Array |
SLOT_DISPLAY |
Slot Display |
PROPERTY_SET_ID |
Property Sets: Prefixed Array |
VAR_INT |
Items: IDs in the minecraft:item registry. |
ID_SET |
Prefixed Array |
SLOT_DISPLAY |
Slot Display |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x33 | 51 |
| 1.9 | 0x46 | 70 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.13 | 0x55 | 85 |
| 1.14 - 1.14.4 | 0x5B | 91 |
| 1.15 | 0x5C | 92 |
| 1.16 - 1.16.2 | 0x5B | 91 |
| 1.17 - 1.17.1 | 0x66 | 102 |
| 1.18 | 0x67 | 103 |
| 1.19 - 1.19.0 | 0x68 | 104 |
| 1.19.1 - 1.19.2 | 0x6B | 107 |
| 1.19.3 | 0x6A | 106 |
| 1.19.4 - 1.20.1 | 0x6E | 110 |
| 1.20.2 | 0x70 | 112 |
| 1.20.3 - 1.20.4 | 0x74 | 116 |
| 1.20.5 - 1.21.1 | 0x78 | 120 |
| 1.21.2 - 1.21.8 | 0x7F | 127 |
| 1.21.9 | 0x84 | 132 |
Packet Fields:
| Type | Description |
|---|---|
REGISTRY |
Array of tags: Prefixed Array |
REGISTRY |
Registry to tags map: Prefixed Array |
ARRAY |
Tags |
Serverbound packets are sent from client to server. Total: 71 packets.
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.9 - 1.21.6 | 0x0 | 0 |
Description:
Sent by client as confirmation of Synchronize Player Position.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Teleport ID: The ID given by the Synchronize Player Position packet. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.13 - 1.21.6 | 0x1 | 1 |
Description:
Used when F3+I is pressed while looking at a block.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Transaction ID: An incremental ID so that the client can verify that the response matches. |
POSITION |
Location: The location of the block to check. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.2 - 1.21.6 | 0x2 | 2 |
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Slot of Bundle |
VAR_INT |
Slot in Bundle |
VAR_INT |
Slot of Bundle |
VAR_INT |
Slot in Bundle |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.14 - 1.21.1 | 0x2 | 2 |
| 1.21.2 - 1.21.6 | 0x3 | 3 |
Description:
Must have at least op level 2 to use. Appears to only be used on singleplayer; the difficulty buttons are still disabled in multiplayer.
Packet Fields:
| Type | Description |
|---|---|
BYTE |
New difficulty: 0: peaceful, 1: easy, 2: normal, 3: hard. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.6 | 0x4 | 4 |
Description:
Requests for the server to update our game mode. Has no effect on vanilla servers if the client doesn't have the required permissions.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Game mode: 0: survival, 1: creative, 2: adventure, 3: spectator. |
VAR_INT |
Game mode: 0: survival, 1: creative, 2: adventure, 3: spectator. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x1 | 1 |
| 1.9 - 1.11 | 0x2 | 2 |
| 1.12 - 1.12.0 | 0x3 | 3 |
| 1.12.1 - 1.13 | 0x2 | 2 |
| 1.14 - 1.18 | 0x3 | 3 |
| 1.19 - 1.19.0 | 0x4 | 4 |
| 1.19.1 - 1.20.4 | 0x5 | 5 |
| 1.20.5 - 1.21.1 | 0x6 | 6 |
| 1.21.2 - 1.21.5 | 0x7 | 7 |
| 1.21.6 | 0x8 | 8 |
Description:
Used to send a chat message to the server. The message may not be longer than 256 characters or else the server will kick the client. The server will broadcast a Player Chat Message packet with Chat Type minecraft:chat to all players that haven't disabled chat (including the player that sent the message). See Chat#Processing chat for more information. This is a SHA256 with RSA digital signature computed over the following: The client's chat private key is used for the message signature. Bitmask of which message signatures from the last seen set were used to sign this message. The most recent is the highest bit. If there are fewer than 20 messages in the last seen set, the lower bits will be zeros.
Packet Fields:
| Type | Description |
|---|---|
STRING |
Message: Content of the message |
LONG |
Timestamp: Number of milliseconds since the epoch (1 Jan 1970, midnight, UTC) |
LONG |
Salt: The salt used to verify the signature hash. Randomly generated by the client |
BYTE |
Signature: The signature used to verify the chat message's authentication. When present, always 256 bytes and not length-prefixed. |
| This is a SHA256 with RSA digital signature computed over the following: |
The number 1 as a 4-byte int. Always 00 00 00 01. The player's 16-byte UUID. The chat session (a 16-byte UUID randomly generated by the client). The index of the message within this chat session as a 4-byte int. First message is 0, next message is 1, etc. Incremented each time the client sends a chat message. The salt (from above) as an 8-byte long. The timestamp (from above) converted from milliseconds to seconds, so divide by 1000, as an 8-byte long. The length of the message in bytes (from above) as a 4-byte int. The message bytes. The number of messages in the last seen set, as a 4-byte int. Always in the range [0,20]. For each message in the last seen set, from oldest to newest, the 256-byte signature of that message.
The client's chat private key is used for the message signature. |
| VAR_INT | Message Count: Number of signed clientbound chat messages the client has seen from the server since the last serverbound chat message from this client. The server will use this to update its last seen list for the client. |
| FIXED_BITSET | Acknowledged: Bitmask of which message signatures from the last seen set were used to sign this message. The most recent is the highest bit. If there are fewer than 20 messages in the last seen set, the lower bits will be zeros. |
| BYTE | Checksum |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19.1 - 1.21.1 | 0x3 | 3 |
| 1.21.2 - 1.21.5 | 0x4 | 4 |
| 1.21.6 | 0x5 | 5 |
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Message Count |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19 - 1.19.0 | 0x3 | 3 |
| 1.19.1 - 1.21.1 | 0x4 | 4 |
| 1.21.2 - 1.21.5 | 0x5 | 5 |
| 1.21.6 | 0x6 | 6 |
Packet Fields:
| Type | Description |
|---|---|
STRING |
Command: The command typed by the client excluding the /. |
STRING |
Command: The command typed by the client excluding the /. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.5 - 1.21.1 | 0x5 | 5 |
| 1.21.2 - 1.21.5 | 0x6 | 6 |
| 1.21.6 | 0x7 | 7 |
Packet Fields:
| Type | Description |
|---|---|
STRING |
Command: The command typed by the client excluding the /. |
LONG |
Timestamp: The timestamp that the command was executed. |
LONG |
Salt: The salt for the following argument signatures. |
STRING |
Prefixed Array (8): The name of the argument that is signed by the following signature. |
BYTE |
Signature: The signature that verifies the argument. Always 256 bytes and is not length-prefixed. |
VAR_INT |
Message Count |
FIXED_BITSET |
Acknowledged |
BYTE |
Checksum |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19 - 1.19.0 | 0x5 | 5 |
| 1.19.1 | 0x6 | 6 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.19.3 | 0x20 | 32 |
| 1.19.4 - 1.20.4 | 0x6 | 6 |
| 1.20.5 - 1.21.1 | 0x7 | 7 |
| 1.21.2 - 1.21.5 | 0x8 | 8 |
| 1.21.6 | 0x9 | 9 |
Packet Fields:
| Type | Description |
|---|---|
UUID |
Session Id |
LONG |
Expires At: The time the play session key expires in epoch milliseconds. |
BYTE |
Public Key: A byte array of an X.509-encoded public key. |
BYTE |
Key Signature: The signature consists of the player UUID, the key expiration timestamp, and the public key data. These values are hashed using SHA-1 and signed using Mojang's private RSA key. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.2 - 1.20.4 | 0x7 | 7 |
| 1.20.5 - 1.21.1 | 0x8 | 8 |
| 1.21.2 - 1.21.5 | 0x9 | 9 |
| 1.21.6 | 0xA | 10 |
Description:
Notifies the server that the chunk batch has been received by the client. The server uses the value sent in this packet to adjust the number of chunks to be sent in a batch. The vanilla server will stop sending further chunk data until the client acknowledges the sent chunk batch. After the first acknowledgement, the server adjusts this number to allow up to 10 unacknowledged batches.
Packet Fields:
| Type | Description |
|---|---|
FLOAT |
Chunks per tick: Desired chunks per tick. |
FLOAT |
Chunks per tick: Desired chunks per tick. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x16 | 22 |
| 1.9 - 1.11 | 0x3 | 3 |
| 1.12 - 1.12.0 | 0x4 | 4 |
| 1.12.1 - 1.13 | 0x3 | 3 |
| 1.14 - 1.18 | 0x4 | 4 |
| 1.19 - 1.19.0 | 0x6 | 6 |
| 1.19.1 - 1.19.2 | 0x7 | 7 |
| 1.19.3 | 0x6 | 6 |
| 1.19.4 - 1.20.1 | 0x7 | 7 |
| 1.20.2 - 1.20.4 | 0x8 | 8 |
| 1.20.5 - 1.21.1 | 0x9 | 9 |
| 1.21.2 - 1.21.5 | 0xA | 10 |
| 1.21.6 | 0xB | 11 |
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Action ID: See below |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x15 | 21 |
| 1.9 - 1.11 | 0x4 | 4 |
| 1.12 - 1.12.0 | 0x5 | 5 |
| 1.12.1 - 1.13 | 0x4 | 4 |
| 1.14 - 1.18 | 0x5 | 5 |
| 1.19 - 1.19.0 | 0x7 | 7 |
| 1.19.1 - 1.19.2 | 0x8 | 8 |
| 1.19.3 | 0x7 | 7 |
| 1.19.4 - 1.20.1 | 0x8 | 8 |
| 1.20.2 - 1.20.4 | 0x9 | 9 |
| 1.20.5 - 1.21.1 | 0xA | 10 |
| 1.21.2 - 1.21.5 | 0xC | 12 |
| 1.21.6 | 0xD | 13 |
Description:
Sent when the player connects, or when settings are changed.
Packet Fields:
| Type | Description |
|---|---|
STRING |
Locale: e.g. en_GB. |
BYTE |
View Distance: Client-side render distance, in chunks. |
VAR_INT |
Chat Mode: 0: enabled, 1: commands only, 2: hidden. See Chat#Client chat mode for more information. |
BOOLEAN |
Chat Colors: “Colors” multiplayer setting. The vanilla server stores this value but does nothing with it (see MC-64867). Some third-party servers disable all coloring in chat and system messages when it is false. |
BYTE |
Displayed Skin Parts: Bit mask, see below. |
VAR_INT |
Main Hand: 0: Left, 1: Right. |
BOOLEAN |
Enable text filtering: Enables filtering of text on signs and written book titles. The vanilla client sets this according to the profanityFilterPreferences.profanityFilterOn account attribute indicated by the /player/attributes Mojang API endpoint. In offline mode, it is always false. |
BOOLEAN |
Allow server listings: Servers usually list online players; this option should let you not show up in that list. |
VAR_INT |
Particle Status: 0: all, 1: decreased, 2: minimal |
STRING |
Locale: e.g. en_GB. |
BYTE |
View Distance: Client-side render distance, in chunks. |
VAR_INT |
Chat Mode: 0: enabled, 1: commands only, 2: hidden. See Chat#Client chat mode for more information. |
BOOLEAN |
Chat Colors: “Colors” multiplayer setting. The vanilla server stores this value but does nothing with it (see MC-64867). Some third-party servers disable all coloring in chat and system messages when it is false. |
BYTE |
Displayed Skin Parts: Bit mask, see below. |
VAR_INT |
Main Hand: 0: Left, 1: Right. |
BOOLEAN |
Enable text filtering: Enables filtering of text on signs and written book titles. The vanilla client sets this according to the profanityFilterPreferences.profanityFilterOn account attribute indicated by the /player/attributes Mojang API endpoint. In offline mode, it is always false. |
BOOLEAN |
Allow server listings: Servers usually list online players; this option should let you not show up in that list. |
VAR_INT |
Particle Status: 0: all, 1: decreased, 2: minimal |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.2 - 1.21.5 | 0xB | 11 |
| 1.21.6 | 0xC | 12 |
Packet Fields:
| Type | Description |
|---|---|
SERVER |
Play: no fields |
SERVER |
Play: no fields |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x14 | 20 |
| 1.9 - 1.11 | 0x1 | 1 |
| 1.12 - 1.12.0 | 0x2 | 2 |
| 1.12.1 | 0x1 | 1 |
| 1.13 | 0x5 | 5 |
| 1.14 - 1.18 | 0x6 | 6 |
| 1.19 - 1.19.0 | 0x8 | 8 |
| 1.19.1 - 1.19.2 | 0x9 | 9 |
| 1.19.3 | 0x8 | 8 |
| 1.19.4 - 1.20.1 | 0x9 | 9 |
| 1.20.2 - 1.20.4 | 0xA | 10 |
| 1.20.5 - 1.21.1 | 0xB | 11 |
| 1.21.2 - 1.21.5 | 0xD | 13 |
| 1.21.6 | 0xE | 14 |
Description:
Sent when the client needs to tab-complete a minecraft:ask_server suggestion type.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Transaction Id: The ID of the transaction that the server will send back to the client in the response of this packet. Client generates this and increments it each time it sends another tab completion that doesn't get a response. |
STRING |
Text: All the text behind the cursor including the / (e.g. to the left of the cursor in left-to-right languages like English). |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.2 - 1.20.4 | 0xB | 11 |
| 1.20.5 - 1.21.1 | 0xC | 12 |
| 1.21.2 - 1.21.5 | 0xE | 14 |
| 1.21.6 | 0xF | 15 |
Description:
Sent by the client upon receiving a Start Configuration packet from the server.
Packet Fields:
| Type | Description |
|---|---|
SERVER |
Play: no fields |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0xF | 15 |
| 1.9 - 1.11 | 0x5 | 5 |
| 1.12 - 1.12.0 | 0x6 | 6 |
| 1.12.1 | 0x5 | 5 |
| 1.13 | 0x6 | 6 |
| 1.14 - 1.16.2 | 0x7 | 7 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x11 | 17 |
| 1.9 - 1.11 | 0x6 | 6 |
| 1.12 - 1.12.0 | 0x7 | 7 |
| 1.12.1 | 0x6 | 6 |
| 1.13 | 0x7 | 7 |
| 1.14 - 1.16.2 | 0x8 | 8 |
| 1.17 - 1.18 | 0x7 | 7 |
| 1.19 - 1.19.0 | 0x9 | 9 |
| 1.19.1 - 1.19.2 | 0xA | 10 |
| 1.19.3 | 0x9 | 9 |
| 1.19.4 - 1.20.1 | 0xA | 10 |
| 1.20.2 - 1.20.4 | 0xC | 12 |
| 1.20.5 - 1.21.1 | 0xD | 13 |
| 1.21.2 - 1.21.5 | 0xF | 15 |
| 1.21.6 | 0x10 | 16 |
Description:
Used when clicking on window buttons. Until 1.14, this was only used by enchantment tables.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Window ID: The ID of the window sent by Open Screen. |
VAR_INT |
Button ID: Meaning depends on window type; see below. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0xE | 14 |
| 1.9 - 1.11 | 0x7 | 7 |
| 1.12 - 1.12.0 | 0x8 | 8 |
| 1.12.1 | 0x7 | 7 |
| 1.13 | 0x8 | 8 |
| 1.14 - 1.16.2 | 0x9 | 9 |
| 1.17 - 1.18 | 0x8 | 8 |
| 1.19 - 1.19.0 | 0xA | 10 |
| 1.19.1 - 1.19.2 | 0xB | 11 |
| 1.19.3 | 0xA | 10 |
| 1.19.4 - 1.20.1 | 0xB | 11 |
| 1.20.2 - 1.20.4 | 0xD | 13 |
| 1.20.5 - 1.21.1 | 0xE | 14 |
| 1.21.2 - 1.21.5 | 0x10 | 16 |
| 1.21.6 | 0x11 | 17 |
Description:
This packet is sent by the client when the player clicks on a slot in a window.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Window ID: The ID of the window that was clicked. 0 for player inventory. The server ignores any packets targeting a Window ID other than the current one, including ignoring 0 when any other window is open. |
VAR_INT |
State ID: The last received State ID from either a Set Container Slot or a Set Container Content packet. |
SHORT |
Slot: The clicked slot number, see below. |
BYTE |
Button: The button used in the click, see below. |
VAR_INT |
Mode: Inventory operation mode, see below. |
SHORT |
Prefixed Array (128) |
HASHED_SLOT |
Slot data: New data for this slot, in the client's opinion; see below. |
HASHED_SLOT |
Carried item: Item carried by the cursor. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0xD | 13 |
| 1.9 - 1.11 | 0x8 | 8 |
| 1.12 - 1.12.0 | 0x9 | 9 |
| 1.12.1 | 0x8 | 8 |
| 1.13 | 0x9 | 9 |
| 1.14 - 1.16.2 | 0xA | 10 |
| 1.17 - 1.18 | 0x9 | 9 |
| 1.19 - 1.19.0 | 0xB | 11 |
| 1.19.1 - 1.19.2 | 0xC | 12 |
| 1.19.3 | 0xB | 11 |
| 1.19.4 - 1.20.1 | 0xC | 12 |
| 1.20.2 - 1.20.4 | 0xE | 14 |
| 1.20.5 - 1.21.1 | 0xF | 15 |
| 1.21.2 - 1.21.5 | 0x11 | 17 |
| 1.21.6 | 0x12 | 18 |
Description:
This packet is sent by the client when closing a window. vanilla clients send a Close Window packet with Window ID 0 to close their inventory, even though there is never an Open Screen packet for the inventory.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Window ID: This is the ID of the window that was closed. 0 for player inventory. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.3 - 1.20.4 | 0xF | 15 |
| 1.20.5 - 1.21.1 | 0x10 | 16 |
| 1.21.2 - 1.21.5 | 0x12 | 18 |
| 1.21.6 | 0x13 | 19 |
Description:
This packet is sent by the client when toggling the state of a Crafter.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Slot ID: This is the ID of the slot that was changed. |
VAR_INT |
Window ID: This is the ID of the window that was changed. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.5 - 1.21.1 | 0x11 | 17 |
| 1.21.2 - 1.21.5 | 0x13 | 19 |
| 1.21.6 | 0x14 | 20 |
Description:
Response to a Cookie Request (login) from the server. The vanilla server only accepts responses of up to 5 kiB in size.
Packet Fields:
| Type | Description |
|---|---|
STRING |
Key: The identifier of the cookie. |
BYTE |
Payload: The data of the cookie. |
STRING |
Key: The identifier of the cookie. |
BYTE |
Payload: The data of the cookie. |
STRING |
Key: The identifier of the cookie. |
BYTE |
Payload: The data of the cookie. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.12 | 0x1 | 1 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.6 | 0x41 | 65 |
Description:
Sent when the client clicks a Text Component with the minecraft:custom click action. This is meant as an alternative to running a command, but it will not have any effect on vanilla servers.
Packet Fields:
| Type | Description |
|---|---|
STRING |
ID: The identifier for the click action. |
NBT |
Payload: The data to send with the click action. May be a TAG_END (0). |
STRING |
ID: The identifier for the click action. |
NBT |
Payload: The data to send with the click action. May be a TAG_END (0). |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x17 | 23 |
| 1.9 - 1.11 | 0x9 | 9 |
| 1.12 - 1.12.0 | 0xA | 10 |
| 1.12.1 | 0x9 | 9 |
| 1.13 | 0xA | 10 |
| 1.14 - 1.16.2 | 0xB | 11 |
| 1.17 - 1.18 | 0xA | 10 |
| 1.19 - 1.19.0 | 0xC | 12 |
| 1.19.1 - 1.19.2 | 0xD | 13 |
| 1.19.3 | 0xC | 12 |
| 1.19.4 - 1.20.1 | 0xD | 13 |
| 1.20.2 | 0xF | 15 |
| 1.20.3 - 1.20.4 | 0x10 | 16 |
| 1.20.5 - 1.21.1 | 0x12 | 18 |
| 1.21.2 - 1.21.5 | 0x14 | 20 |
| 1.21.6 | 0x15 | 21 |
Description:
Mods and plugins can use this to send their data. Minecraft itself uses some plugin channels. These internal channels are in the minecraft namespace. More documentation on this: https://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/ Note that the length of Data is known only from the packet length, since the packet has no length field of any kind.
Packet Fields:
| Type | Description |
|---|---|
STRING |
Channel: Name of the plugin channel used to send the data. |
BYTE |
Data: Any data, depending on the channel. minecraft: channels are documented here. The length of this array must be inferred from the packet length. |
STRING |
Channel: Name of the plugin channel used to send the data. |
BYTE |
Data: Any data, depending on the channel. minecraft: channels are documented here. The length of this array must be inferred from the packet length. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.5 - 1.21.1 | 0x13 | 19 |
| 1.21.2 - 1.21.5 | 0x15 | 21 |
| 1.21.6 | 0x16 | 22 |
Description:
Subscribes to the specified type of debug sample data, which is then sent periodically to the client via Debug Sample. The subscription is retained for 10 seconds (the vanilla server checks that both 10.001 real-time seconds and 201 ticks have elapsed), after which the client is automatically unsubscribed. The vanilla client resends this packet every 5 seconds to keep up the subscription. The vanilla server only allows subscriptions from players who are server operators.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Sample Type: The type of debug sample to subscribe to. Can be one of the following: |
| 0 - Tick time | |
VAR_INT |
Sample Type: The type of debug sample to subscribe to. Can be one of the following: |
| 0 - Tick time |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.13 | 0xB | 11 |
| 1.14 - 1.16.2 | 0xC | 12 |
| 1.17 - 1.18 | 0xB | 11 |
| 1.19 - 1.19.0 | 0xD | 13 |
| 1.19.1 - 1.19.2 | 0xE | 14 |
| 1.19.3 | 0xD | 13 |
| 1.19.4 - 1.20.1 | 0xE | 14 |
| 1.20.2 | 0x10 | 16 |
| 1.20.3 - 1.20.4 | 0x11 | 17 |
| 1.20.5 - 1.21.1 | 0x14 | 20 |
| 1.21.2 - 1.21.5 | 0x16 | 22 |
| 1.21.6 | 0x17 | 23 |
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Slot: The hotbar slot where the written book is located |
STRING |
Entries: Text from each page. Maximum string length is 1024 chars. |
STRING |
Title: Title of book. Present if book is being signed, not present if book is being edited. |
VAR_INT |
Slot: The hotbar slot where the written book is located |
STRING |
Entries: Text from each page. Maximum string length is 1024 chars. |
STRING |
Title: Title of book. Present if book is being signed, not present if book is being edited. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.13 | 0xC | 12 |
| 1.14 - 1.16.2 | 0xD | 13 |
| 1.17 - 1.18 | 0xC | 12 |
| 1.19 - 1.19.0 | 0xE | 14 |
| 1.19.1 - 1.19.2 | 0xF | 15 |
| 1.19.3 | 0xE | 14 |
| 1.19.4 - 1.20.1 | 0xF | 15 |
| 1.20.2 | 0x11 | 17 |
| 1.20.3 - 1.20.4 | 0x12 | 18 |
| 1.20.5 - 1.21.1 | 0x15 | 21 |
| 1.21.2 - 1.21.5 | 0x17 | 23 |
| 1.21.6 | 0x18 | 24 |
Description:
Used when F3+I is pressed while looking at an entity.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Transaction ID: An incremental ID so that the client can verify that the response matches. |
VAR_INT |
Entity ID: The ID of the entity to query. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x2 | 2 |
| 1.9 - 1.11 | 0xA | 10 |
| 1.12 - 1.12.0 | 0xB | 11 |
| 1.12.1 | 0xA | 10 |
| 1.13 | 0xD | 13 |
| 1.14 - 1.16.2 | 0xE | 14 |
| 1.17 - 1.18 | 0xD | 13 |
| 1.19 - 1.19.0 | 0xF | 15 |
| 1.19.1 - 1.19.2 | 0x10 | 16 |
| 1.19.3 | 0xF | 15 |
| 1.19.4 - 1.20.1 | 0x10 | 16 |
| 1.20.2 | 0x12 | 18 |
| 1.20.3 - 1.20.4 | 0x13 | 19 |
| 1.20.5 - 1.21.1 | 0x16 | 22 |
| 1.21.2 - 1.21.5 | 0x18 | 24 |
| 1.21.6 | 0x19 | 25 |
Description:
This packet is sent from the client to the server when the client attacks or right-clicks another entity (a player, minecart, etc). A vanilla server only accepts this packet if the entity being attacked/used is visible without obstruction and within a 4-unit radius of the player's position. The target X, Y, and Z fields represent the difference between the vector location of the cursor at the time of the packet and the entity's position. Note that middle-click in creative mode is interpreted by the client and sent as a Set Creative Mode Slot packet instead.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID: The ID of the entity to interact. Note the special case described below. |
VAR_INT |
Type: 0: interact, 1: attack, 2: interact at. |
FLOAT |
Target X: Only if Type is interact at. |
FLOAT |
Target Y: Only if Type is interact at. |
FLOAT |
Target Z: Only if Type is interact at. |
VAR_INT |
Hand: Only if Type is interact or interact at; 0: main hand, 1: off hand. |
BOOLEAN |
Sneak Key Pressed: If the client is pressing the sneak key. Has the same effect as a Player Command Press/Release sneak key preceding the interaction, and the state is permanently changed. |
VAR_INT |
Entity ID: The ID of the entity to interact. Note the special case described below. |
VAR_INT |
Type: 0: interact, 1: attack, 2: interact at. |
FLOAT |
Target X: Only if Type is interact at. |
FLOAT |
Target Y: Only if Type is interact at. |
FLOAT |
Target Z: Only if Type is interact at. |
VAR_INT |
Hand: Only if Type is interact or interact at; 0: main hand, 1: off hand. |
BOOLEAN |
Sneak Key Pressed: If the client is pressing the sneak key. Has the same effect as a Player Command Press/Release sneak key preceding the interaction, and the state is permanently changed. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.16 - 1.16.2 | 0xF | 15 |
| 1.17 - 1.18 | 0xE | 14 |
| 1.19 - 1.19.0 | 0x10 | 16 |
| 1.19.1 - 1.19.2 | 0x11 | 17 |
| 1.19.3 | 0x10 | 16 |
| 1.19.4 - 1.20.1 | 0x11 | 17 |
| 1.20.2 | 0x13 | 19 |
| 1.20.3 - 1.20.4 | 0x14 | 20 |
| 1.20.5 - 1.21.1 | 0x17 | 23 |
| 1.21.2 - 1.21.5 | 0x19 | 25 |
| 1.21.6 | 0x1A | 26 |
Description:
Sent when Generate is pressed on the Jigsaw Block interface.
Packet Fields:
| Type | Description |
|---|---|
POSITION |
Location: Block entity location. |
VAR_INT |
Levels: Value of the levels slider/max depth to generate. |
BOOLEAN |
Keep Jigsaws |
POSITION |
Location: Block entity location. |
VAR_INT |
Levels: Value of the levels slider/max depth to generate. |
BOOLEAN |
Keep Jigsaws |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x0 | 0 |
| 1.9 - 1.11 | 0xB | 11 |
| 1.12 - 1.12.0 | 0xC | 12 |
| 1.12.1 | 0xB | 11 |
| 1.13 | 0xE | 14 |
| 1.14 - 1.15 | 0xF | 15 |
| 1.16 - 1.16.2 | 0x10 | 16 |
| 1.17 - 1.18 | 0xF | 15 |
| 1.19 - 1.19.0 | 0x11 | 17 |
| 1.19.1 - 1.19.2 | 0x12 | 18 |
| 1.19.3 | 0x11 | 17 |
| 1.19.4 - 1.20.1 | 0x12 | 18 |
| 1.20.2 | 0x14 | 20 |
| 1.20.3 - 1.20.4 | 0x15 | 21 |
| 1.20.5 - 1.21.1 | 0x18 | 24 |
| 1.21.2 - 1.21.5 | 0x1A | 26 |
| 1.21.6 | 0x1B | 27 |
Description:
The server will frequently send out a keep-alive (see Clientbound Keep Alive), each containing a random ID. The client must respond with the same packet.
Packet Fields:
| Type | Description |
|---|---|
LONG |
Keep Alive ID |
LONG |
Keep Alive ID |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.14 - 1.15 | 0x10 | 16 |
| 1.16 - 1.16.2 | 0x11 | 17 |
| 1.17 - 1.18 | 0x10 | 16 |
| 1.19 - 1.19.0 | 0x12 | 18 |
| 1.19.1 - 1.19.2 | 0x13 | 19 |
| 1.19.3 | 0x12 | 18 |
| 1.19.4 - 1.20.1 | 0x13 | 19 |
| 1.20.2 | 0x15 | 21 |
| 1.20.3 - 1.20.4 | 0x16 | 22 |
| 1.20.5 - 1.21.1 | 0x19 | 25 |
| 1.21.2 - 1.21.5 | 0x1B | 27 |
| 1.21.6 | 0x1C | 28 |
Description:
Must have at least op level 2 to use. Appears to only be used on singleplayer; the difficulty buttons are still disabled in multiplayer.
Packet Fields:
| Type | Description |
|---|---|
BOOLEAN |
Locked |
BOOLEAN |
Locked |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x4 | 4 |
| 1.9 - 1.11 | 0xC | 12 |
| 1.12 - 1.12.0 | 0xE | 14 |
| 1.12.1 | 0xD | 13 |
| 1.13 | 0x10 | 16 |
| 1.14 - 1.15 | 0x11 | 17 |
| 1.16 - 1.16.2 | 0x12 | 18 |
| 1.17 - 1.18 | 0x11 | 17 |
| 1.19 - 1.19.0 | 0x13 | 19 |
| 1.19.1 - 1.19.2 | 0x14 | 20 |
| 1.19.3 | 0x13 | 19 |
| 1.19.4 - 1.20.1 | 0x14 | 20 |
| 1.20.2 | 0x16 | 22 |
| 1.20.3 - 1.20.4 | 0x17 | 23 |
| 1.20.5 - 1.21.1 | 0x1A | 26 |
| 1.21.2 - 1.21.5 | 0x1C | 28 |
| 1.21.6 | 0x1D | 29 |
Description:
Updates the player's XYZ position on the server. If the player is in a vehicle, the position is ignored (but in case of Set Player Position and Rotation, the rotation is still used as normal). No validation steps other than value range clamping are performed in this case. If the player is sleeping, the position (or rotation) is not changed, and a Synchronize Player Position is sent if the received position deviated from the server's view by more than a meter. The vanilla server silently clamps the x and z coordinates between -30,000,000 and 30,000,000, and the y coordinate between -20,000,000 and 20,000,000. A similar condition has historically caused a kick for "Illegal position"; this is no longer the case. However, infinite or NaN coordinates (or angles) still result in a kick for multiplayer.disconnect.invalid_player_movement. As of 1.20.6, checking for moving too fast is achieved like this (sic): If the player is moving too fast, it is logged that " moved too quickly! " followed by the change in x, y, and z, and the player is teleported back to their current (before this packet) server-side position. Checking for block collisions is achieved like this: Checking for illegal flight is achieved like this:
Packet Fields:
| Type | Description |
|---|---|
DOUBLE |
X: Absolute position. |
DOUBLE |
Feet Y: Absolute feet position, normally Head Y - 1.62. |
DOUBLE |
Z: Absolute position. |
BYTE |
Flags: Bit field: 0x01: on ground, 0x02: pushing against wall. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x6 | 6 |
| 1.9 - 1.11 | 0xD | 13 |
| 1.12 - 1.12.0 | 0xF | 15 |
| 1.12.1 | 0xE | 14 |
| 1.13 | 0x11 | 17 |
| 1.14 - 1.15 | 0x12 | 18 |
| 1.16 - 1.16.2 | 0x13 | 19 |
| 1.17 - 1.18 | 0x12 | 18 |
| 1.19 - 1.19.0 | 0x14 | 20 |
| 1.19.1 - 1.19.2 | 0x15 | 21 |
| 1.19.3 | 0x14 | 20 |
| 1.19.4 - 1.20.1 | 0x15 | 21 |
| 1.20.2 | 0x17 | 23 |
| 1.20.3 - 1.20.4 | 0x18 | 24 |
| 1.20.5 - 1.21.1 | 0x1B | 27 |
| 1.21.2 - 1.21.5 | 0x1D | 29 |
| 1.21.6 | 0x1E | 30 |
Description:
A combination of Move Player Rotation and Move Player Position.
Packet Fields:
| Type | Description |
|---|---|
DOUBLE |
X: Absolute position. |
DOUBLE |
Feet Y: Absolute feet position, normally Head Y - 1.62. |
DOUBLE |
Z: Absolute position. |
FLOAT |
Yaw: Absolute rotation on the X Axis, in degrees. |
FLOAT |
Pitch: Absolute rotation on the Y Axis, in degrees. |
BYTE |
Flags: Bit field: 0x01: on ground, 0x02: pushing against wall. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x5 | 5 |
| 1.9 - 1.11 | 0xE | 14 |
| 1.12 - 1.12.0 | 0x10 | 16 |
| 1.12.1 | 0xF | 15 |
| 1.13 | 0x12 | 18 |
| 1.14 - 1.15 | 0x13 | 19 |
| 1.16 - 1.16.2 | 0x14 | 20 |
| 1.17 - 1.18 | 0x13 | 19 |
| 1.19 - 1.19.0 | 0x15 | 21 |
| 1.19.1 - 1.19.2 | 0x16 | 22 |
| 1.19.3 | 0x15 | 21 |
| 1.19.4 - 1.20.1 | 0x16 | 22 |
| 1.20.2 | 0x18 | 24 |
| 1.20.3 - 1.20.4 | 0x19 | 25 |
| 1.20.5 - 1.21.1 | 0x1C | 28 |
| 1.21.2 - 1.21.5 | 0x1E | 30 |
| 1.21.6 | 0x1F | 31 |
Description:
Updates the direction the player is looking in. Yaw is measured in degrees and does not follow classical trigonometry rules. The unit circle of yaw on the XZ-plane starts at (0, 1) and turns counterclockwise, with 90 at (-1, 0), 180 at (0,-1) and 270 at (1, 0). Additionally, yaw is not clamped to between 0 and 360 degrees; any number is valid, including negative numbers and numbers greater than 360. Pitch is measured in degrees, where 0 is looking straight ahead, -90 is looking straight up, and 90 is looking straight down. The yaw and pitch of the player (in degrees), standing at point (x0, y0, z0) and looking towards point (x, y, z) can be calculated with: You can get a unit vector from a given yaw/pitch via:
Packet Fields:
| Type | Description |
|---|---|
FLOAT |
Yaw: Absolute rotation on the X Axis, in degrees. |
FLOAT |
Pitch: Absolute rotation on the Y Axis, in degrees. |
BYTE |
Flags: Bit field: 0x01: on ground, 0x02: pushing against wall. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x3 | 3 |
| 1.9 - 1.11 | 0xF | 15 |
| 1.12 - 1.12.0 | 0xD | 13 |
| 1.12.1 | 0xC | 12 |
| 1.13 | 0xF | 15 |
| 1.14 - 1.15 | 0x14 | 20 |
| 1.16 - 1.16.2 | 0x15 | 21 |
| 1.17 - 1.18 | 0x14 | 20 |
| 1.19 - 1.19.0 | 0x16 | 22 |
| 1.19.1 - 1.19.2 | 0x17 | 23 |
| 1.19.3 | 0x16 | 22 |
| 1.19.4 - 1.20.1 | 0x17 | 23 |
| 1.20.2 | 0x19 | 25 |
| 1.20.3 - 1.20.4 | 0x1A | 26 |
| 1.20.5 - 1.21.1 | 0x1D | 29 |
| 1.21.2 - 1.21.5 | 0x1F | 31 |
| 1.21.6 | 0x20 | 32 |
Description:
This packet, as well as Set Player Position, Set Player Rotation, and Set Player Position and Rotation are called the “serverbound movement packets”. Vanilla clients will send Move Player Position once every 20 ticks, even for a stationary player. This packet is used to indicate whether the player is on ground (walking/swimming) or airborne (jumping/falling). When dropping from a sufficient height, fall damage is applied when this state goes from false to true. The amount of damage applied is based on the point where it last changed from true to false. Note that there are several movement related packets containing this state.
Packet Fields:
| Type | Description |
|---|---|
BYTE |
Flags: Bit field: 0x01: on ground, 0x02: pushing against wall. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.9 - 1.11 | 0x10 | 16 |
| 1.12 - 1.12.0 | 0x11 | 17 |
| 1.12.1 | 0x10 | 16 |
| 1.13 | 0x13 | 19 |
| 1.14 - 1.15 | 0x15 | 21 |
| 1.16 - 1.16.2 | 0x16 | 22 |
| 1.17 - 1.18 | 0x15 | 21 |
| 1.19 - 1.19.0 | 0x17 | 23 |
| 1.19.1 - 1.19.2 | 0x18 | 24 |
| 1.19.3 | 0x17 | 23 |
| 1.19.4 - 1.20.1 | 0x18 | 24 |
| 1.20.2 | 0x1A | 26 |
| 1.20.3 - 1.20.4 | 0x1B | 27 |
| 1.20.5 - 1.21.1 | 0x1E | 30 |
| 1.21.2 - 1.21.5 | 0x20 | 32 |
| 1.21.6 | 0x21 | 33 |
Description:
Sent when a player moves in a client-side-controlled vehicle. Fields are the same as in Set Player Position and Rotation. Note that all fields use absolute positioning and do not allow for relative positioning.
Packet Fields:
| Type | Description |
|---|---|
DOUBLE |
X: Absolute position (X coordinate). |
DOUBLE |
Y: Absolute position (Y coordinate). |
DOUBLE |
Z: Absolute position (Z coordinate). |
FLOAT |
Yaw: Absolute rotation on the vertical axis, in degrees. |
FLOAT |
Pitch: Absolute rotation on the horizontal axis, in degrees. |
BOOLEAN |
On Ground: (This value does not seem to exist) |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.9 - 1.11 | 0x11 | 17 |
| 1.12 - 1.12.0 | 0x12 | 18 |
| 1.12.1 | 0x11 | 17 |
| 1.13 | 0x14 | 20 |
| 1.14 - 1.15 | 0x16 | 22 |
| 1.16 - 1.16.2 | 0x17 | 23 |
| 1.17 - 1.18 | 0x16 | 22 |
| 1.19 - 1.19.0 | 0x18 | 24 |
| 1.19.1 - 1.19.2 | 0x19 | 25 |
| 1.19.3 | 0x18 | 24 |
| 1.19.4 - 1.20.1 | 0x19 | 25 |
| 1.20.2 | 0x1B | 27 |
| 1.20.3 - 1.20.4 | 0x1C | 28 |
| 1.20.5 - 1.21.1 | 0x1F | 31 |
| 1.21.2 - 1.21.5 | 0x21 | 33 |
| 1.21.6 | 0x22 | 34 |
Description:
Used to visually update whether boat paddles are turning. The server will update the Boat entity metadata to match the values here.
Packet Fields:
| Type | Description |
|---|---|
BOOLEAN |
Left paddle turning |
BOOLEAN |
Right paddle turning |
BOOLEAN |
Left paddle turning |
BOOLEAN |
Right paddle turning |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.13 | 0x15 | 21 |
| 1.14 - 1.15 | 0x17 | 23 |
| 1.16 - 1.16.2 | 0x18 | 24 |
| 1.17 - 1.18 | 0x17 | 23 |
| 1.19 - 1.19.0 | 0x19 | 25 |
| 1.19.1 - 1.19.2 | 0x1A | 26 |
| 1.19.3 | 0x19 | 25 |
| 1.19.4 - 1.20.1 | 0x1A | 26 |
| 1.20.2 | 0x1C | 28 |
| 1.20.3 - 1.20.4 | 0x1D | 29 |
| 1.20.5 - 1.21.1 | 0x20 | 32 |
| 1.21.2 | 0x22 | 34 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.4 - 1.21.5 | 0x22 | 34 |
| 1.21.6 | 0x23 | 35 |
Description:
Used for pick block functionality (middle click) on blocks to retrieve items from the inventory in survival or creative mode or create them in creative mode. See Controls#Pick_Block for more information.
Packet Fields:
| Type | Description |
|---|---|
POSITION |
Location: The location of the block. |
BOOLEAN |
Include Data: Used to tell the server to include block data in the new stack, works only if in creative mode. |
POSITION |
Location: The location of the block. |
BOOLEAN |
Include Data: Used to tell the server to include block data in the new stack, works only if in creative mode. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.4 - 1.21.5 | 0x23 | 35 |
| 1.21.6 | 0x24 | 36 |
Description:
Used for pick block functionality (middle click) on entities to retrieve items from the inventory in survival or creative mode or create them in creative mode. See Controls#Pick_Block for more information.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID: The ID of the entity to pick. |
BOOLEAN |
Include Data: Unused by the vanilla server. |
VAR_INT |
Entity ID: The ID of the entity to pick. |
BOOLEAN |
Include Data: Unused by the vanilla server. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.20.2 | 0x1D | 29 |
| 1.20.3 - 1.20.4 | 0x1E | 30 |
| 1.20.5 - 1.21.1 | 0x21 | 33 |
| 1.21.2 - 1.21.3 | 0x23 | 35 |
| 1.21.4 - 1.21.5 | 0x24 | 36 |
| 1.21.6 | 0x25 | 37 |
Packet Fields:
| Type | Description |
|---|---|
LONG |
Timestamp: May be any number, but vanilla clients will always use the timestamp in milliseconds. |
LONG |
Payload: May be any number. vanilla clients use a system-dependent time value, which is counted in milliseconds. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.12.1 | 0x12 | 18 |
| 1.13 | 0x16 | 22 |
| 1.14 - 1.15 | 0x18 | 24 |
| 1.16 - 1.16.2 | 0x19 | 25 |
| 1.17 - 1.18 | 0x18 | 24 |
| 1.19 - 1.19.0 | 0x1A | 26 |
| 1.19.1 - 1.19.2 | 0x1B | 27 |
| 1.19.3 | 0x1A | 26 |
| 1.19.4 - 1.20.1 | 0x1B | 27 |
| 1.20.2 | 0x1E | 30 |
| 1.20.3 - 1.20.4 | 0x1F | 31 |
| 1.20.5 - 1.21.1 | 0x22 | 34 |
| 1.21.2 - 1.21.3 | 0x24 | 36 |
| 1.21.4 - 1.21.5 | 0x25 | 37 |
| 1.21.6 | 0x26 | 38 |
Description:
This packet is sent when a player clicks a recipe in the crafting book that is craftable (white border).
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Window ID |
VAR_INT |
Recipe ID: ID of recipe previously defined in Recipe Book Add. |
BOOLEAN |
Make all: Affects the amount of items processed; true if shift is down when clicked. |
VAR_INT |
Window ID |
VAR_INT |
Recipe ID: ID of recipe previously defined in Recipe Book Add. |
BOOLEAN |
Make all: Affects the amount of items processed; true if shift is down when clicked. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x13 | 19 |
| 1.9 - 1.11 | 0x12 | 18 |
| 1.12 - 1.12.1 | 0x13 | 19 |
| 1.13 | 0x17 | 23 |
| 1.14 - 1.15 | 0x19 | 25 |
| 1.16 - 1.16.2 | 0x1A | 26 |
| 1.17 - 1.18 | 0x19 | 25 |
| 1.19 - 1.19.0 | 0x1B | 27 |
| 1.19.1 - 1.19.2 | 0x1C | 28 |
| 1.19.3 | 0x1B | 27 |
| 1.19.4 - 1.20.1 | 0x1C | 28 |
| 1.20.2 | 0x1F | 31 |
| 1.20.3 - 1.20.4 | 0x20 | 32 |
| 1.20.5 - 1.21.1 | 0x23 | 35 |
| 1.21.2 - 1.21.3 | 0x25 | 37 |
| 1.21.4 - 1.21.5 | 0x26 | 38 |
| 1.21.6 | 0x27 | 39 |
Description:
The vanilla client sends this packet when the player starts/stops flying with the Flags parameter changed accordingly.
Packet Fields:
| Type | Description |
|---|---|
BYTE |
Flags: Bit mask. 0x02: is flying. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x7 | 7 |
| 1.9 - 1.11 | 0x13 | 19 |
| 1.12 - 1.12.1 | 0x14 | 20 |
| 1.13 | 0x18 | 24 |
| 1.14 - 1.15 | 0x1A | 26 |
| 1.16 - 1.16.2 | 0x1B | 27 |
| 1.17 - 1.18 | 0x1A | 26 |
| 1.19 - 1.19.0 | 0x1C | 28 |
| 1.19.1 - 1.19.2 | 0x1D | 29 |
| 1.19.3 | 0x1C | 28 |
| 1.19.4 - 1.20.1 | 0x1D | 29 |
| 1.20.2 | 0x20 | 32 |
| 1.20.3 - 1.20.4 | 0x21 | 33 |
| 1.20.5 - 1.21.1 | 0x24 | 36 |
| 1.21.2 - 1.21.3 | 0x26 | 38 |
| 1.21.4 - 1.21.5 | 0x27 | 39 |
| 1.21.6 | 0x28 | 40 |
Description:
Sent when the player mines a block. A vanilla server only accepts digging packets with coordinates within a 6-unit radius between the center of the block and the player's eyes.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Status: The action the player is taking against the block (see below). |
POSITION |
Location: Block position. |
BYTE |
Face: The face being hit (see below). |
VAR_INT |
Sequence: Block change sequence number (see #Acknowledge Block Change). |
VAR_INT |
Status: The action the player is taking against the block (see below). |
POSITION |
Location: Block position. |
BYTE |
Face: The face being hit (see below). |
VAR_INT |
Sequence: Block change sequence number (see #Acknowledge Block Change). |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0xB | 11 |
| 1.9 - 1.11 | 0x14 | 20 |
| 1.12 - 1.12.1 | 0x15 | 21 |
| 1.13 | 0x19 | 25 |
| 1.14 - 1.15 | 0x1B | 27 |
| 1.16 - 1.16.2 | 0x1C | 28 |
| 1.17 - 1.18 | 0x1B | 27 |
| 1.19 - 1.19.0 | 0x1D | 29 |
| 1.19.1 - 1.19.2 | 0x1E | 30 |
| 1.19.3 | 0x1D | 29 |
| 1.19.4 - 1.20.1 | 0x1E | 30 |
| 1.20.2 | 0x21 | 33 |
| 1.20.3 - 1.20.4 | 0x22 | 34 |
| 1.20.5 - 1.21.1 | 0x25 | 37 |
| 1.21.2 - 1.21.3 | 0x27 | 39 |
| 1.21.4 - 1.21.5 | 0x28 | 40 |
| 1.21.6 | 0x29 | 41 |
Description:
Sent by the client to indicate that it has performed certain actions: sprinting, exiting a bed, jumping with a horse, and opening a horse's inventory while riding it.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID: Player ID (ignored by the vanilla server) |
VAR_INT |
Action ID: The ID of the action, see below. |
VAR_INT |
Jump Boost: 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. |
VAR_INT |
Entity ID: Player ID (ignored by the vanilla server) |
VAR_INT |
Action ID: The ID of the action, see below. |
VAR_INT |
Jump Boost: 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. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0xC | 12 |
| 1.9 - 1.11 | 0x15 | 21 |
| 1.12 - 1.12.1 | 0x16 | 22 |
| 1.13 | 0x1A | 26 |
| 1.14 - 1.15 | 0x1C | 28 |
| 1.16 - 1.16.2 | 0x1D | 29 |
| 1.17 - 1.18 | 0x1C | 28 |
| 1.19 - 1.19.0 | 0x1E | 30 |
| 1.19.1 - 1.19.2 | 0x1F | 31 |
| 1.19.3 | 0x1E | 30 |
| 1.19.4 - 1.20.1 | 0x1F | 31 |
| 1.20.2 | 0x22 | 34 |
| 1.20.3 - 1.20.4 | 0x23 | 35 |
| 1.20.5 - 1.21.1 | 0x26 | 38 |
| 1.21.2 - 1.21.3 | 0x28 | 40 |
| 1.21.4 - 1.21.5 | 0x29 | 41 |
| 1.21.6 | 0x2A | 42 |
Description:
Sent whenever the player presses or releases certain keys. The flags correspond directly to the states of their corresponding keys—the Sprint flag does not depend on whether the player is actually able to sprint at the moment, etc. Used by the vanilla server for minecart controls, player inputs in the entity_properties predicate, and sneaking (sprinting is still controlled by Player Command).
Packet Fields:
| Type | Description |
|---|---|
BYTE |
Flags: Bit mask; see below |
BYTE |
Flags: Bit mask; see below |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.4 - 1.21.5 | 0x2A | 42 |
| 1.21.6 | 0x2B | 43 |
Description:
Sent by the client to indicate that it is ready to start simulating the player. The vanilla client sends this when the "Loading terrain..." screen is closed. (But see the caveat below.) The vanilla client skips ticking the player entity until the tick on which this packet is sent (the first tick will happen between this packet and the next Client Tick End). Other entities and objects will still be ticked. Once 60 ticks have elapsed since the last Login or Respawn packet, the vanilla client will start ticking the player and skip sending this packet completely, even after the usual conditions for it have been met. This can happen even before the "Start waiting for level chunks" Game Event is received. The loading screen is not affected in any way by this timer (except indirectly by the player falling into the void after ticking has started). Likewise, the vanilla server will assume that the client has loaded if it takes longer than 60 server ticks to send this packet. A more robust way to detect this condition is to count the number of Client Tick End packets sent by the client. The first player tick will occur after 60 Client Tick End packets have been sent. To determine when this counter should be restarted following a respawn, the Respawn packet can be sent in a bundle together with a Ping packet.
Packet Fields:
| Type | Description |
|---|---|
SERVER |
Play: no fields |
SERVER |
Play: no fields |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.17 - 1.18 | 0x1D | 29 |
| 1.19 - 1.19.0 | 0x1F | 31 |
| 1.19.1 - 1.19.2 | 0x20 | 32 |
| 1.19.3 | 0x1F | 31 |
| 1.19.4 - 1.20.1 | 0x20 | 32 |
| 1.20.2 | 0x23 | 35 |
| 1.20.3 - 1.20.4 | 0x24 | 36 |
| 1.20.5 - 1.21.1 | 0x27 | 39 |
| 1.21.2 - 1.21.3 | 0x29 | 41 |
| 1.21.4 - 1.21.5 | 0x2B | 43 |
| 1.21.6 | 0x2C | 44 |
Description:
Response to the clientbound packet (Ping) with the same id.
Packet Fields:
| Type | Description |
|---|---|
INT |
ID |
INT |
ID: id is the same as the ping packet |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.16.2 - 1.18 | 0x1E | 30 |
| 1.19 - 1.19.0 | 0x20 | 32 |
| 1.19.1 - 1.20.1 | 0x21 | 33 |
| 1.20.2 | 0x24 | 36 |
| 1.20.3 - 1.20.4 | 0x25 | 37 |
| 1.20.5 - 1.21.1 | 0x28 | 40 |
| 1.21.2 - 1.21.3 | 0x2A | 42 |
| 1.21.4 - 1.21.5 | 0x2C | 44 |
| 1.21.6 | 0x2D | 45 |
Description:
Replaces Recipe Book Data, type 1.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Book ID: 0: crafting, 1: furnace, 2: blast furnace, 3: smoker. |
BOOLEAN |
Book Open |
BOOLEAN |
Filter Active |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.16.2 - 1.18 | 0x1F | 31 |
| 1.19 - 1.19.0 | 0x21 | 33 |
| 1.19.1 - 1.20.1 | 0x22 | 34 |
| 1.20.2 | 0x25 | 37 |
| 1.20.3 - 1.20.4 | 0x26 | 38 |
| 1.20.5 - 1.21.1 | 0x29 | 41 |
| 1.21.2 - 1.21.3 | 0x2B | 43 |
| 1.21.4 - 1.21.5 | 0x2D | 45 |
| 1.21.6 | 0x2E | 46 |
Description:
Sent when recipe is first seen in recipe book. Replaces Recipe Book Data, type 0.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Recipe ID: ID of recipe previously defined in Recipe Book Add. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.12 - 1.12.1 | 0x17 | 23 |
| 1.13 | 0x1B | 27 |
| 1.14 - 1.15 | 0x1D | 29 |
| 1.16 | 0x1E | 30 |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.13 | 0x1C | 28 |
| 1.14 - 1.15 | 0x1E | 30 |
| 1.16 - 1.16.1 | 0x1F | 31 |
| 1.16.2 - 1.18 | 0x20 | 32 |
| 1.19 - 1.19.0 | 0x22 | 34 |
| 1.19.1 - 1.20.1 | 0x23 | 35 |
| 1.20.2 | 0x26 | 38 |
| 1.20.3 - 1.20.4 | 0x27 | 39 |
| 1.20.5 - 1.21.1 | 0x2A | 42 |
| 1.21.2 - 1.21.3 | 0x2C | 44 |
| 1.21.4 - 1.21.5 | 0x2E | 46 |
| 1.21.6 | 0x2F | 47 |
Description:
Sent as a player is renaming an item in an anvil (each keypress in the anvil UI sends a new Rename Item packet). If the new name is empty, then the item loses its custom name (this is different from setting the custom name to the normal name of the item). The item name may be no longer than 50 characters, and if it is longer than that, then the rename is silently ignored.
Packet Fields:
| Type | Description |
|---|---|
STRING |
Item name: The new name of the item. |
STRING |
Item name: The new name of the item. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x19 | 25 |
| 1.9 - 1.11 | 0x16 | 22 |
| 1.12 - 1.12.1 | 0x18 | 24 |
| 1.13 | 0x1D | 29 |
| 1.14 - 1.15 | 0x1F | 31 |
| 1.16 - 1.16.1 | 0x20 | 32 |
| 1.16.2 - 1.18 | 0x21 | 33 |
| 1.19 - 1.19.0 | 0x23 | 35 |
| 1.19.1 - 1.20.1 | 0x24 | 36 |
| 1.20.2 | 0x27 | 39 |
| 1.20.3 - 1.20.4 | 0x28 | 40 |
| 1.20.5 - 1.21.1 | 0x2B | 43 |
| 1.21.2 - 1.21.3 | 0x2D | 45 |
| 1.21.4 - 1.21.5 | 0x2F | 47 |
| 1.21.6 | 0x30 | 48 |
Packet Fields:
| Type | Description |
|---|---|
UUID |
UUID: The unique identifier of the resource pack received in the Add Resource Pack (configuration) request. |
VAR_INT |
Result: Result ID (see below). |
UUID |
UUID: The unique identifier of the resource pack received in the Add Resource Pack (play) request. |
VAR_INT |
Result: Result ID (see below). |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.12 - 1.12.1 | 0x19 | 25 |
| 1.13 | 0x1E | 30 |
| 1.14 - 1.15 | 0x20 | 32 |
| 1.16 - 1.16.1 | 0x21 | 33 |
| 1.16.2 - 1.18 | 0x22 | 34 |
| 1.19 - 1.19.0 | 0x24 | 36 |
| 1.19.1 - 1.20.1 | 0x25 | 37 |
| 1.20.2 | 0x28 | 40 |
| 1.20.3 - 1.20.4 | 0x29 | 41 |
| 1.20.5 - 1.21.1 | 0x2C | 44 |
| 1.21.2 - 1.21.3 | 0x2E | 46 |
| 1.21.4 - 1.21.5 | 0x30 | 48 |
| 1.21.6 | 0x31 | 49 |
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Action: 0: Opened tab, 1: Closed screen. |
STRING |
Tab ID: Only present if action is Opened tab. |
VAR_INT |
Action: 0: Opened tab, 1: Closed screen. |
STRING |
Tab ID: Only present if action is Opened tab. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.13 | 0x1F | 31 |
| 1.14 - 1.15 | 0x21 | 33 |
| 1.16 - 1.16.1 | 0x22 | 34 |
| 1.16.2 - 1.18 | 0x23 | 35 |
| 1.19 - 1.19.0 | 0x25 | 37 |
| 1.19.1 - 1.20.1 | 0x26 | 38 |
| 1.20.2 | 0x29 | 41 |
| 1.20.3 - 1.20.4 | 0x2A | 42 |
| 1.20.5 - 1.21.1 | 0x2D | 45 |
| 1.21.2 - 1.21.3 | 0x2F | 47 |
| 1.21.4 - 1.21.5 | 0x31 | 49 |
| 1.21.6 | 0x32 | 50 |
Description:
When a player selects a specific trade offered by a villager NPC.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Selected slot: The selected slot in the player's current (trading) inventory. |
VAR_INT |
Selected slot: The selected slot in the player's current (trading) inventory. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.13 | 0x20 | 32 |
| 1.14 - 1.15 | 0x22 | 34 |
| 1.16 - 1.16.1 | 0x23 | 35 |
| 1.16.2 - 1.18 | 0x24 | 36 |
| 1.19 - 1.19.0 | 0x26 | 38 |
| 1.19.1 - 1.20.1 | 0x27 | 39 |
| 1.20.2 | 0x2A | 42 |
| 1.20.3 - 1.20.4 | 0x2B | 43 |
| 1.20.5 - 1.21.1 | 0x2E | 46 |
| 1.21.2 - 1.21.3 | 0x30 | 48 |
| 1.21.4 - 1.21.5 | 0x32 | 50 |
| 1.21.6 | 0x33 | 51 |
Description:
Changes the effect of the current beacon.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Primary Effect: A Potion ID. |
VAR_INT |
Secondary Effect: A Potion ID. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x9 | 9 |
| 1.9 - 1.11 | 0x17 | 23 |
| 1.12 - 1.12.1 | 0x1A | 26 |
| 1.13 | 0x21 | 33 |
| 1.14 - 1.15 | 0x23 | 35 |
| 1.16 - 1.16.1 | 0x24 | 36 |
| 1.16.2 - 1.18 | 0x25 | 37 |
| 1.19 - 1.19.0 | 0x27 | 39 |
| 1.19.1 - 1.20.1 | 0x28 | 40 |
| 1.20.2 | 0x2B | 43 |
| 1.20.3 - 1.20.4 | 0x2C | 44 |
| 1.20.5 - 1.21.1 | 0x2F | 47 |
| 1.21.2 - 1.21.3 | 0x31 | 49 |
| 1.21.4 - 1.21.5 | 0x33 | 51 |
| 1.21.6 | 0x34 | 52 |
Description:
Sent when the player changes the slot selection.
Packet Fields:
| Type | Description |
|---|---|
SHORT |
Slot: The slot which the player has selected (0–8). |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.13 | 0x22 | 34 |
| 1.14 - 1.15 | 0x24 | 36 |
| 1.16 - 1.16.1 | 0x25 | 37 |
| 1.16.2 - 1.18 | 0x26 | 38 |
| 1.19 - 1.19.0 | 0x28 | 40 |
| 1.19.1 - 1.20.1 | 0x29 | 41 |
| 1.20.2 | 0x2C | 44 |
| 1.20.3 - 1.20.4 | 0x2D | 45 |
| 1.20.5 - 1.21.1 | 0x30 | 48 |
| 1.21.2 - 1.21.3 | 0x32 | 50 |
| 1.21.4 - 1.21.5 | 0x34 | 52 |
| 1.21.6 | 0x35 | 53 |
Packet Fields:
| Type | Description |
|---|---|
POSITION |
Location |
STRING |
Command |
VAR_INT |
Mode: 0: chain, 1: repeating, 2: impulse. |
BYTE |
Flags: 0x01: Track Output (if false, the output of the previous command will not be stored within the command block); 0x02: Is conditional; 0x04: Automatic. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.13 | 0x23 | 35 |
| 1.14 - 1.15 | 0x25 | 37 |
| 1.16 - 1.16.1 | 0x26 | 38 |
| 1.16.2 - 1.18 | 0x27 | 39 |
| 1.19 - 1.19.0 | 0x29 | 41 |
| 1.19.1 - 1.20.1 | 0x2A | 42 |
| 1.20.2 | 0x2D | 45 |
| 1.20.3 - 1.20.4 | 0x2E | 46 |
| 1.20.5 - 1.21.1 | 0x31 | 49 |
| 1.21.2 - 1.21.3 | 0x33 | 51 |
| 1.21.4 - 1.21.5 | 0x35 | 53 |
| 1.21.6 | 0x36 | 54 |
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Entity ID |
STRING |
Command |
BOOLEAN |
Track Output: If false, the output of the previous command will not be stored within the command block. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x10 | 16 |
| 1.9 - 1.11 | 0x18 | 24 |
| 1.12 - 1.12.1 | 0x1B | 27 |
| 1.13 | 0x24 | 36 |
| 1.14 - 1.15 | 0x26 | 38 |
| 1.16 - 1.16.1 | 0x27 | 39 |
| 1.16.2 - 1.18 | 0x28 | 40 |
| 1.19 - 1.19.0 | 0x2A | 42 |
| 1.19.1 - 1.20.1 | 0x2B | 43 |
| 1.20.2 | 0x2E | 46 |
| 1.20.3 - 1.20.4 | 0x2F | 47 |
| 1.20.5 - 1.21.1 | 0x32 | 50 |
| 1.21.2 - 1.21.3 | 0x34 | 52 |
| 1.21.4 - 1.21.5 | 0x36 | 54 |
| 1.21.6 | 0x37 | 55 |
Description:
While the user is in the standard inventory (i.e., not a crafting bench) in Creative mode, the player will send this packet. Clicking in the creative inventory menu is quite different from non-creative inventory management. Picking up an item with the mouse actually deletes the item from the server, and placing an item into a slot or dropping it out of the inventory actually tells the server to create the item from scratch. (This can be verified by clicking an item that you don't mind deleting, then severing the connection to the server; the item will be nowhere to be found when you log back in.) As a result of this implementation strategy, the "Destroy Item" slot is just a client-side implementation detail that means "I don't intend to recreate this item.". Additionally, the long listings of items (by category, etc.) are a client-side interface for choosing which item to create. Picking up an item from such listings sends no packets to the server; only when you put it somewhere does it tell the server to create the item in that location. This action can be described as "set inventory slot". Picking up an item sets the slot to item ID -1. Placing an item into an inventory slot sets the slot to the specified item. Dropping an item (by clicking outside the window) effectively sets slot -1 to the specified item, which causes the server to spawn the item entity, etc.. All other inventory slots are numbered the same as the non-creative inventory (including slots for the 2x2 crafting menu, even though they aren't visible in the vanilla client).
Packet Fields:
| Type | Description |
|---|---|
SHORT |
Slot: Inventory slot. |
SLOT |
Clicked Item |
SHORT |
Slot: Inventory slot. |
SLOT |
Clicked Item |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.14 - 1.15 | 0x27 | 39 |
| 1.16 - 1.16.1 | 0x28 | 40 |
| 1.16.2 - 1.18 | 0x29 | 41 |
| 1.19 - 1.19.0 | 0x2B | 43 |
| 1.19.1 - 1.20.1 | 0x2C | 44 |
| 1.20.2 | 0x2F | 47 |
| 1.20.3 - 1.20.4 | 0x30 | 48 |
| 1.20.5 - 1.21.1 | 0x33 | 51 |
| 1.21.2 - 1.21.3 | 0x35 | 53 |
| 1.21.4 - 1.21.5 | 0x37 | 55 |
| 1.21.6 | 0x38 | 56 |
Description:
Sent when Done is pressed on the Jigsaw Block interface.
Packet Fields:
| Type | Description |
|---|---|
POSITION |
Location: Block entity location |
STRING |
Name |
STRING |
Target |
STRING |
Pool |
STRING |
Final state: "Turns into" on the GUI, final_state in NBT. |
STRING |
Joint type: rollable if the attached piece can be rotated, else aligned. |
VAR_INT |
Selection priority |
VAR_INT |
Placement priority |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.13 | 0x25 | 37 |
| 1.14 - 1.15 | 0x28 | 40 |
| 1.16 - 1.16.1 | 0x29 | 41 |
| 1.16.2 - 1.18 | 0x2A | 42 |
| 1.19 - 1.19.0 | 0x2C | 44 |
| 1.19.1 - 1.20.1 | 0x2D | 45 |
| 1.20.2 | 0x30 | 48 |
| 1.20.3 - 1.20.4 | 0x31 | 49 |
| 1.20.5 - 1.21.1 | 0x34 | 52 |
| 1.21.2 - 1.21.3 | 0x36 | 54 |
| 1.21.4 - 1.21.5 | 0x38 | 56 |
| 1.21.6 | 0x39 | 57 |
Packet Fields:
| Type | Description |
|---|---|
PLAY |
protocol:0x39resource:set_structure_block: Server |
POSITION |
Location: Block entity location. |
VAR_INT |
Action: An additional action to perform beyond simply saving the given data; see below. |
VAR_INT |
Mode: One of SAVE (0), LOAD (1), CORNER (2), DATA (3). |
STRING |
Name |
BYTE |
Offset X: Between -48 and 48. |
BYTE |
Offset Y: Between -48 and 48. |
BYTE |
Offset Z: Between -48 and 48. |
BYTE |
Size X: Between 0 and 48. |
BYTE |
Size Y: Between 0 and 48. |
BYTE |
Size Z: Between 0 and 48. |
VAR_INT |
Mirror: One of NONE (0), LEFT_RIGHT (1), FRONT_BACK (2). |
VAR_INT |
Rotation: One of NONE (0), CLOCKWISE_90 (1), CLOCKWISE_180 (2), COUNTERCLOCKWISE_90 (3). |
STRING |
Metadata |
FLOAT |
Integrity: Between 0 and 1. |
VAR_LONG |
Seed |
BYTE |
Flags: 0x01: Ignore entities; 0x02: Show air; 0x04: Show bounding box; 0x08: Strict placement. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.5 | 0x39 | 57 |
| 1.21.6 | 0x3A | 58 |
Description:
Updates the value of the Test Block at the given position.
Packet Fields:
| Type | Description |
|---|---|
POSITION |
Position |
VAR_INT |
Mode: 0: start, 1: log, 2: fail, 3: accept |
STRING |
Message |
POSITION |
Position |
VAR_INT |
Mode: 0: start, 1: log, 2: fail, 3: accept |
STRING |
Message |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x12 | 18 |
| 1.9 - 1.11 | 0x19 | 25 |
| 1.12 - 1.12.1 | 0x1C | 28 |
| 1.13 | 0x26 | 38 |
| 1.14 - 1.15 | 0x29 | 41 |
| 1.16 - 1.16.1 | 0x2A | 42 |
| 1.16.2 - 1.18 | 0x2B | 43 |
| 1.19 - 1.19.0 | 0x2D | 45 |
| 1.19.1 - 1.20.1 | 0x2E | 46 |
| 1.20.2 | 0x31 | 49 |
| 1.20.3 - 1.20.4 | 0x32 | 50 |
| 1.20.5 - 1.21.1 | 0x35 | 53 |
| 1.21.2 - 1.21.3 | 0x37 | 55 |
| 1.21.4 | 0x39 | 57 |
| 1.21.5 | 0x3A | 58 |
| 1.21.6 | 0x3B | 59 |
Description:
This message is sent from the client to the server when the “Done” button is pushed after placing a sign. The server only accepts this packet after Open Sign Editor, otherwise this packet is silently ignored.
Packet Fields:
| Type | Description |
|---|---|
POSITION |
Location: Block Coordinates. |
BOOLEAN |
Is Front Text: Whether the updated text is in front or on the back of the sign |
STRING |
Line 1: First line of text in the sign. |
STRING |
Line 2: Second line of text in the sign. |
STRING |
Line 3: Third line of text in the sign. |
STRING |
Line 4: Fourth line of text in the sign. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0xA | 10 |
| 1.9 - 1.11 | 0x1A | 26 |
| 1.12 - 1.12.1 | 0x1D | 29 |
| 1.13 | 0x27 | 39 |
| 1.14 - 1.15 | 0x2A | 42 |
| 1.16 - 1.16.1 | 0x2B | 43 |
| 1.16.2 - 1.18 | 0x2C | 44 |
| 1.19 - 1.19.0 | 0x2E | 46 |
| 1.19.1 - 1.20.1 | 0x2F | 47 |
| 1.20.2 | 0x32 | 50 |
| 1.20.3 - 1.20.4 | 0x33 | 51 |
| 1.20.5 - 1.21.1 | 0x36 | 54 |
| 1.21.2 - 1.21.3 | 0x38 | 56 |
| 1.21.4 | 0x3A | 58 |
| 1.21.5 | 0x3B | 59 |
| 1.21.6 | 0x3C | 60 |
Description:
Sent when the player's arm swings.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Hand: Hand used for the animation. 0: main hand, 1: off hand. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x18 | 24 |
| 1.9 - 1.11 | 0x1B | 27 |
| 1.12 - 1.12.1 | 0x1E | 30 |
| 1.13 | 0x28 | 40 |
| 1.14 - 1.15 | 0x2B | 43 |
| 1.16 - 1.16.1 | 0x2C | 44 |
| 1.16.2 - 1.18 | 0x2D | 45 |
| 1.19 - 1.19.0 | 0x2F | 47 |
| 1.19.1 - 1.20.1 | 0x30 | 48 |
| 1.20.2 | 0x33 | 51 |
| 1.20.3 - 1.20.4 | 0x34 | 52 |
| 1.20.5 - 1.21.1 | 0x37 | 55 |
| 1.21.2 - 1.21.3 | 0x39 | 57 |
| 1.21.4 | 0x3B | 59 |
| 1.21.5 | 0x3C | 60 |
| 1.21.6 | 0x3D | 61 |
Description:
Teleports the player to the given entity. The player must be in spectator mode. The vanilla client only uses this to teleport to players, but it appears to accept any type of entity. The entity does not need to be in the same dimension as the player; if necessary, the player will be respawned in the right world. If the given entity cannot be found (or isn't loaded), this packet will be ignored.
Packet Fields:
| Type | Description |
|---|---|
UUID |
Target Player: UUID of the player to teleport to (can also be an entity UUID). |
UUID |
Target Player: UUID of the player to teleport to (can also be an entity UUID). |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.21.5 | 0x3D | 61 |
| 1.21.6 | 0x3E | 62 |
Description:
Tries to perform an action the Test Instance Block at the given position.
Packet Fields:
| Type | Description |
|---|---|
POSITION |
Position |
VAR_INT |
Action: 0: init, 1: query, 2: set, 3: reset, 4: save, 5: export, 6: run. |
STRING |
Test: ID in the minecraft:test_instance registry. |
VAR_INT |
Size X |
VAR_INT |
Size Y |
VAR_INT |
Size Z |
VAR_INT |
Rotation: 0: none, 1: clockwise 90°, 2: clockwise 180°, 3: counter-clockwise 90°. |
BOOLEAN |
Ignore Entities |
VAR_INT |
Status: 0: cleared, 1: running, 2: finished. |
PREFIXED_OPTIONAL_TEXT_COMPONENT |
Error Message |
POSITION |
Position |
VAR_INT |
Action: 0: init, 1: query, 2: set, 3: reset, 4: save, 5: export, 6: run. |
STRING |
Test: ID in the minecraft:test_instance registry. |
VAR_INT |
Size X |
VAR_INT |
Size Y |
VAR_INT |
Size Z |
VAR_INT |
Rotation: 0: none, 1: clockwise 90°, 2: clockwise 180°, 3: counter-clockwise 90°. |
BOOLEAN |
Ignore Entities |
VAR_INT |
Status: 0: cleared, 1: running, 2: finished. |
PREFIXED_OPTIONAL_TEXT_COMPONENT |
Error Message |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.9 - 1.11 | 0x1D | 29 |
| 1.12 - 1.12.1 | 0x20 | 32 |
| 1.13 | 0x2A | 42 |
| 1.14 - 1.15 | 0x2D | 45 |
| 1.16 - 1.16.1 | 0x2E | 46 |
| 1.16.2 - 1.18 | 0x2F | 47 |
| 1.19 - 1.19.0 | 0x31 | 49 |
| 1.19.1 - 1.20.1 | 0x32 | 50 |
| 1.20.2 | 0x35 | 53 |
| 1.20.3 - 1.20.4 | 0x36 | 54 |
| 1.20.5 - 1.21.1 | 0x39 | 57 |
| 1.21.2 - 1.21.3 | 0x3B | 59 |
| 1.21.4 | 0x3D | 61 |
| 1.21.5 | 0x3F | 63 |
| 1.21.6 | 0x40 | 64 |
Description:
Sent when pressing the Use Item key (default: right click) with an item in hand.
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Hand: Hand used for the animation. 0: main hand, 1: off hand. |
VAR_INT |
Sequence: Block change sequence number (see #Acknowledge Block Change). |
FLOAT |
Yaw: Player head rotation around the Y-Axis. |
FLOAT |
Pitch: Player head rotation around the X-Axis. |
VAR_INT |
Hand: Hand used for the animation. 0: main hand, 1: off hand. |
VAR_INT |
Sequence: Block change sequence number (see #Acknowledge Block Change). |
FLOAT |
Yaw: Player head rotation around the Y-Axis. |
FLOAT |
Pitch: Player head rotation around the X-Axis. |
| Version Range | ID (hex) | ID (dec) |
|---|---|---|
| 1.8 | 0x8 | 8 |
| 1.9 - 1.11 | 0x1C | 28 |
| 1.12 - 1.12.1 | 0x1F | 31 |
| 1.13 | 0x29 | 41 |
| 1.14 - 1.15 | 0x2C | 44 |
| 1.16 - 1.16.1 | 0x2D | 45 |
| 1.16.2 - 1.18 | 0x2E | 46 |
| 1.19 - 1.19.0 | 0x30 | 48 |
| 1.19.1 - 1.20.1 | 0x31 | 49 |
| 1.20.2 | 0x34 | 52 |
| 1.20.3 - 1.20.4 | 0x35 | 53 |
| 1.20.5 - 1.21.1 | 0x38 | 56 |
| 1.21.2 - 1.21.3 | 0x3A | 58 |
| 1.21.4 | 0x3C | 60 |
| 1.21.5 | 0x3E | 62 |
| 1.21.6 | 0x3F | 63 |
Packet Fields:
| Type | Description |
|---|---|
VAR_INT |
Hand: The hand from which the block is placed; 0: main hand, 1: off hand. |
POSITION |
Location: Block position. |
VAR_INT |
Face: The face on which the block is placed (as documented at Player Action). |
FLOAT |
Cursor Position X: The position of the crosshair on the block, from 0 to 1 increasing from west to east. |
FLOAT |
Cursor Position Y: The position of the crosshair on the block, from 0 to 1 increasing from bottom to top. |
FLOAT |
Cursor Position Z: The position of the crosshair on the block, from 0 to 1 increasing from north to south. |
BOOLEAN |
Inside block: True when the player's head is inside of a block. |
BOOLEAN |
World Border Hit: Seems to always be false, even when interacting with blocks around or outside the world border, or while the player is outside the border. |
VAR_INT |
Sequence: Block change sequence number (see #Acknowledge Block Change). |
VAR_INT |
Hand: The hand from which the block is placed; 0: main hand, 1: off hand. |
POSITION |
Location: Block position. |
VAR_INT |
Face: The face on which the block is placed (as documented at Player Action). |
FLOAT |
Cursor Position X: The position of the crosshair on the block, from 0 to 1 increasing from west to east. |
FLOAT |
Cursor Position Y: The position of the crosshair on the block, from 0 to 1 increasing from bottom to top. |
FLOAT |
Cursor Position Z: The position of the crosshair on the block, from 0 to 1 increasing from north to south. |
BOOLEAN |
Inside block: True when the player's head is inside of a block. |
BOOLEAN |
World Border Hit: Seems to always be false, even when interacting with blocks around or outside the world border, or while the player is outside the border. |
VAR_INT |
Sequence: Block change sequence number (see #Acknowledge Block Change). |
A packet ID is a unique numeric identifier assigned to each type of packet in the Minecraft protocol. Packet IDs change between Minecraft versions, so you need to use the correct ID for your target version.
- Search for the packet name using Ctrl+F (Cmd+F on Mac)
- Find the version range that includes your Minecraft version
- Use the packet ID shown in hexadecimal (0x...) or decimal format
- Clientbound packets: Sent from the Minecraft server to the client (e.g., player position updates, chat messages)
- Serverbound packets: Sent from the Minecraft client to the server (e.g., player movement, chat input)
Mojang modifies the Minecraft protocol with each update, adding new packets, removing old ones, and reorganizing packet IDs. This reference tracks these changes across all Minecraft versions.
No, this reference is specifically for Minecraft Java Edition. Bedrock Edition uses a completely different protocol.
- Minecraft Protocol Wiki - Official protocol documentation
- ViaVersion - Protocol version translation library
- Minecraft Version History - Version release dates
Minecraft packet ID, Minecraft protocol, packet reference, clientbound packets, serverbound packets, Minecraft version compatibility, protocol version, packet IDs by version, Minecraft Java Edition protocol, network protocol packets
Last updated: 2025-11-15 14:10:04 UTC
This reference is automatically generated from ViaVersion sources and Minecraft Wiki data.