Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x2D | Play | Client | Window ID | Unsigned Byte | A unique id number for the window to be displayed. Notchian server implementation is a counter, starting at 1. |
Window Type | String | The window type to use for display. See Inventory for a list. | |||
Window Title | Chat | The title of the window | |||
Number Of Slots | Unsigned Byte | Number of slots in the window (excluding the number of slots in the player inventory) | |||
Entity ID | Optional Int | EntityHorse's EID. Only sent when Window Type is “EntityHorse” |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x16 | Play | Client | Entity ID | VarInt | |
Yaw | Angle | New angle, not a delta | |||
Pitch | Angle | New angle, not a delta | |||
On Ground | Boolean |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x48 | Play | Client | URL | String | The URL to the resource pack. |
Hash | String | A 40 character hexadecimal and lowercase SHA-1 hash of the resource pack file. (must be lower case in order to work) If it's not a 40 character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth — but it will still treat it as a unique id |
Packet ID | State | Bound To | Field Name | Field Type | Notes | |
---|---|---|---|---|---|---|
0x44 | Play | Client | Action | VarInt | Determines the format of the rest of the packet | |
Action | Field Name | |||||
0: set size | Radius | Double | meters | |||
1: lerp size | Old Radius | Double | meters | |||
New Radius | Double | meters | ||||
Speed | VarLong | number of real-time ticks/seconds (?) until New Radius is reached. From experiments, it appears that Notchian server does not sync world border speed to game ticks, so it gets out of sync with server lag | ||||
2: set center | X | Double | ||||
Z | Double | |||||
3: initialize | X | Double | ||||
Z | Double | |||||
Old Radius | Double | |||||
New Radius | Double | |||||
Speed | VarLong | |||||
Portal Teleport Boundary | VarInt | Resulting coordinates from a portal teleport are limited to +-value. Usually 29999984. | ||||
Warning Time | VarInt | |||||
Warning Blocks | VarInt | |||||
4: set warning time | Warning Time | VarInt | unit? | |||
5: set warning blocks | Warning Blocks | VarInt |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x19 | Play | Client | Entity ID | VarInt | |
Head Yaw | Angle | New angle, not a delta |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0B | Play | Server | Entity ID | VarInt | Player ID |
Action ID | VarInt | The ID of the action, see below | |||
Action Parameter | VarInt | Only used by Horse Jump Boost, in which case it ranges from 0 to 100. In all other cases it is 0. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0F | Play | Client | Entity ID | VarInt | |
Type | Unsigned Byte | The type of mob. See Mobs | |||
X | Int | X position as a Fixed-Point number | |||
Y | Int | Y position as a Fixed-Point number | |||
Z | Int | Z position as a Fixed-Point number | |||
Yaw | Angle | ||||
Pitch | Angle | ||||
Head Pitch | Angle | ||||
Velocity X | Short | Same units as Entity Velocity | |||
Velocity Y | Short | Same units as Entity Velocity | |||
Velocity Z | Short | Same units as Entity Velocity | |||
Metadata | Metadata |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x05 | Play | Server | Yaw | Float | Absolute rotation on the X Axis, in degrees |
Pitch | Float | Absolute rotation on the Y Axis, in degrees | |||
On Ground | Boolean | True if the client is on the ground, False otherwise |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x40 | Play | Client | Reason | Chat | Displayed to the client when the connection terminates. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x41 | Play | Client | Difficulty | Unsigned Byte | 0: peaceful, 1: easy, 2: normal, 3: hard |
Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
---|---|---|---|---|---|---|---|
0x26 | Play | Client | Sky Light Sent | Boolean | Whether or not Chunk Data contains light nibble arrays. This is true in the Overworld, false in the End + Nether | ||
Chunk Column Count | VarInt | Number of elements in each of the following arrays | |||||
Chunk Meta | Chunk X | Array | Int | The X coordinate of the chunk | |||
Chunk Z | Int | The Z coordinate of the chunk | |||||
Primary Bit Mask | Unsigned Short | A bit mask which specifies which sections are not empty in this chunk | |||||
Chunk Data | Array of Chunk | Each chunk in this array corresponds to the data at the same position in Chunk Meta |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0E | Play | Server | Window ID | Unsigned Byte | The ID of the window which was clicked. 0 for player inventory. |
Slot | Short | The clicked slot number, see below | |||
Button | Byte | The button used in the click, see below | |||
Action Number | Short | A unique number for the action, implemented by Notchian as a counter, starting at 1. Used by the server to send back a Confirm Transaction. | |||
Mode | Byte Enum | Inventory operation mode, see below | |||
Clicked item | Slot | The clicked slot. Has to be empty (item ID = -1) for drop mode. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x14 | Play | Client | Entity ID | VarInt |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x00 | Play | Server | Keep Alive ID | VarInt |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x03 | Play | Server | On Ground | Boolean | True if the client is on the ground, false otherwise |
Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
---|---|---|---|---|---|---|---|
0x37 | Play | Client | Count | VarInt | Number of elements in the following array | ||
Statistic | Name | Array | String | https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0 | |||
Value | VarInt | The amount to set it to |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x1C | Play | Client | Entity ID | VarInt | |
Metadata | Metadata |
Packet ID | State | Bound To | Field Name | Field Type | Notes | |
---|---|---|---|---|---|---|
0x45 | Play | Client | Action | VarInt | ||
Action | Field Name | |||||
0: set title | Title Text | Chat | ||||
1: set subtitle | Subtitle Text | Chat | ||||
2: set times and display | Fade In | Int | ticks | |||
Stay | Int | ticks | ||||
Fade Out | Int | ticks | ||||
3: hide | no fields | no fields | ||||
4: reset | no fields | no fields |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x00 | Login | Client | Reason | Chat |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x00 | Login | Server | Name | String |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x01 | Play | Client | Entity ID | Int | The player's Entity ID (EID) |
Gamemode | Unsigned Byte | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. Bit 3 (0x8) is the hardcore flag. | |||
Dimension | Byte | -1: Nether, 0: Overworld, 1: End | |||
Difficulty | Unsigned Byte | 0: peaceful, 1: easy, 2: normal, 3: hard | |||
Max Players | Unsigned Byte | Used by the client to draw the player list | |||
Level Type | String | default, flat, largeBiomes, amplified, default_1_1 | |||
Reduced Debug Info | Boolean | If true, a Notchian client shows reduced information on the debug screen. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x08 | Play | Server | Location | Position | Block position |
Face | Byte | The face on which the block is placed (see above) | |||
Held Item | Slot | ||||
Cursor Position X | Byte | The position of the crosshair on the block | |||
Cursor Position Y | Byte | ||||
Cursor Position Z | Byte |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x32 | Play | Client | Window ID | Byte | The ID of the window that the action occurred in |
Action Number | Short | Every action that is to be accepted has a unique number. This field corresponds to that number. | |||
Accepted | Boolean | Whether the action was accepted |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0C | Play | Client | Entity ID | VarInt | Player's EID |
Player UUID | UUID | ||||
X | Int | Player X as a Fixed-Point number | |||
Y | Int | Player Y as a Fixed-Point number | |||
Z | Int | Player Z as a Fixed-Point number | |||
Yaw | Angle | ||||
Pitch | Angle | ||||
Current Item | Short | The item the player is currently holding. Note that this should be 0 for “no item”, unlike -1 used in other packets. | |||
Metadata | Metadata |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x18 | Play | Client | Entity ID | VarInt | |
X | Int | X position as a Fixed-Point number | |||
Y | Int | Y position as a Fixed-Point number | |||
Z | Int | Z position as a Fixed-Point number | |||
Yaw | Angle | New angle, not a delta | |||
Pitch | Angle | New angle, not a delta | |||
On Ground | Boolean |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x3C | Play | Client | Score Name | String | The name of the score to be updated or removed |
Action | Byte | 0 to create/update an item. 1 to remove an item. | |||
Objective Name | String | The name of the objective the score belongs to | |||
Value | Optional VarInt | The score to be displayed next to the entry. Only sent when Action does not equal 1. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0xFE | Handshaking | Server | Payload | Unsigned Byte | always 1 (0x01 ) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x42 | Play | Client | Event | VarInt | 0: enter combat, 1: end combat, 2: entity dead |
Duration | Optional VarInt | Only for end combat | |||
Player ID | Optional VarInt | Only for entity dead | |||
Entity ID | Optional Int | Only for end combat and entity dead | |||
Message | String | Only for entity dead |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x01 | Status | Server | Payload | Long | May be any number. Notchian clients use a system-dependent time value which is counted in milliseconds. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x01 | Login | Client | Server ID | String | Appears to be empty |
Public Key Length | VarInt | Length of Public Key | |||
Public Key | Byte Array | ||||
Verify Token Length | VarInt | Length of Verify Token | |||
Verify Token | Byte Array |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x00 | Status | Client | JSON Response | String | See Server List Ping#Response |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x09 | Play | Client | Slot | Byte | The slot which the player has selected (0–8) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x12 | Play | Client | Entity ID | VarInt | |
Velocity X | Short | Velocity on the X axis | |||
Velocity Y | Short | Velocity on the Y axis | |||
Velocity Z | Short | Velocity on the Z axis |
Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
---|---|---|---|---|---|---|---|
0x34 | Play | Client | Item Damage | VarInt | The damage value (map ID) of the map being modified | ||
Scale | Byte | ||||||
Icon Count | VarInt | Number of elements in the following array | |||||
Icon | Direction And Type | Array | Byte | 0xF0 = Direction, 0x0F = Type | |||
X | Byte | ||||||
Z | Byte | ||||||
Columns | Byte | Number of columns updated | |||||
Rows | Optional Byte | Only if Columns is more than 0; number of rows updated | |||||
X | Optional Byte | Only if Columns is more than 0; x offset of the westernmost column | |||||
Z | Optional Byte | Only if Columns is more than 0; z offset of the northernmost row | |||||
Length | Optional VarInt | Only if Columns is more than 0; length of the following array | |||||
Data | Optional Array of Unsigned Byte | Only if Columns is more than 0; see Map item format |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0E | Play | Client | Entity ID | VarInt | EID of the object |
Type | Byte | The type of object (see Entities#Objects) | |||
X | Int | X position as a Fixed-Point number | |||
Y | Int | Y position as a Fixed-Point number | |||
Z | Int | Z position as a Fixed-Point number | |||
Pitch | Angle | ||||
Yaw | Angle | ||||
Data | Int | Meaning dependent on the value of the Type field, see Object Data for details. | |||
Velocity X | Optional Short | Only sent if the Data field is nonzero. Same units as Entity Velocity. | |||
Velocity Y | Optional Short | Only sent if the Data field is nonzero. Same units as Entity Velocity. | |||
Velocity Z | Optional Short | Only sent if the Data field is nonzero. Same units as Entity Velocity. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x00 | Status | Server | no fields |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x31 | Play | Client | Window ID | Unsigned Byte | |
Property | Short | The property to be updated, see below | |||
Value | Short | The new value for the property, see below |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x06 | Play | Client | Health | Float | 0 or less = dead, 20 = full HP |
Food | VarInt | 0–20 | |||
Food Saturation | Float | Seems to vary from 0.0 to 5.0 in integer increments |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x15 | Play | Client | Entity ID | VarInt | |
Delta X | Byte | Change in X position as a Fixed-Point number | |||
Delta Y | Byte | Change in Y position as a Fixed-Point number | |||
Delta Z | Byte | Change in Z position as a Fixed-Point number | |||
On Ground | Boolean |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x43 | Play | Client | Camera ID | VarInt | ID of the entity to set the client's camera to |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x1F | Play | Client | Experience bar | Float | Between 0 and 1 |
Level | VarInt | ||||
Total Experience | VarInt | See Experience#Leveling up on the Minecraft Wiki for Total Experience to Level conversion |
Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
---|---|---|---|---|---|---|---|
0x20 | Play | Client | Entity ID | VarInt | |||
Number Of Properties | Int | Number of elements in the following array | |||||
Property | Key | Array | String | See below | |||
Value | Double | See below | |||||
Number Of Modifiers | VarInt | Number of elements in the following array | |||||
Modifiers | Array of Modifier Data | See Attribute#Modifiers |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x09 | Play | Server | Slot | Short | The slot which the player has selected (0–8) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0F | Play | Server | Window ID | Byte | The ID of the window that the action occurred in |
Action Number | Short | Every action that is to be accepted has a unique number. This field corresponds to that number. | |||
Accepted | Boolean | Whether the action was accepted |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x08 | Play | Client | X | Double | Absolute or relative position, depending on Flags |
Y | Double | Absolute or relative position, depending on Flags | |||
Z | Double | Absolute or relative position, depending on Flags | |||
Yaw | Float | Absolute or relative rotation on the X Axis, in degrees | |||
Pitch | Float | Absolute or relative rotation on the Y Axis, in degrees | |||
Flags | Byte | Bit field, see below |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x07 | Play | Server | Status | Byte | The action the player is taking against the block (see below) |
Location | Position | Block position | |||
Face | Byte | The face being hit (see below) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x14 | Play | Server | Text | String | All text behind the cursor |
Has Position | Boolean | ||||
Looked At Block | Optional Position | The position of the block being looked at. Only sent if Has Position is true. |
Field Name | Field Type | Notes |
---|---|---|
Length | VarInt | Length of packet data + length of the packet ID |
Packet ID | VarInt | |
Data | Byte Array | Depends on the connection state and packet ID, see the sections below |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x2F | Play | Client | Window ID | Byte | The window which is being updated. 0 for player inventory. Note that all known window types include the player inventory. This packet will only be sent for the currently opened window while the player is performing actions, even if it affects the player inventory. After the window is closed, a number of these packets are sent to update the player's inventory window (0). |
Slot | Short | The slot that should be updated | |||
Slot Data | Slot |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x05 | Play | Client | Location | Position | Spawn location |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x3F | Play | Client | Channel | String | Name of the plugin channel used to send the data |
Data | Byte Array | Any data, depending on the channel. MC| channels are documented here. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0C | Play | Server | Sideways | Float | Positive to the left of the player |
Forward | Float | Positive forward | |||
Flags | Unsigned Byte | Bit mask. 0x1: jump, 0x2: unmount |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x01 | Play | Server | Message | String | The client sends the raw input, not Chat |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x10 | Play | Client | Entity ID | VarInt | |
Title | String | Name of the painting. Max length 13 | |||
Location | Position | Center coordinates | |||
Direction | Unsigned Byte | Direction the painting faces. 0: north (-z), 1: west (-x), 2: south (+z), 3: east (+x) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x17 | Play | Server | Channel | String | Name of the plugin channel used to send the data |
Data | Byte Array | Any data, depending on the channel. MC| channels are documented here. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x15 | Play | Server | Locale | String | e.g. en_GB |
View Distance | Byte | Client-side render distance, in chunks | |||
Chat Mode | Byte | 0: enabled, 1: commands only, 2: hidden | |||
Chat Colors | Boolean | “Colors” multiplayer setting | |||
Displayed Skin Parts | Unsigned Byte | Skin parts, see note below |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x3D | Play | Client | Position | Byte | The position of the scoreboard. 0: list, 1: sidebar, 2: below name. |
Score Name | String | The unique name for the scoreboard to be displayed. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x3A | Play | Client | Count | VarInt | Number of elements in the following array |
Matches | Array of String | One eligible command, note that each command is sent separately instead of in a single string, hence the need for Count |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x11 | Play | Server | Window ID | Byte | The ID of the enchantment table window sent by Open Window |
Enchantment | Byte | The position of the enchantment on the enchantment table window, starting with 0 as the topmost one |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x18 | Play | Server | Target Player | UUID | UUID of the player to teleport to (can also be an entity UUID) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x04 | Play | Server | X | Double | Absolute position |
Feet Y | Double | Absolute position, normally Head Y - 1.62 | |||
Z | Double | Absolute position | |||
On Ground | Boolean | True if the client is on the ground, false otherwise |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0D | Play | Server | Window ID | Unsigned Byte | This is the ID of the window that was closed. 0 for player inventory. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x10 | Play | Server | Slot | Short | Inventory slot |
Clicked Item | Slot |
Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
---|---|---|---|---|---|---|---|
0x22 | Play | Client | Chunk X | Int | Chunk X coordinate | ||
Chunk Z | Int | Chunk Z coordinate | |||||
Record Count | VarInt | Number of elements in the following array, i.e. the number of blocks affected | |||||
Record | Horizontal Position | Array | Unsigned Byte | The 4 most significant bits (0xF0 ) encode the X coordinate, relative to the chunk. The 4 least significant bits (0x0F ) encode the Z coordinate, relative to the chunk. |
|||
Y Coordinate | Unsigned Byte | ||||||
Block ID | VarInt | The new block state ID for the block as given in the global palette (When reading data: type = id >> 4 , meta = id & 15 , when writing data: id = type << 4 | (meta & 15) ) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0D | Play | Client | Collected Entity ID | VarInt | |
Collector Entity ID | VarInt |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x30 | Play | Client | Window ID | Unsigned Byte | The ID of window which items are being sent for. 0 for player inventory. |
Count | Short | Number of elements in the following array | |||
Slot Data | Array of Slot |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x46 | Play | Client | Threshold | VarInt | Packets of this size or higher may be compressed |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x17 | Play | Client | Entity ID | VarInt | |
Delta X | Byte | Change in X position as a Fixed-Point number | |||
Delta Y | Byte | Change in Y position as a Fixed-Point number | |||
Delta Z | Byte | Change in Z position as a Fixed-Point number | |||
Yaw | Angle | New angle, not a delta | |||
Pitch | Angle | New angle, not a delta | |||
On Ground | Boolean |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x1B | Play | Client | Entity ID | Int | Attached entity's EID |
Vehicle ID | Int | Vechicle's Entity ID. Set to -1 to detach | |||
Leash | Boolean | If true leashes the entity to the vehicle |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x01 | Login | Server | Shared Secret Length | VarInt | Length of Shared Secret |
Shared Secret | Byte Array | ||||
Verify Token Length | VarInt | Length of Verify Token | |||
Verify Token | Byte Array |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x00 | Handshaking | Server | Protocol Version | VarInt | See protocol version numbers (currently 47) |
Server Address | String | hostname or IP, e.g. localhost or 127.0.0.1 | |||
Server Port | Unsigned Short | default is 25565 | |||
Next State | VarInt | 1 for status, 2 for login |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x03 | Login | Client | Threshold | VarInt | Maximum size of a packet before its compressed |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x2E | Play | Client | Window ID | Unsigned Byte | This is the ID of the window that was closed. 0 for inventory. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x3E | Play | Client | Team Name | String | A unique name for the team. (Shared with scoreboard). |
Mode | Byte | If 0 then the team is created. If 1 then the team is removed. If 2 the team team information is updated. If 3 then new players are added to the team. If 4 then players are removed from the team. |
|||
Team Display Name | Optional String | Only if Mode = 0 or 2. | |||
Team Prefix | Optional String | Only if Mode = 0 or 2. Displayed before the players' name that are part of this team | |||
Team Suffix | Optional String | Only if Mode = 0 or 2. Displayed after the players' name that are part of this team | |||
Friendly Fire | Optional Byte | Only if Mode = 0 or 2. 0 for off, 1 for on, 3 for seeing friendly invisibles | |||
Name Tag Visibility | Optional String | Only if Mode = 0 or 2. always, hideForOtherTeams, hideForOwnTeam, never | |||
Color | Optional Byte | Only if Mode = 0 or 2. Same as Chat colors | |||
Player Count | Optional VarInt | Only if Mode = 0 or 3 or 4. Number of players in the array | |||
Players | Optional Array of String | Only if Mode = 0 or 3 or 4. Players to be added/remove from the team. Max 40 characters so may be uuid's later |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x25 | Play | Client | Entity ID | VarInt | EID for the animation |
Location | Position | Block Position | |||
Destroy Stage | Byte | 0–9 to set it, any other value to remove it |
Field Name | Field Type | Notes |
---|---|---|
UUID | UUID | |
Amount | Double | May be positive or negative |
Operation | Byte | See below |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x27 | Play | Client | X | Float | |
Y | Float | ||||
Z | Float | ||||
Radius | Float | Currently unused in the client | |||
Record Count | Int | Number of elements in the following array | |||
Records | Array of (Byte, Byte, Byte) | Each record is 3 signed bytes long, each bytes are the XYZ (respectively) offsets of affected blocks. | |||
Player Motion X | Float | X velocity of the player being pushed by the explosion | |||
Player Motion Y | Float | Y velocity of the player being pushed by the explosion | |||
Player Motion Z | Float | Z velocity of the player being pushed by the explosion |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x35 | Play | Client | Location | Position | |
Action | Unsigned Byte | The type of update to perform, see below | |||
NBT Data | Optional NBT Tag | If not present then it's a TAG_END (0) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x03 | Play | Client | World Age | Long | In ticks; not changed by server commands |
Time of day | Long | The world (or region) time, in ticks. If negative the sun will stop moving at the Math.abs of the time |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x07 | Play | Client | Dimension | Int | -1: The Nether, 0: The Overworld, 1: The End |
Difficulty | Unsigned Byte | 0: Peaceful, 1: Easy, 2: Normal, 3: Hard | |||
Gamemode | Unsigned Byte | 0: survival, 1: creative, 2: adventure. The hardcore flag is not included | |||
Level Type | String | Same as Join Game |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x36 | Play | Client | Location | Position |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x2A | Play | Client | Particle ID | Int | See below |
Long Distance | Boolean | If true, particle distance increases from 256 to 65536 | |||
X | Float | X position of the particle | |||
Y | Float | Y position of the particle | |||
Z | Float | Z position of the particle | |||
Offset X | Float | This is added to the X position after being multiplied by random.nextGaussian() | |||
Offset Y | Float | This is added to the Y position after being multiplied by random.nextGaussian() | |||
Offset Z | Float | This is added to the Z position after being multiplied by random.nextGaussian() | |||
Particle Data | Float | The data of each particle | |||
Particle Count | Int | The number of particles to create | |||
Data | Array of VarInt | Length depends on particle. "iconcrack" has length of 2, "blockcrack", and "blockdust" have lengths of 1, the rest have 0. |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x19 | Play | Server | Hash | String | The hash sent in the Resource Pack Send packet. |
Result | VarInt Enum | 0: successfully loaded, 1: declined, 2: failed download, 3: accepted |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x23 | Play | Client | Location | Position | Block Coordinates |
Block ID | VarInt | The new block state ID for the block as given in the global palette (When reading data: type = id >> 4 , meta = id & 15 , when writing data: id = type << 4 | (meta & 15) ) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x13 | Play | Server | Flags | Byte | Bit mask. 0x08: damage disabled (god mode), 0x04: can fly, 0x02: is flying, 0x01: is Creative |
Flying Speed | Float | ||||
Walking Speed | Float |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x1A | Play | Client | Entity ID | Int | |
Entity Status | Byte | See below |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x21 | Play | Client | Chunk X | Int | Chunk X coordinate |
Chunk Z | Int | Chunk Z coordinate | |||
Ground-Up Continuous | Boolean | This is true if the packet represents all sections in this vertical column, where the Primary Bit Mask specifies exactly which sections are included, and which are air | |||
Primary Bit Mask | Unsigned Short | Bitmask with 1 for every 16x16x16 section whose data follows in the compressed data | |||
Size | VarInt | Size of Data | |||
Data | Chunk |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x2C | Play | Client | Entity ID | VarInt | The EID of the thunderbolt |
Type | Byte | The global entity type, currently always 1 for thunderbolt | |||
X | Int | Thunderbolt X, a fixed-point number | |||
Y | Int | Thunderbolt Y, a fixed-point number | |||
Z | Int | Thunderbolt Z, a fixed-point number |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x3B | Play | Client | Objective Name | String | An unique name for the objective |
Mode | Byte | 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text. | |||
Objective Value | Optional String | Only if mode is 0 or 2. The text to be displayed for the score | |||
Type | Optional String | Only if mode is 0 or 2. “integer” or “hearts” |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x16 | Play | Server | Action ID | VarInt | See below |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x04 | Play | Client | Entity ID | VarInt | Entity's EID |
Slot | Short | Equipment slot. 0: held, 1–4: armor slot (1: boots, 2: leggings, 3: chestplate, 4: helmet) | |||
Item | Slot | Item in slot format |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x33 | Play | Client | Location | Position | |
Line 1 | Chat | First line of text in the sign | |||
Line 2 | Chat | Second line of text in the sign | |||
Line 3 | Chat | Third line of text in the sign | |||
Line 4 | Chat | Fourth line of text in the sign |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0A | Play | Server | no fields |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x11 | Play | Client | Entity ID | VarInt | Entity's ID |
X | Int | X position as a Fixed-Point number | |||
Y | Int | Y position as a Fixed-Point number | |||
Z | Int | Z position as a Fixed-Point number | |||
Count | Short | The amount of experience this orb will reward once collected |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x29 | Play | Client | Sound name | String | All known sound effect names can be seen here |
Effect position X | Int | Effect X multiplied by 8 | |||
Effect position Y | Int | Effect Y multiplied by 8 | |||
Effect position Z | Int | Effect Z multiplied by 8 | |||
Volume | Float | 1 is 100%, can be more | |||
Pitch | Unsigned Byte | 63 is 100%, can be more |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x49 | Play | Client | Entity ID | VarInt | |
Tag | NBT Tag |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x39 | Play | Client | Flags | Byte | Bit field, see below |
Flying Speed | Float | ||||
Field of View Modifier | Float | Modifies the field of view, like a speed potion. A Notchian server will use the same value as the movement speed (send in the Entity Properties packet). |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x47 | Play | Client | Header | Chat | |
Footer | Chat |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x12 | Play | Server | Location | Position | Block Coordinates |
Line 1 | Chat | First line of text in the sign | |||
Line 2 | Chat | Second line of text in the sign | |||
Line 3 | Chat | Third line of text in the sign | |||
Line 4 | Chat | Fourth line of text in the sign |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x1D | Play | Client | Entity ID | VarInt | |
Effect ID | Byte | See this table | |||
Amplifier | Byte | Notchian client displays effect level as Amplifier + 1 | |||
Duration | VarInt | Seconds | |||
Hide Particles | Boolean |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x1E | Play | Client | Entity ID | VarInt | |
Effect ID | Byte | See this table |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x01 | Status | Client | Payload | Long | Should be the same as sent by the client |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x02 | Login | Client | UUID | String | Unlike in other packets, this field contains the UUID as a string with hyphens. |
Username | String |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x00 | Play | Client | Keep Alive ID | VarInt |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x02 | Play | Client | JSON Data | Chat | Limited to 32767 bytes |
Position | Byte | 0: chat (chat box), 1: system message (chat box), 2: above hotbar |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0B | Play | Client | Entity ID | VarInt | Player ID |
Animation | Unsigned Byte | Animation ID (see below) |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x24 | Play | Client | Location | Position | Block coordinates |
Byte 1 | Unsigned Byte | Varies depending on block — see Block Actions | |||
Byte 2 | Unsigned Byte | Varies depending on block — see Block Actions | |||
Block Type | VarInt | The block type ID for the block, not including metadata/damage value |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x2B | Play | Client | Reason | Unsigned Byte | See below |
Value | Float | Depends on Reason |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x28 | Play | Client | Effect ID | Int | The ID of the effect, see below |
Location | Position | The location of the effect | |||
Data | Int | Extra data for certain effects, see below | |||
Disable Relative Volume | Boolean | See above |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x02 | Play | Server | Target | VarInt | |
Type | VarInt | 0: interact, 1: attack, 2: interact at | |||
Target X | Optional Float | Only if Type is interact at | |||
Target Y | Optional Float | Only if Type is interact at | |||
Target Z | Optional Float | Only if Type is interact at |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x13 | Play | Client | Count | VarInt | Number of elements in the following array |
Entity IDs | Array of VarInt | The list of entities of destroy |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x06 | Play | Server | X | Double | Absolute position |
Feet Y | Double | Absolute feet position, normally Head Y - 1.62 | |||
Z | Double | Absolute position | |||
Yaw | Float | Absolute rotation on the X Axis, in degrees | |||
Pitch | Float | Absolute rotation on the Y Axis, in degrees | |||
On Ground | Boolean | True if the client is on the ground, false otherwise |
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x0A | Play | Client | Entity ID | VarInt | Sleeping player's EID |
Location | Position | Block location of the head part of the bed |
Packet ID | State | Bound To | Field Name | Field Type | Notes | |||||
---|---|---|---|---|---|---|---|---|---|---|
0x38 | Play | Client | Action | VarInt | Determines the rest of the Player format after the UUID | |||||
Number Of Players | VarInt | Number of elements in the following array | ||||||||
Player | UUID | Array | UUID | |||||||
Action | Field Name | |||||||||
0: add player | Name | String | ||||||||
Number Of Properties | VarInt | Number of elements in the following array | ||||||||
Property | Name | Array | String | |||||||
Value | String | |||||||||
Is Signed | Boolean | |||||||||
Signature | Optional String | Only if Is Signed is true | ||||||||
Gamemode | VarInt | |||||||||
Ping | VarInt | |||||||||
Has Display Name | Boolean | |||||||||
Display Name | Optional Chat | Only if Has Display Name is true | ||||||||
1: update gamemode | Gamemode | VarInt | ||||||||
2: update latency | Ping | VarInt | ||||||||
3: update display name | Has Display Name | Boolean | ||||||||
Display Name | Optional Chat | Only send if Has Display Name is true | ||||||||
4: remove player | no fields | no fields |