Pre-release protocol: Difference between revisions

From wiki.vg
Jump to navigation Jump to search
imported>WinX64
(23w46a)
imported>WinX64
(1.20.3-pre1)
Line 1: Line 1:
This page documents the changes from the [[Protocol|last stable Minecraft release]] (currently [[Protocol version numbers|1.20.2, protocol 764]]) to the current pre-release (currently [[Protocol version numbers|23w46a, protocol {{Snapshot PVN|1073741987}}]]). Note that this page contains bleeding-edge information that may not be completely or correctly documented.
This page documents the changes from the [[Protocol|last stable Minecraft release]] (currently [[Protocol version numbers|1.20.2, protocol 764]]) to the current pre-release (currently [[Protocol version numbers|1.20.3-pre1, protocol {{Snapshot PVN|1073741988}}]]). Note that this page contains bleeding-edge information that may not be completely or correctly documented.


One who wishes to commandeer the merging of this into [[Protocol]] when an update is made must be sure to respect any changes that may have occurred to the respective packets there.
One who wishes to commandeer the merging of this into [[Protocol]] when an update is made must be sure to respect any changes that may have occurred to the respective packets there.
Line 624: Line 624:
  |-
  |-
  !colspan="4"| Configuration clientbound
  !colspan="4"| Configuration clientbound
  {{PacketList|0x07|Feature Flags}}
  {{PacketList|0x06|Resource Pack (configuration)|pre=removed}}
{{PacketList|0x06|Add Resource Pack (configuration)|rel=added}}
{{PacketList|0x07|Remove Resource Pack (configuration)|rel=added}}
{{PacketList|{{change|0x07|0x08}}|Feature Flags}}
|-
!colspan="4"| Configuration serverbound
{{PacketList|0x05|Resource Pack Response (configuration)}}
  |-
  |-
  !colspan="4"| Play clientbound
  !colspan="4"| Play clientbound
Line 630: Line 636:
  {{PacketList|0x20|Game Event}}
  {{PacketList|0x20|Game Event}}
  {{PacketList|0x42|Reset Score|rel=added}}
  {{PacketList|0x42|Reset Score|rel=added}}
  {{PacketList|{{change|0x42|0x43}}|Resource Pack (play)|pre=unchanged}}
  {{PacketList|0x42|Resource Pack (play)|pre=removed}}
  {{PacketList|{{change|0x43|0x44}}|Respawn|pre=unchanged}}
{{PacketList|0x43|Add Resource Pack (play)|rel=added}}
  {{PacketList|{{change|0x44|0x45}}|Set Head Rotation|pre=unchanged}}
{{PacketList|0x44|Remove Resource Pack (play)|rel=added}}
  {{PacketList|{{change|0x45|0x46}}|Update Section Blocks|pre=unchanged}}
  {{PacketList|{{change|0x43|0x45}}|Respawn|pre=unchanged}}
  {{PacketList|{{change|0x46|0x47}}|Select Advancements Tab|pre=unchanged}}
  {{PacketList|{{change|0x44|0x46}}|Set Head Rotation|pre=unchanged}}
  {{PacketList|{{change|0x47|0x48}}|Server Data|pre=unchanged}}
  {{PacketList|{{change|0x45|0x47}}|Update Section Blocks|pre=unchanged}}
  {{PacketList|{{change|0x48|0x49}}|Set Action Bar Text|pre=unchanged}}
  {{PacketList|{{change|0x46|0x48}}|Select Advancements Tab|pre=unchanged}}
  {{PacketList|{{change|0x49|0x4A}}|Set Border Center|pre=unchanged}}
  {{PacketList|{{change|0x47|0x49}}|Server Data|pre=unchanged}}
  {{PacketList|{{change|0x4A|0x4B}}|Set Border Lerp Size|pre=unchanged}}
  {{PacketList|{{change|0x48|0x4A}}|Set Action Bar Text|pre=unchanged}}
  {{PacketList|{{change|0x4B|0x4C}}|Set Border Size|pre=unchanged}}
  {{PacketList|{{change|0x49|0x4B}}|Set Border Center|pre=unchanged}}
  {{PacketList|{{change|0x4C|0x4D}}|Set Border Warning Delay|pre=unchanged}}
  {{PacketList|{{change|0x4A|0x4C}}|Set Border Lerp Size|pre=unchanged}}
  {{PacketList|{{change|0x4D|0x4E}}|Set Border Warning Distance|pre=unchanged}}
  {{PacketList|{{change|0x4B|0x4D}}|Set Border Size|pre=unchanged}}
  {{PacketList|{{change|0x4E|0x4F}}|Set Camera|pre=unchanged}}
  {{PacketList|{{change|0x4C|0x4E}}|Set Border Warning Delay|pre=unchanged}}
  {{PacketList|{{change|0x4F|0x50}}|Set Held Item|pre=unchanged}}
  {{PacketList|{{change|0x4D|0x4F}}|Set Border Warning Distance|pre=unchanged}}
  {{PacketList|{{change|0x50|0x51}}|Set Center Chunk|pre=unchanged}}
  {{PacketList|{{change|0x4E|0x50}}|Set Camera|pre=unchanged}}
  {{PacketList|{{change|0x51|0x52}}|Set Render Distance|pre=unchanged}}
  {{PacketList|{{change|0x4F|0x51}}|Set Held Item|pre=unchanged}}
  {{PacketList|{{change|0x52|0x53}}|Set Default Spawn Position|pre=unchanged}}
  {{PacketList|{{change|0x50|0x52}}|Set Center Chunk|pre=unchanged}}
  {{PacketList|{{change|0x53|0x54}}|Display Objective|pre=unchanged}}
  {{PacketList|{{change|0x51|0x53}}|Set Render Distance|pre=unchanged}}
  {{PacketList|{{change|0x54|0x55}}|Set Entity Metadata|pre=unchanged}}
  {{PacketList|{{change|0x52|0x54}}|Set Default Spawn Position|pre=unchanged}}
  {{PacketList|{{change|0x55|0x56}}|Link Entities|pre=unchanged}}
  {{PacketList|{{change|0x53|0x55}}|Display Objective|pre=unchanged}}
  {{PacketList|{{change|0x56|0x57}}|Set Entity Velocity|pre=unchanged}}
  {{PacketList|{{change|0x54|0x56}}|Set Entity Metadata|pre=unchanged}}
  {{PacketList|{{change|0x57|0x58}}|Set Equipment|pre=unchanged}}
  {{PacketList|{{change|0x55|0x57}}|Link Entities|pre=unchanged}}
  {{PacketList|{{change|0x58|0x59}}|Set Experience|pre=unchanged}}
  {{PacketList|{{change|0x56|0x58}}|Set Entity Velocity|pre=unchanged}}
  {{PacketList|{{change|0x59|0x5A}}|Set Health|pre=unchanged}}
  {{PacketList|{{change|0x57|0x59}}|Set Equipment|pre=unchanged}}
  {{PacketList|{{change|0x5A|0x5B}}|Update Objectives}}
  {{PacketList|{{change|0x58|0x5A}}|Set Experience|pre=unchanged}}
  {{PacketList|{{change|0x5B|0x5C}}|Set Passengers|pre=unchanged}}
  {{PacketList|{{change|0x59|0x5B}}|Set Health|pre=unchanged}}
  {{PacketList|{{change|0x5C|0x5D}}|Update Teams|pre=unchanged}}
  {{PacketList|{{change|0x5A|0x5C}}|Update Objectives}}
  {{PacketList|{{change|0x5D|0x5E}}|Update Score}}
  {{PacketList|{{change|0x5B|0x5D}}|Set Passengers|pre=unchanged}}
  {{PacketList|{{change|0x5E|0x5F}}|Set Simulation Distance|pre=unchanged}}
  {{PacketList|{{change|0x5C|0x5E}}|Update Teams|pre=unchanged}}
  {{PacketList|{{change|0x5F|0x60}}|Set Subtitle Text|pre=unchanged}}
  {{PacketList|{{change|0x5D|0x5F}}|Update Score}}
  {{PacketList|{{change|0x60|0x61}}|Update Time|pre=unchanged}}
  {{PacketList|{{change|0x5E|0x60}}|Set Simulation Distance|pre=unchanged}}
  {{PacketList|{{change|0x61|0x62}}|Set Title Text|pre=unchanged}}
  {{PacketList|{{change|0x5F|0x61}}|Set Subtitle Text|pre=unchanged}}
  {{PacketList|{{change|0x62|0x63}}|Set Title Animation Times|pre=unchanged}}
  {{PacketList|{{change|0x60|0x62}}|Update Time|pre=unchanged}}
  {{PacketList|{{change|0x63|0x64}}|Entity Sound Effect|pre=unchanged}}
  {{PacketList|{{change|0x61|0x63}}|Set Title Text|pre=unchanged}}
  {{PacketList|{{change|0x64|0x65}}|Sound Effect|pre=unchanged}}
  {{PacketList|{{change|0x62|0x64}}|Set Title Animation Times|pre=unchanged}}
  {{PacketList|{{change|0x65|0x66}}|Start Configuration|pre=unchanged}}
  {{PacketList|{{change|0x63|0x65}}|Entity Sound Effect|pre=unchanged}}
  {{PacketList|{{change|0x66|0x67}}|Stop Sound|pre=unchanged}}
  {{PacketList|{{change|0x64|0x66}}|Sound Effect|pre=unchanged}}
  {{PacketList|{{change|0x67|0x68}}|System Chat Message|pre=unchanged}}
  {{PacketList|{{change|0x65|0x67}}|Start Configuration|pre=unchanged}}
  {{PacketList|{{change|0x68|0x69}}|Set Tab List Header And Footer|pre=unchanged}}
  {{PacketList|{{change|0x66|0x68}}|Stop Sound|pre=unchanged}}
  {{PacketList|{{change|0x69|0x6A}}|Tag Query Response|pre=unchanged}}
  {{PacketList|{{change|0x67|0x69}}|System Chat Message|pre=unchanged}}
  {{PacketList|{{change|0x6A|0x6B}}|Pickup Item|pre=unchanged}}
  {{PacketList|{{change|0x68|0x6A}}|Set Tab List Header And Footer|pre=unchanged}}
  {{PacketList|{{change|0x6B|0x6C}}|Teleport Entity|pre=unchanged}}
  {{PacketList|{{change|0x69|0x6B}}|Tag Query Response|pre=unchanged}}
  {{PacketList|0x6D|Set Ticking State|rel=added}}
  {{PacketList|{{change|0x6A|0x6C}}|Pickup Item|pre=unchanged}}
  {{PacketList|0x6E|Step Tick|rel=added}}
  {{PacketList|{{change|0x6B|0x6D}}|Teleport Entity|pre=unchanged}}
  {{PacketList|{{change|0x6C|0x6F}}|Update Advancements|pre=unchanged}}
  {{PacketList|0x6E|Set Ticking State|rel=added}}
  {{PacketList|{{change|0x6D|0x70}}|Update Attributes|pre=unchanged}}
  {{PacketList|0x6F|Step Tick|rel=added}}
  {{PacketList|{{change|0x6E|0x71}}|Entity Effect|pre=unchanged}}
  {{PacketList|{{change|0x6C|0x70}}|Update Advancements|pre=unchanged}}
  {{PacketList|{{change|0x6F|0x72}}|Update Recipes}}
  {{PacketList|{{change|0x6D|0x71}}|Update Attributes|pre=unchanged}}
  {{PacketList|{{change|0x70|0x73}}|Update Tags|pre=unchanged}}
  {{PacketList|{{change|0x6E|0x72}}|Entity Effect|pre=unchanged}}
  {{PacketList|{{change|0x6F|0x73}}|Update Recipes}}
  {{PacketList|{{change|0x70|0x74}}|Update Tags|pre=unchanged}}
  |-
  |-
  !colspan="4"| Play serverbound
  !colspan="4"| Play serverbound
Line 706: Line 714:
  {{PacketList|{{change|0x25|0x26}}|Set Seen Recipe|pre=unchanged}}
  {{PacketList|{{change|0x25|0x26}}|Set Seen Recipe|pre=unchanged}}
  {{PacketList|{{change|0x26|0x27}}|Rename Item|pre=unchanged}}
  {{PacketList|{{change|0x26|0x27}}|Rename Item|pre=unchanged}}
  {{PacketList|{{change|0x27|0x28}}|Resource Pack Response (play)|pre=unchanged}}
  {{PacketList|{{change|0x27|0x28}}|Resource Pack Response (play)}}
  {{PacketList|{{change|0x28|0x29}}|Seen Advancements|pre=unchanged}}
  {{PacketList|{{change|0x28|0x29}}|Seen Advancements|pre=unchanged}}
  {{PacketList|{{change|0x29|0x2A}}|Select Trade|pre=unchanged}}
  {{PacketList|{{change|0x29|0x2A}}|Select Trade|pre=unchanged}}
Line 997: Line 1,005:
=== Clientbound ===
=== Clientbound ===


==== Feature Flags ====
==== Remove Resource Pack (configuration) ====


Used to enable and disable features, generally experimental ones, on the client.
{| class="wikitable" {{added}}
 
{| class="wikitable"
  ! Packet ID
  ! Packet ID
  ! State
  ! State
Line 1,009: Line 1,015:
  ! Notes
  ! Notes
  |-
  |-
  | rowspan="2"| 0x07
  | rowspan="2"| 0x06
  | rowspan="2"| Configuration
  | rowspan="2"| Configuration
  | rowspan="2"| Client
  | rowspan="2"| Client
  | Total Features
  | Has UUID
  | VarInt
  | Boolean
  | Number of features that appear in the array below.
  | Whether a specific resource pack should be removed, or all of them.
  |-
  |-
  | Feature Flags
  | UUID
  | Identifier Array
  | Optional UUID
  |
  | The UUID of the resource pack to be removed. Only present if the previous field is true.
  |}
  |}


As of {{change|1.20.2|1.20.3}}, the following feature flags are available:
==== Add Resource Pack (configuration) ====
 
* minecraft:vanilla - enables vanilla features</li>
* minecraft:bundle - enables support for the bundle</li>
* minecraft:trade_rebalance - enables support for the rebalanced villager trades</li>
* {{change||minecraft:update_1_21 - enables support for 1.21 features}}</li>


=== Serverbound ===
{| class="wikitable" {{added}}
 
! Packet ID
No changes so far.
! State
! Bound To
! Field Name
! Field Type
! Notes
|-
| rowspan="6"| 0x07
| rowspan="6"| Configuration
| rowspan="6"| Client
| UUID
| UUID
| The unique identifier of the resource pack.
|-
| URL
| String (32767)
| The URL to the resource pack.
|-
| Hash
| String (40)
| A 40 character hexadecimal, case-insensitive [[wikipedia:SHA-1|SHA-1]] hash of the resource pack file.<br />If it's not a 40 character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth.
|-
| Forced
| Boolean
| The Notchian client will be forced to use the resource pack from the server. If they decline they will be kicked from the server.
|-
| Has Prompt Message
| Boolean
| Whether a custom message should be used on the resource pack prompt.
|-
| Prompt Message
| Optional [[Chat]]
| This is shown in the prompt making the client accept or decline the resource pack. Only present if the previous field is true.
|}


== Play ==
==== Feature Flags ====


=== Clientbound ===
Used to enable and disable features, generally experimental ones, on the client.
 
==== Explosion ====
 
Sent when an explosion occurs (creepers, TNT, and ghast fireballs).
 
Each block in Records is set to air. Coordinates for each axis in record is int(X) + record.x
 
{{warning2|There is currently a disparity in the Notchian implementation between the data that is read from and written to the network. The write logic only serializes the particle id for the fields <code>Small explosion particle</code> and <code>Large explosion particle</code>, while the read logic expects the particle id and [[Protocol#Particle|extra required data]]. See [https://bugs.mojang.com/browse/MC-266537 MC-266537] for more information.}}


{| class="wikitable"
{| class="wikitable"
Line 1,048: Line 1,073:
  ! State
  ! State
  ! Bound To
  ! Bound To
  ! colspan="2" | Field Name
  ! Field Name
  ! Field Type
  ! Field Type
  ! Notes
  ! Notes
  |-
  |-
  | rowspan="15"| 0x1E
  | rowspan="2"| {{change|0x07|0x08}}
  | rowspan="15"| Play
  | rowspan="2"| Configuration
  | rowspan="15"| Client
  | rowspan="2"| Client
  | colspan="2" | X
  | Total Features
  | Double
  | VarInt
  |
  | Number of features that appear in the array below.
  |-
  |-
  | colspan="2" | Y
  | Feature Flags
  | Double
  | Identifier Array
  |
  |
|}
As of {{change|1.20.2|1.20.3}}, the following feature flags are available:
* minecraft:vanilla - enables vanilla features</li>
* minecraft:bundle - enables support for the bundle</li>
* minecraft:trade_rebalance - enables support for the rebalanced villager trades</li>
* {{change||minecraft:update_1_21 - enables support for 1.21 features}}</li>
=== Serverbound ===
==== Resource Pack Response (configuration) ====
{| class="wikitable"
! Packet ID
! State
! Bound To
! Field Name
! Field Type
! Notes
|-
| rowspan="3" | 0x05
| rowspan="3" | Configuration
| rowspan="3" | Server
|- {{added}}
| UUID
| UUID
| The unique identifier of the resource pack received in the [[#Add_Resource_Pack_(configuration)|Add Resource Pack (configuration)]] request.
  |-
  |-
  | colspan="2" | Z
  | Result
| Double
  | VarInt Enum
  |
  | {{change|0: successfully loaded, 1: declined, 2: failed download, 3: accepted.|Result ID (see below).}}
|-
  |}
| colspan="2" | Strength
 
| Float
Result can be one of the following values:
  | {{change|A strength greater than or equal to 2.0 spawns a <code>minecraft:explosion_emitter</code> particle, while a lesser strength spawns a <code>minecraft:explosion</code> particle.}}
 
{{change||If the strength is greater or equal to 2.0, or the block interaction is not 0 (keep), large explosion particles are used. Otherwise, small explosion particles are used.}}
{| class="wikitable" {{added}}
  |-
  ! ID
| colspan="2" | Record Count
  ! Result
  | VarInt
  | Number of elements in the following array.
  |-
  |-
  | colspan="2" | Records
  | 0
| Array of (Byte, Byte, Byte)
  | Successfully downloaded
  | Each record is 3 signed bytes long; the 3 bytes are the XYZ (respectively) signed offsets of affected blocks.
  |-
  |-
  | colspan="2" | Player Motion X
  | 1
  | Float
| Declined
  | X velocity of the player being pushed by the explosion.
|-
| 2
| Failed to download
|-
| 3
| Accepted
|-
  | 4
  | Invalid URL
  |-
  |-
  | colspan="2" | Player Motion Y
  | 5
| Float
  | Failed to reload
  | Y velocity of the player being pushed by the explosion.
  |-
  |-
  | colspan="2" | Player Motion Z
  | 6
  | Float
  | Discarded
  | Z velocity of the player being pushed by the explosion.
  |}
|- {{added}}
 
| colspan="2" | Block interaction
== Play ==
| VarInt Enum
 
| 0 = keep, 1 = destroy, 2 = destroy_with_decay, 3 = trigger_block.
=== Clientbound ===
|- {{added}}
 
| colspan="2" | Small explosion particle
==== Explosion ====
| VarInt
 
| The particle ID listed in [[#Particle|the particle data type]].
Sent when an explosion occurs (creepers, TNT, and ghast fireballs).
|- {{added}}
| colspan="2" | Large explosion particle
| VarInt
| The particle ID listed in [[#Particle|the particle data type]].
|- {{added}}
| rowspan="3" | Explosion sound
| Sound Name
| Identifier
| The name of the sound played.
|- {{added}}
| Has Fixed Range
| Optional Boolean
| Whether is has fixed range.
|- {{added}}
| Range
| Optional Float
| The fixed range of the sound. Only present if previous boolean is true.
|}


==== Game Event ====
Each block in Records is set to air. Coordinates for each axis in record is int(X) + record.x


Used for a wide variety of game events, from weather to bed use to game mode to demo messages.
{{warning2|There is currently a disparity in the Notchian implementation between the data that is read from and written to the network. The write logic only serializes the particle id for the fields <code>Small explosion particle</code> and <code>Large explosion particle</code>, while the read logic expects the particle id and [[Protocol#Particle|extra required data]]. See [https://bugs.mojang.com/browse/MC-266537 MC-266537] for more information.}}


{| class="wikitable"
{| class="wikitable"
Line 1,126: Line 1,165:
  ! State
  ! State
  ! Bound To
  ! Bound To
  ! Field Name
  ! colspan="2" | Field Name
  ! Field Type
  ! Field Type
  ! Notes
  ! Notes
  |-
  |-
  | rowspan="2"| 0x20
  | rowspan="15"| 0x1E
  | rowspan="2"| Play
  | rowspan="15"| Play
  | rowspan="2"| Client
  | rowspan="15"| Client
  | Event
| colspan="2" | X
  | Unsigned Byte
| Double
  | See below.
|
|-
| colspan="2" | Y
| Double
|
|-
  | colspan="2" | Z
  | Double
  |
  |-
  |-
  | Value
  | colspan="2" | Strength
  | Float
  | Float
  | Depends on Event.
  | {{change|A strength greater than or equal to 2.0 spawns a <code>minecraft:explosion_emitter</code> particle, while a lesser strength spawns a <code>minecraft:explosion</code> particle.}}
|}
{{change||If the strength is greater or equal to 2.0, or the block interaction is not 0 (keep), large explosion particles are used. Otherwise, small explosion particles are used.}}
 
''Events'':
 
{| class="wikitable"
! Event
! Effect
! Value
  |-
  |-
  | 0
  | colspan="2" | Record Count
  | No respawn block available
  | VarInt
  | Note: Displays message 'block.minecraft.spawn.not_valid' (You have no home bed or charged respawn anchor, or it was obstructed) to the player.
  | Number of elements in the following array.
  |-
  |-
  | 1
  | colspan="2" | Records
  | Begin raining
  | Array of (Byte, Byte, Byte)
  |
  | Each record is 3 signed bytes long; the 3 bytes are the XYZ (respectively) signed offsets of affected blocks.
  |-
  |-
  | 2
  | colspan="2" | Player Motion X
  | End raining
  | Float
  |
  | X velocity of the player being pushed by the explosion.
  |-
  |-
  | 3
  | colspan="2" | Player Motion Y
  | Change game mode
  | Float
  | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator.
  | Y velocity of the player being pushed by the explosion.
  |-
  |-
  | 4
  | colspan="2" | Player Motion Z
| Win game
  | Float
| 0: Just respawn player.<br>1: Roll the credits and respawn player.<br>Note that 1 is only sent by notchian server when player has not yet achieved advancement "The end?", else 0 is sent.
  | Z velocity of the player being pushed by the explosion.
|-
  |- {{added}}
| 5
  | colspan="2" | Block interaction
  | Demo event
  | VarInt Enum
  | 0: Show welcome to demo screen.<br>101: Tell movement controls.<br>102: Tell jump control.<br>103: Tell inventory control.<br>104: Tell that the demo is over and print a message about how to take a screenshot.
  | 0 = keep, 1 = destroy, 2 = destroy_with_decay, 3 = trigger_block.
|-
  |- {{added}}
| 6
  | colspan="2" | Small explosion particle
| Arrow hit player
  | VarInt
| Note: Sent when any player is struck by an arrow.
  | The particle ID listed in [[#Particle|the particle data type]].
  |-
  |- {{added}}
  | 7
  | colspan="2" | Large explosion particle
  | Rain level change
  | VarInt
  | Note: Seems to change both sky color and lighting.<br>Rain level ranging from 0 to 1.
  | The particle ID listed in [[#Particle|the particle data type]].
|-
| 8
| Thunder level change
| Note: Seems to change both sky color and lighting (same as Rain level change, but doesn't start rain). It also requires rain to render by notchian client.<br>Thunder level ranging from 0 to 1.
  |-
  | 9
| Play pufferfish sting sound
  |-
  | 10
| Play elder guardian mob appearance (effect and sound)
|
  |-
  | 11
| Enable respawn screen
  | 0: Enable respawn screen.<br>1: Immediately respawn (sent when the <code>doImmediateRespawn</code> gamerule changes).
  |-
| 12
| Limited crafting
| 0: Disable limited crafting.<br>1: Enable limited crafting (sent when the <code>doLimitedCrafting</code> gamerule changes).
  |- {{added}}
  |- {{added}}
  | 13
  | rowspan="3" | Explosion sound
  | Start waiting for level chunks
  | Sound Name
  | Instructs the client to begin the waiting process for the level chunks.<br>Sent by the server after the level is cleared on the client and is being re-sent (either during the first, or subsequent reconfigurations).
  | Identifier
| The name of the sound played.
|- {{added}}
| Has Fixed Range
| Optional Boolean
| Whether is has fixed range.
|- {{added}}
| Range
| Optional Float
| The fixed range of the sound. Only present if previous boolean is true.
  |}
  |}


==== Reset Score ====
==== Game Event ====


This is sent to the client when it should remove a scoreboard item.
Used for a wide variety of game events, from weather to bed use to game mode to demo messages.


{| class="wikitable" {{added}}
{| class="wikitable"
  ! Packet ID
  ! Packet ID
  ! State
  ! State
Line 1,217: Line 1,247:
  ! Notes
  ! Notes
  |-
  |-
  | rowspan="3"| 0x42
  | rowspan="2"| 0x20
  | rowspan="3"| Play
  | rowspan="2"| Play
  | rowspan="3"| Client
  | rowspan="2"| Client
  | Entity Name
  | Event
  | String (32767)
  | Unsigned Byte
  | The entity whose score this is. For players, this is their username; for other entities, it is their UUID.
  | See below.
  |-
  |-
  | Has Objective Name
  | Value
  | Boolean
  | Float
  | Whether the score should be removed for the specified objective, or for all of them.
  | Depends on Event.
|-
| Objective Name
| Optional String (32767)
| The name of the objective the score belongs to. Only present if the previous field is true.
  |}
  |}


==== Update Objectives ====
''Events'':
 
This is sent to the client when it should create a new {{Minecraft Wiki|scoreboard}} objective or remove one.


{| class="wikitable"
{| class="wikitable"
  ! Packet ID
  ! Event
  ! State
  ! Effect
  ! Bound To
  ! Value
! colspan="2"| Field Name
! Field Type
! Notes
  |-
  |-
  | rowspan="10"| {{change|0x5A|0x5B}}
  | 0
  | rowspan="10"| Play
| No respawn block available
  | rowspan="10"| Client
| Note: Displays message 'block.minecraft.spawn.not_valid' (You have no home bed or charged respawn anchor, or it was obstructed) to the player.
  | colspan="2"| Objective Name
|-
  | String (32767)
  | 1
  | A unique name for the objective.
| Begin raining
  |
|-
  | 2
  | End raining
  |
  |-
  |-
  | colspan="2"| Mode
  | 3
  | Byte
  | Change game mode
  | 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text.
  | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator.
  |-
  |-
  | colspan="2"| Objective Value
  | 4
  | Optional Chat
  | Win game
  | Only if mode is 0 or 2.The text to be displayed for the score.
  | 0: Just respawn player.<br>1: Roll the credits and respawn player.<br>Note that 1 is only sent by Notchian server when player has not yet achieved advancement "The end?", else 0 is sent.
  |-
  |-
  | colspan="2"| Type
  | 5
  | Optional VarInt Enum
  | Demo event
  | Only if mode is 0 or 2. 0 = "integer", 1 = "hearts".
  | 0: Show welcome to demo screen.<br>101: Tell movement controls.<br>102: Tell jump control.<br>103: Tell inventory control.<br>104: Tell that the demo is over and print a message about how to take a screenshot.
  |- {{added}}
  |-
  | colspan="2"| Has Number Format
  | 6
  | Optional Boolean
| Arrow hit player
  | Only if mode is 0 or 2. Whether this objective has a set number format for the scores.
| Note: Sent when any player is struck by an arrow.
  |- {{added}}
|-
  | colspan="2"| Number Format
  | 7
  | Optional VarInt Enum
  | Rain level change
  | Only if mode is 0 or 2 and the previous boolean is true. Determines how the score number should be formatted.
| Note: Seems to change both sky color and lighting.<br>Rain level ranging from 0 to 1.
  |- {{added}}
  |-
  ! Number Format
  | 8
  ! Field Name
  | Thunder level change
  !
  | Note: Seems to change both sky color and lighting (same as Rain level change, but doesn't start rain). It also requires rain to render by Notchian client.<br>Thunder level ranging from 0 to 1.
  !
  |-
  |- {{added}}
  | 9
  | 0: blank
  | Play pufferfish sting sound
  | ''no fields''
  |-
  | ''no fields''
  | 10
  | Show nothing.
| Play elder guardian mob appearance (effect and sound)
|
  |-
  | 11
| Enable respawn screen
0: Enable respawn screen.<br>1: Immediately respawn (sent when the <code>doImmediateRespawn</code> gamerule changes).
|-
  | 12
  | Limited crafting
  | 0: Disable limited crafting.<br>1: Enable limited crafting (sent when the <code>doLimitedCrafting</code> gamerule changes).
  |- {{added}}
  |- {{added}}
  | 1: styled
  | 13
  | Styling
  | Start waiting for level chunks
  | [[NBT#Specification:compound_tag|Compound Tag]]
  | Instructs the client to begin the waiting process for the level chunks.<br>Sent by the server after the level is cleared on the client and is being re-sent (either during the first, or subsequent reconfigurations).
| The styling to be used when formatting the score number. This is similar to a [[Chat]], but only the styling fields are present.
|- {{added}}
| 2: fixed
| Content
| [[Chat]]
| The text to be used as placeholder.
  |}
  |}


==== Update Score ====
==== Reset Score ====


This is sent to the client when it should update a scoreboard item.
This is sent to the client when it should remove a scoreboard item.


{| class="wikitable"
{| class="wikitable" {{added}}
  ! Packet ID
  ! Packet ID
  ! State
  ! State
Line 1,305: Line 1,334:
  ! Notes
  ! Notes
  |-
  |-
  | rowspan="12"| {{change|0x5D|0x5E}}
  | rowspan="3"| 0x42
  | rowspan="12"| Play
  | rowspan="3"| Play
  | rowspan="12"| Client
  | rowspan="3"| Client
  | colspan="2"| Entity Name
  | Entity Name
  | String (32767)
  | String (32767)
  | The entity whose score this is. For players, this is their username; for other entities, it is their UUID.
  | The entity whose score this is. For players, this is their username; for other entities, it is their UUID.
|- {{removed}}
| colspan="2"| Action
| VarInt Enum
| 0 to create/update an item. 1 to remove an item.
  |-
  |-
  | colspan="2"| Objective Name
  | Has Objective Name
  | String (32767)
  | Boolean
  | The name of the objective the score belongs to.
  | Whether the score should be removed for the specified objective, or for all of them.
  |-
  |-
  | colspan="2"| Value
  | Objective Name
  | {{change|Optional|}} VarInt
  | Optional String (32767)
  | The score to be displayed next to the entry. {{change|Only sent when Action does not equal 1.|}}
  | The name of the objective the score belongs to. Only present if the previous field is true.
|- {{added}}
|}
  | colspan="2"| Has Display Name
 
==== Remove Resource Pack (play) ====
 
{| class="wikitable" {{added}}
! Packet ID
! State
! Bound To
! Field Name
! Field Type
! Notes
|-
| rowspan="2"| 0x43
  | rowspan="2"| Play
| rowspan="2"| Client
| Has UUID
  | Boolean
  | Boolean
  | Whether this score has a custom display name.
  | Whether a specific resource pack should be removed, or all of them.
  |- {{added}}
  |-
  | colspan="2"| Display Name
  | UUID
  | Optional Chat
  | Optional UUID
  | The custom display name. Only present if the previous boolean is true.
  | The UUID of the resource pack to be removed. Only present if the previous field is true.
  |- {{added}}
  |}
| colspan="2"| Has Number Format
 
| Boolean
==== Add Resource Pack (play) ====
| Whether this score has a set number format. This overrides the number format set on the objective, if any.
 
|- {{added}}
{| class="wikitable" {{added}}
  | colspan="2"| Number Format
  ! Packet ID
  | Optional VarInt Enum
  ! State
| Determines how the score number should be formatted. Only present if the previous boolean is true.
  ! Bound To
|- {{added}}
  ! Number Format
  ! Field Name
  ! Field Name
  !
  ! Field Type
  !
  ! Notes
  |- {{added}}
  |-
  | 0: blank
  | rowspan="6"| 0x44
  | ''no fields''
| rowspan="6"| Play
  | ''no fields''
| rowspan="6"| Client
  | Show nothing.
| UUID
  |- {{added}}
| UUID
  | 1: styled
| The unique identifier of the resource pack.
  | Styling
|-
  | [[NBT#Specification:compound_tag|Compound Tag]]
  | URL
  | The styling to be used when formatting the score number. This is similar to a [[Chat]], but only the styling fields are present.
  | String (32767)
  |- {{added}}
  | The URL to the resource pack.
  | 2: fixed
  |-
  | Content
  | Hash
  | [[Chat]]
  | String (40)
  | The text to be used as placeholder.
  | A 40 character hexadecimal, case-insensitive [[wikipedia:SHA-1|SHA-1]] hash of the resource pack file.<br />If it's not a 40 character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth.
|-
| Forced
| Boolean
  | The Notchian client will be forced to use the resource pack from the server. If they decline they will be kicked from the server.
  |-
  | Has Prompt Message
| Boolean
| Whether a custom message should be used on the resource pack prompt.
|-
  | Prompt Message
  | Optional [[Chat]]
  | This is shown in the prompt making the client accept or decline the resource pack. Only present if the previous field is true.
  |}
  |}


==== Set Ticking State ====
==== Update Objectives ====


Used to adjust the ticking rate of the client, and whether it's frozen.
This is sent to the client when it should create a new {{Minecraft Wiki|scoreboard}} objective or remove one.


{| class="wikitable" {{added}}
{| class="wikitable"
  ! Packet ID
  ! Packet ID
  ! State
  ! State
  ! Bound To
  ! Bound To
  ! Field Name
  ! colspan="2"| Field Name
  ! Field Type
  ! Field Type
  ! Notes
  ! Notes
  |-
  |-
  | rowspan="2" | 0x6D
  | rowspan="10"| {{change|0x5A|0x5C}}
  | rowspan="2" | Play
  | rowspan="10"| Play
  | rowspan="2" | Server
  | rowspan="10"| Client
  | Tick rate
  | colspan="2"| Objective Name
  | Float
  | String (32767)
  |
  | A unique name for the objective.
  |-
  |-
  | Is frozen
  | colspan="2"| Mode
| Boolean
  | Byte
  |
  | 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text.
  |}
|-
 
| colspan="2"| Objective Value
==== Step Tick ====
  | Optional Chat
 
  | Only if mode is 0 or 2.The text to be displayed for the score.
Advances the client processing by the specified number of ticks. Has no effect is the client ticking is not frozen.
 
{| class="wikitable" {{added}}
  ! Packet ID
  ! State
! Bound To
! Field Name
! Field Type
! Notes
  |-
  |-
  | 0x6E
  | colspan="2"| Type
  | Play
  | Optional VarInt Enum
  | Client
  | Only if mode is 0 or 2. 0 = "integer", 1 = "hearts".
  | Tick steps
  |- {{added}}
  | VarInt
| colspan="2"| Has Number Format
  |
  | Optional Boolean
  |}
  | Only if mode is 0 or 2. Whether this objective has a set number format for the scores.
 
  |- {{added}}
==== Update Recipes ====
| colspan="2"| Number Format
 
  | Optional VarInt Enum
{| class="wikitable"
| Only if mode is 0 or 2 and the previous boolean is true. Determines how the score number should be formatted.
  ! Packet ID
  |- {{added}}
  ! State
  ! Number Format
  ! Bound To
  ! Field Name
  ! colspan="2"| Field Name
  !
  ! colspan="2"| Field Type
  !
  ! Notes
  |- {{added}}
  |-
  | 0: blank
| rowspan="4"| {{change|0x6F|0x72}}
  | ''no fields''
  | rowspan="4"| Play
  | ''no fields''
| rowspan="4"| Client
  | Show nothing.
  | colspan="2"| Num Recipes
  |- {{added}}
  | colspan="2"| VarInt
  | 1: styled
  | Number of elements in the following array.
  | Styling
  |-
  | [[NBT#Specification:compound_tag|Compound Tag]]
  | rowspan="3"| Recipe
  | The styling to be used when formatting the score number. This is similar to a [[Chat]], but only the styling fields are present.
  | Type
  |- {{added}}
  | rowspan="3"| Array
  | 2: fixed
| Identifier
  | Content
  | The recipe type, see below.
  | [[Chat]]
  |-
  | The text to be used as placeholder.
  | Recipe ID
  | Identifier
  |
  |-
| Data
| Varies
| Additional data for the recipe.
  |}
  |}


Recipe types:
==== Update Score ====
 
This is sent to the client when it should update a scoreboard item.


{| class="wikitable"
{| class="wikitable"
  ! Type
  ! Packet ID
  ! Description
! State
  ! Data
! Bound To
! Field Name
  ! Field Type
  ! Notes
  |-
  |-
  | <code>minecraft:crafting_shapeless</code>
  | rowspan="12"| {{change|0x5D|0x5F}}
  | Shapeless crafting recipe. All items in the ingredient list must be present, but in any order/slot.
  | rowspan="12"| Play
  | As follows:
  | rowspan="12"| Client
  {| class="wikitable"
| colspan="2"| Entity Name
    ! Name
| String (32767)
    ! Type
| The entity whose score this is. For players, this is their username; for other entities, it is their UUID.
    ! Description
|- {{removed}}
    |-
| colspan="2"| Action
    | Group
| VarInt Enum
    | String (32767)
| 0 to create/update an item. 1 to remove an item.
    | Used to group similar recipes together in the recipe book. Tag is present in recipe JSON.
    |-
    |Category
    |VarInt Enum
    |Building = 0, Redstone = 1, Equipment = 2, Misc = 3
    |-
    | Ingredient count
    | VarInt
    | Number of elements in the following array.
    |-
    | Ingredients
    | Array of Ingredient.
    |
    |-
    | Result
    | [[Slot]]
    |
    |}
  |-
  |-
  | <code>minecraft:crafting_shaped</code>
  | colspan="2"| Objective Name
  | Shaped crafting recipe. All items must be present in the same pattern (which may be flipped horizontally or translated).
  | String (32767)
  | As follows:
| The name of the objective the score belongs to.
  {| class="wikitable"
  |-
    ! Name
| colspan="2"| Value
    ! Type
| {{change|Optional|}} VarInt
    ! Description
| The score to be displayed next to the entry. {{change|Only sent when Action does not equal 1.|}}
    |- {{removed}}
|- {{added}}
    | Width
| colspan="2"| Has Display Name
    | VarInt
| Boolean
    |
| Whether this score has a custom display name.
    |- {{removed}}
|- {{added}}
    | Height
| colspan="2"| Display Name
    | VarInt
| Optional Chat
    |
| The custom display name. Only present if the previous boolean is true.
    |-
|- {{added}}
    | Group
| colspan="2"| Has Number Format
    | String (32767)
| Boolean
    | Used to group similar recipes together in the recipe book. Tag is present in recipe JSON.
| Whether this score has a set number format. This overrides the number format set on the objective, if any.
    |-
|- {{added}}
    |Category
| colspan="2"| Number Format
    |VarInt Enum
| Optional VarInt Enum
    |Building = 0, Redstone = 1, Equipment = 2, Misc = 3
| Determines how the score number should be formatted. Only present if the previous boolean is true.
    |- {{added}}
|- {{added}}
    | Width
! Number Format
    | VarInt
! Field Name
    |
!
    |- {{added}}
!
    | Height
|- {{added}}
    | VarInt
| 0: blank
    |
| ''no fields''
    |-
| ''no fields''
    | Ingredients
| Show nothing.
    | Array of Ingredient
|- {{added}}
    | Length is <code>width * height</code>. Indexed by <code>x + (y * width)</code>.
| 1: styled
    |-
| Styling
    | Result
| [[NBT#Specification:compound_tag|Compound Tag]]
    | [[Slot]]
| The styling to be used when formatting the score number. This is similar to a [[Chat]], but only the styling fields are present.
    |-
|- {{added}}
    | Show notification
| 2: fixed
    | Boolean
| Content
    | Show a toast when the recipe is [[Protocol#Update_Recipe_Book|added]].
| [[Chat]]
    |}
| The text to be used as placeholder.
|}
 
==== Set Ticking State ====
 
Used to adjust the ticking rate of the client, and whether it's frozen.
 
{| class="wikitable" {{added}}
! Packet ID
! State
! Bound To
! Field Name
! Field Type
! Notes
|-
| rowspan="2" | 0x6E
| rowspan="2" | Play
| rowspan="2" | Server
| Tick rate
| Float
|
  |-
  |-
  | <code>minecraft:crafting_special_armordye</code>
  | Is frozen
  | Recipe for dying leather armor
  | Boolean
  | rowspan="14" | As follows:
  |
  {| class="wikitable"
|}
    ! Name
 
    ! Type
==== Step Tick ====
    ! Description
 
    |-
Advances the client processing by the specified number of ticks. Has no effect is the client ticking is not frozen.
    |Category
 
    |VarInt Enum
{| class="wikitable" {{added}}
    |Building = 0, Redstone = 1, Equipment = 2, Misc = 3
! Packet ID
    |}
! State
! Bound To
! Field Name
! Field Type
! Notes
  |-
  |-
  | <code>minecraft:crafting_special_bookcloning</code>
  | 0x6F
  | Recipe for copying contents of written books
  | Play
  |-
  | Client
  | <code>minecraft:crafting_special_mapcloning</code>
  | Tick steps
  | Recipe for copying maps
  | VarInt
|
|}
 
==== Update Recipes ====
 
{| class="wikitable"
! Packet ID
! State
! Bound To
! colspan="2"| Field Name
! colspan="2"| Field Type
! Notes
  |-
  |-
  | <code>minecraft:crafting_special_mapextending</code>
  | rowspan="4"| {{change|0x6F|0x73}}
  | Recipe for adding paper to maps
| rowspan="4"| Play
| rowspan="4"| Client
| colspan="2"| Num Recipes
| colspan="2"| VarInt
  | Number of elements in the following array.
  |-
  |-
  | <code>minecraft:crafting_special_firework_rocket</code>
  | rowspan="3"| Recipe
  | Recipe for making firework rockets
  | Type
| rowspan="3"| Array
| Identifier
| The recipe type, see below.
  |-
  |-
  | <code>minecraft:crafting_special_firework_star</code>
  | Recipe ID
  | Recipe for making firework stars
| Identifier
  |
  |-
  |-
  | <code>minecraft:crafting_special_firework_star_fade</code>
  | Data
  | Recipe for making firework stars fade between multiple colors
| Varies
| Additional data for the recipe.
  |}
 
Recipe types:
 
{| class="wikitable"
! Type
! Description
! Data
  |-
  |-
  | <code>minecraft:crafting_special_repairitem</code>
  | <code>minecraft:crafting_shapeless</code>
  | Recipe for repairing items via crafting
  | Shapeless crafting recipe. All items in the ingredient list must be present, but in any order/slot.
|-
  | As follows:
| <code>minecraft:crafting_special_tippedarrow</code>
   {| class="wikitable"
| Recipe for crafting tipped arrows
     ! Name
|-
| <code>minecraft:crafting_special_bannerduplicate</code>
| Recipe for copying banner patterns
|-
| <code>minecraft:crafting_special_shielddecoration</code>
| Recipe for applying a banner's pattern to a shield
  |-
| <code>minecraft:crafting_special_shulkerboxcoloring</code>
| Recipe for recoloring a shulker box
|-
| <code>minecraft:crafting_special_suspiciousstew</code>
| Recipe for crafting suspicious stews
|-
| <code>minecraft:crafting_decorated_pot</code>
| Recipe for crafting decorated pots
|-
| <code>minecraft:smelting</code>
| Smelting recipe
| rowspan="4"| As follows:
   {| class="wikitable"
     ! Name
     ! Type
     ! Type
     ! Description
     ! Description
Line 1,579: Line 1,631:
     | Group
     | Group
     | String (32767)
     | String (32767)
     | Used to group similar recipes together in the recipe book.
     | Used to group similar recipes together in the recipe book. Tag is present in recipe JSON.
     |-
     |-
     |Category
     |Category
     |VarInt Enum
     |VarInt Enum
     |Food = 0, Blocks = 1, Misc = 2
     |Building = 0, Redstone = 1, Equipment = 2, Misc = 3
     |-
     |-
     | Ingredient
     | Ingredient count
     | Ingredient
     | VarInt
    | Number of elements in the following array.
    |-
    | Ingredients
    | Array of Ingredient.
     |
     |
     |-
     |-
     | Result
     | Result
     | [[Slot]]
     | [[Slot]]
    |
    |-
    | Experience
    | Float
    |
    |-
    | Cooking time
    | VarInt
     |
     |
     |}
     |}
  |-
  |-
  | <code>minecraft:blasting</code>
  | <code>minecraft:crafting_shaped</code>
  | Blast furnace recipe
  | Shaped crafting recipe. All items must be present in the same pattern (which may be flipped horizontally or translated).
|-
| <code>minecraft:smoking</code>
| Smoker recipe
|-
| <code>minecraft:campfire_cooking</code>
| Campfire recipe
|-
| <code>minecraft:stonecutting</code>
| Stonecutter recipe
  | As follows:
  | As follows:
   {| class="wikitable"
   {| class="wikitable"
Line 1,618: Line 1,657:
     ! Type
     ! Type
     ! Description
     ! Description
     |-
    |- {{removed}}
    | Width
    | VarInt
    |
    |- {{removed}}
    | Height
    | VarInt
    |
     |-
     | Group
     | Group
     | String (32767)
     | String (32767)
     | Used to group similar recipes together in the recipe book. Tag is present in recipe JSON.
     | Used to group similar recipes together in the recipe book. Tag is present in recipe JSON.
     |-
     |-
     | Ingredient
     |Category
     | Ingredient
     |VarInt Enum
    |Building = 0, Redstone = 1, Equipment = 2, Misc = 3
    |- {{added}}
    | Width
    | VarInt
    |
    |- {{added}}
    | Height
    | VarInt
     |
     |
    |-
    | Ingredients
    | Array of Ingredient
    | Length is <code>width * height</code>. Indexed by <code>x + (y * width)</code>.
     |-
     |-
     | Result
     | Result
     | [[Slot]]
     | [[Slot]]
     |
     |-
    | Show notification
    | Boolean
    | Show a toast when the recipe is [[Protocol#Update_Recipe_Book|added]].
     |}
     |}
  |-
  |-
  | <code>minecraft:smithing_transform</code>
  | <code>minecraft:crafting_special_armordye</code>
  | Recipe for smithing netherite gear
  | Recipe for dying leather armor
  | As follows:
  | rowspan="14" | As follows:
   {| class="wikitable"
   {| class="wikitable"
     ! Name
     ! Name
Line 1,640: Line 1,702:
     ! Description
     ! Description
     |-
     |-
     | Template
     |Category
     | Ingredient
     |VarInt Enum
    | The smithing template.
     |Building = 0, Redstone = 1, Equipment = 2, Misc = 3
    |-
    | Base
    | Ingredient
    | The base item.
    |-
    | Addition
    | Ingredient
    | The additional ingredient.
    |-
    | Result
    | [[Slot]]
     |
     |}
     |}
  |-
  |-
  | <code>minecraft:smithing_trim</code>
  | <code>minecraft:crafting_special_bookcloning</code>
  | Recipe for applying armor trims
  | Recipe for copying contents of written books
  | As follows:
  |-
  {| class="wikitable"
| <code>minecraft:crafting_special_mapcloning</code>
    ! Name
| Recipe for copying maps
    ! Type
|-
    ! Description
| <code>minecraft:crafting_special_mapextending</code>
    |-
| Recipe for adding paper to maps
    | Template
|-
    | Ingredient
| <code>minecraft:crafting_special_firework_rocket</code>
    | The smithing template.
| Recipe for making firework rockets
    |-
|-
    | Base
| <code>minecraft:crafting_special_firework_star</code>
    | Ingredient
| Recipe for making firework stars
    | The base item.
|-
    |-
  | <code>minecraft:crafting_special_firework_star_fade</code>
    | Addition
| Recipe for making firework stars fade between multiple colors
    | Ingredient
  |-
    | The additional ingredient.
  | <code>minecraft:crafting_special_repairitem</code>
    |}
  | Recipe for repairing items via crafting
  |}
 
Ingredient is defined as:
 
{| class="wikitable"
  ! Name
  ! Type
  ! Description
  |-
  |-
  | Count
  | <code>minecraft:crafting_special_tippedarrow</code>
  | VarInt
  | Recipe for crafting tipped arrows
| Number of elements in the following array.
  |-
  |-
  | Items
  | <code>minecraft:crafting_special_bannerduplicate</code>
  | Array of [[Slot]]
  | Recipe for copying banner patterns
| Any item in this array may be used for the recipe.  The count of each item should be 1.
|}
 
=== Serverbound ===
 
==== Change Container Slot State ====
 
This packet is sent by the client when toggling the state of a Crafter.
 
{| class="wikitable" {{added}}
! Packet ID
! State
! Bound To
! Field Name
! Field Type
! Notes
  |-
  |-
  | rowspan="3"| 0x0F
  | <code>minecraft:crafting_special_shielddecoration</code>
| rowspan="3"| Play
  | Recipe for applying a banner's pattern to a shield
| rowspan="3"| Server
| Slot ID
| VarInt
  | This is the ID of the slot that was changed.
  |-
  |-
  | Window ID
  | <code>minecraft:crafting_special_shulkerboxcoloring</code>
  | VarInt
  | Recipe for recoloring a shulker box
  | This is the ID of the window that was changed.
  |-
| <code>minecraft:crafting_special_suspiciousstew</code>
| Recipe for crafting suspicious stews
|-
| <code>minecraft:crafting_decorated_pot</code>
| Recipe for crafting decorated pots
  |-
  |-
  | State
| <code>minecraft:smelting</code>
  | Boolean
| Smelting recipe
| rowspan="4"| As follows:
  {| class="wikitable"
    ! Name
    ! Type
    ! Description
    |-
    | Group
    | String (32767)
    | Used to group similar recipes together in the recipe book.
    |-
    |Category
    |VarInt Enum
    |Food = 0, Blocks = 1, Misc = 2
    |-
    | Ingredient
    | Ingredient
    |
    |-
    | Result
    | [[Slot]]
    |
    |-
    | Experience
    | Float
    |
    |-
    | Cooking time
    | VarInt
    |
    |}
|-
| <code>minecraft:blasting</code>
| Blast furnace recipe
|-
| <code>minecraft:smoking</code>
| Smoker recipe
|-
| <code>minecraft:campfire_cooking</code>
| Campfire recipe
|-
| <code>minecraft:stonecutting</code>
| Stonecutter recipe
| As follows:
  {| class="wikitable"
    ! Name
    ! Type
    ! Description
    |-
    | Group
    | String (32767)
    | Used to group similar recipes together in the recipe book.  Tag is present in recipe JSON.
    |-
    | Ingredient
    | Ingredient
    |
    |-
    | Result
    | [[Slot]]
    |
    |}
|-
| <code>minecraft:smithing_transform</code>
| Recipe for smithing netherite gear
| As follows:
  {| class="wikitable"
    ! Name
    ! Type
    ! Description
    |-
    | Template
    | Ingredient
    | The smithing template.
    |-
    | Base
    | Ingredient
    | The base item.
    |-
    | Addition
    | Ingredient
    | The additional ingredient.
    |-
    | Result
    | [[Slot]]
    |
    |}
|-
| <code>minecraft:smithing_trim</code>
| Recipe for applying armor trims
| As follows:
  {| class="wikitable"
    ! Name
    ! Type
    ! Description
    |-
    | Template
    | Ingredient
    | The smithing template.
    |-
    | Base
    | Ingredient
    | The base item.
    |-
    | Addition
    | Ingredient
    | The additional ingredient.
    |}
|}
 
Ingredient is defined as:
 
{| class="wikitable"
! Name
! Type
! Description
|-
| Count
| VarInt
| Number of elements in the following array.
|-
| Items
| Array of [[Slot]]
| Any item in this array may be used for the recipe.  The count of each item should be 1.
|}
 
=== Serverbound ===
 
==== Change Container Slot State ====
 
This packet is sent by the client when toggling the state of a Crafter.
 
{| class="wikitable" {{added}}
! Packet ID
! State
! Bound To
! Field Name
! Field Type
! Notes
|-
| rowspan="3"| 0x0F
| rowspan="3"| Play
| rowspan="3"| Server
| Slot ID
| VarInt
| This is the ID of the slot that was changed.
|-
| Window ID
| VarInt
| This is the ID of the window that was changed.
|-
  | State
  | Boolean
  | The new state of the slot. True for enabled, false for disabled.
  | The new state of the slot. True for enabled, false for disabled.
|}
==== Resource Pack Response (play) ====
{| class="wikitable"
! Packet ID
! State
! Bound To
! Field Name
! Field Type
! Notes
|-
| rowspan="3" | 0x27
| rowspan="3" | Play
| rowspan="3" | Server
|- {{added}}
| UUID
| UUID
| The unique identifier of the resource pack received in the [[#Add_Resource_Pack_(play)|Add Resource Pack (play)]] request.
|-
| Result
| VarInt Enum
| {{change|0: successfully loaded, 1: declined, 2: failed download, 3: accepted.|Result ID (see below).}}
|}
Result can be one of the following values:
{| class="wikitable" {{added}}
! ID
! Result
|-
| 0
| Successfully downloaded
|-
| 1
| Declined
|-
| 2
| Failed to download
|-
| 3
| Accepted
|-
| 4
| Invalid URL
|-
| 5
| Failed to reload
|-
| 6
| Discarded
  |}
  |}



Revision as of 16:15, 21 November 2023

This page documents the changes from the last stable Minecraft release (currently 1.20.2, protocol 764) to the current pre-release (currently 1.20.3-pre1, protocol Snapshot {{#expr: 1073741988 - 1073741824}}). Note that this page contains bleeding-edge information that may not be completely or correctly documented.

One who wishes to commandeer the merging of this into Protocol when an update is made must be sure to respect any changes that may have occurred to the respective packets there.

Contents

Data types

NBT

The NBT specification was changed so that the root tag is no longer required to be a Compound Tag when sent over the network.

Presently in the pre-release, only Compound Tag and String Tag types are used as root, but the Notchian server/client implementation is able to handle NBT Tags of any type.

Chat

The Chat type is now serialized as a NBT Tag instead of a JSON String, unless explicitly stated otherwise.

Name Size (bytes) Encodes Notes
Chat ≥ 1
≤ (262144×4) + 3
See Chat Encoded as a String with max length of 262144.
Chat Varies See Chat Encoded as a NBT Tag, with the type of tag used depending on the case:
  • As a String Tag: For components only containing text (no styling, no events etc.).
  • As a Compound Tag: Every other case.

This affects the following packets and data types containing Chat fields:



However, the following are NOT affected, as to maintain backwards compatibility with older versions:

Particle

Particle Name Particle ID Data
minecraft:ambient_entity_effect 0 None
minecraft:angry_villager 1 None
minecraft:block 2
Field Name Field Type Meaning
BlockState VarInt The ID of the block state.
minecraft:block_marker 3
Field Name Field Type Meaning
BlockState VarInt The ID of the block state.
minecraft:bubble 4 None
minecraft:cloud 5 None
minecraft:crit 6 None
minecraft:damage_indicator 7 None
minecraft:dragon_breath 8 None
minecraft:dripping_lava 9 None
minecraft:falling_lava 10 None
minecraft:landing_lava 11 None
minecraft:dripping_water 12 None
minecraft:falling_water 13 None
minecraft:dust 14
Field Name Field Type Meaning
Red Float The red RGB value, between 0 and 1. Divide actual RGB value by 255.
Green Float The green RGB value, between 0 and 1. Divide actual RGB value by 255.
Blue Float The blue RGB value, between 0 and 1. Divide actual RGB value by 255.
Scale Float The scale, will be clamped between 0.01 and 4.
minecraft:dust_color_transition 15
Field Name Field Type Meaning
From Red Float The start red RGB value, between 0 and 1. Divide actual RGB value by 255.
From Green Float The start green RGB value, between 0 and 1. Divide actual RGB value by 255.
From Blue Float The start blue RGB value, between 0 and 1. Divide actual RGB value by 255.
Scale Float The scale, will be clamped between 0.01 and 4.
To Red Float The end red RGB value, between 0 and 1. Divide actual RGB value by 255.
To Green Float The end green RGB value, between 0 and 1. Divide actual RGB value by 255.
To Blue Float The end blue RGB value, between 0 and 1. Divide actual RGB value by 255.
minecraft:effect 16 None
minecraft:elder_guardian 17 None
minecraft:enchanted_hit 18 None
minecraft:enchant 19 None
minecraft:end_rod 20 None
minecraft:entity_effect 21 None
minecraft:explosion_emitter 22 None
minecraft:explosion 23 None
minecraft:gust 24 None
minecraft:gust_emitter 25 None
minecraft:sonic_boom 24}}{{#if:26|{{#if:24| }}26}} None
minecraft:falling_dust 25}}{{#if:27|{{#if:25| }}27}}
Field Name Field Type Meaning
BlockState VarInt The ID of the block state.
minecraft:firework 26}}{{#if:28|{{#if:26| }}28}} None
minecraft:fishing 27}}{{#if:29|{{#if:27| }}29}} None
minecraft:flame 28}}{{#if:30|{{#if:28| }}30}} None
minecraft:cherry_leaves 29}}{{#if:31|{{#if:29| }}31}} None
minecraft:sculk_soul 30}}{{#if:32|{{#if:30| }}32}} None
minecraft:sculk_charge 31}}{{#if:33|{{#if:31| }}33}}
Field Name Field Type Meaning
Roll Float How much the particle will be rotated when displayed.
minecraft:sculk_charge_pop 32}}{{#if:34|{{#if:32| }}34}} None
minecraft:soul_fire_flame 33}}{{#if:35|{{#if:33| }}35}} None
minecraft:soul 34}}{{#if:36|{{#if:34| }}36}} None
minecraft:flash 35}}{{#if:37|{{#if:35| }}37}} None
minecraft:happy_villager 36}}{{#if:38|{{#if:36| }}38}} None
minecraft:composter 37}}{{#if:39|{{#if:37| }}39}} None
minecraft:heart 38}}{{#if:40|{{#if:38| }}40}} None
minecraft:instant_effect 39}}{{#if:41|{{#if:39| }}41}} None
minecraft:item 40}}{{#if:42|{{#if:40| }}42}}
Field Name Field Type Meaning
Item Slot The item that will be used.
minecraft:vibration 41}}{{#if:43|{{#if:41| }}43}}
Field Name Field Type Meaning
Position Source Type Identifier The type of the vibration source
Block Position Position The position of the block the vibration originated from. Only present if Position Type is minecraft:block.
Entity ID VarInt The ID of the entity the vibration originated from. Only present if Position Type is minecraft:entity.
Entity eye height Float The height of the entity's eye relative to the entity. Only present if Position Type is minecraft:entity.
Ticks VarInt The amount of ticks it takes for the vibration to travel from its source to its destination.
minecraft:item_slime 42}}{{#if:44|{{#if:42| }}44}} None
minecraft:item_snowball 43}}{{#if:45|{{#if:43| }}45}} None
minecraft:large_smoke 44}}{{#if:46|{{#if:44| }}46}} None
minecraft:lava 45}}{{#if:47|{{#if:45| }}47}} None
minecraft:mycelium 46}}{{#if:48|{{#if:46| }}48}} None
minecraft:note 47}}{{#if:49|{{#if:47| }}49}} None
minecraft:poof 48}}{{#if:50|{{#if:48| }}50}} None
minecraft:portal 49}}{{#if:51|{{#if:49| }}51}} None
minecraft:rain 50}}{{#if:52|{{#if:50| }}52}} None
minecraft:smoke 51}}{{#if:53|{{#if:51| }}53}} None
minecraft:white_smoke 54 None
minecraft:sneeze 52}}{{#if:55|{{#if:52| }}55}} None
minecraft:spit 53}}{{#if:56|{{#if:53| }}56}} None
minecraft:squid_ink 54}}{{#if:57|{{#if:54| }}57}} None
minecraft:sweep_attack 55}}{{#if:58|{{#if:55| }}58}} None
minecraft:totem_of_undying 56}}{{#if:59|{{#if:56| }}59}} None
minecraft:underwater 57}}{{#if:60|{{#if:57| }}60}} None
minecraft:splash 58}}{{#if:61|{{#if:58| }}61}} None
minecraft:witch 59}}{{#if:62|{{#if:59| }}62}} None
minecraft:bubble_pop 60}}{{#if:63|{{#if:60| }}63}} None
minecraft:current_down 61}}{{#if:64|{{#if:61| }}64}} None
minecraft:bubble_column_up 62}}{{#if:65|{{#if:62| }}65}} None
minecraft:nautilus 63}}{{#if:66|{{#if:63| }}66}} None
minecraft:dolphin 64}}{{#if:67|{{#if:64| }}67}} None
minecraft:campfire_cosy_smoke 65}}{{#if:68|{{#if:65| }}68}} None
minecraft:campfire_signal_smoke 66}}{{#if:69|{{#if:66| }}69}} None
minecraft:dripping_honey 67}}{{#if:70|{{#if:67| }}70}} None
minecraft:falling_honey 68}}{{#if:71|{{#if:68| }}71}} None
minecraft:landing_honey 69}}{{#if:72|{{#if:69| }}72}} None
minecraft:falling_nectar 70}}{{#if:73|{{#if:70| }}73}} None
minecraft:falling_spore_blossom 71}}{{#if:74|{{#if:71| }}74}} None
minecraft:ash 72}}{{#if:75|{{#if:72| }}75}} None
minecraft:crimson_spore 73}}{{#if:76|{{#if:73| }}76}} None
minecraft:warped_spore 74}}{{#if:77|{{#if:74| }}77}} None
minecraft:spore_blossom_air 75}}{{#if:78|{{#if:75| }}78}} None
minecraft:dripping_obsidian_tear 76}}{{#if:79|{{#if:76| }}79}} None
minecraft:falling_obsidian_tear 77}}{{#if:80|{{#if:77| }}80}} None
minecraft:landing_obsidian_tear 78}}{{#if:81|{{#if:78| }}81}} None
minecraft:reverse_portal 79}}{{#if:82|{{#if:79| }}82}} None
minecraft:white_ash 80}}{{#if:83|{{#if:80| }}83}} None
minecraft:small_flame 81}}{{#if:84|{{#if:81| }}84}} None
minecraft:snowflake 82}}{{#if:85|{{#if:82| }}85}} None
minecraft:dripping_dripstone_lava 83}}{{#if:86|{{#if:83| }}86}} None
minecraft:falling_dripstone_lava 84}}{{#if:87|{{#if:84| }}87}} None
minecraft:dripping_dripstone_water 85}}{{#if:88|{{#if:85| }}88}} None
minecraft:falling_dripstone_water 86}}{{#if:89|{{#if:86| }}89}} None
minecraft:glow_squid_ink 87}}{{#if:90|{{#if:87| }}90}} None
minecraft:glow 88}}{{#if:91|{{#if:88| }}91}} None
minecraft:wax_on 89}}{{#if:92|{{#if:89| }}92}} None
minecraft:wax_off 90}}{{#if:93|{{#if:90| }}93}} None
minecraft:electric_spark 91}}{{#if:94|{{#if:91| }}94}} None
minecraft:scrape 92}}{{#if:95|{{#if:92| }}95}} None
minecraft:shriek 93}}{{#if:96|{{#if:93| }}96}}
Field Name Field Type Meaning
Delay VarInt The time in ticks before the particle is displayed
minecraft:egg_crack 94}}{{#if:97|{{#if:94| }}97}} None
minecraft:dust_plume 98 None
minecraft:gust_dust 99 None
minecraft:trial_spawner_detection 100 None

Packets

ID Packet name Documentation
Configuration clientbound
0x06 Resource Pack (configuration) added Current }} removed unchanged | (unchanged) | Pre }} }}
0x06 Add Resource Pack (configuration) added Current }} removed unchanged | (unchanged) | Pre }} }}
0x07 Remove Resource Pack (configuration) added Current }} removed unchanged | (unchanged) | Pre }} }}
0x07}}{{#if:0x08|{{#if:0x07| }}0x08}} Feature Flags added Current }} removed unchanged | (unchanged) | Pre }} }}
Configuration serverbound
0x05 Resource Pack Response (configuration) added Current }} removed unchanged | (unchanged) | Pre }} }}
Play clientbound
0x1E Explosion added Current }} removed unchanged | (unchanged) | Pre }} }}
0x20 Game Event added Current }} removed unchanged | (unchanged) | Pre }} }}
0x42 Reset Score added Current }} removed unchanged | (unchanged) | Pre }} }}
0x42 Resource Pack (play) added Current }} removed unchanged | (unchanged) | Pre }} }}
0x43 Add Resource Pack (play) added Current }} removed unchanged | (unchanged) | Pre }} }}
0x44 Remove Resource Pack (play) added Current }} removed unchanged | (unchanged) | Pre }} }}
0x43}}{{#if:0x45|{{#if:0x43| }}0x45}} Respawn added Current }} removed unchanged | (unchanged) | Pre }} }}
0x44}}{{#if:0x46|{{#if:0x44| }}0x46}} Set Head Rotation added Current }} removed unchanged | (unchanged) | Pre }} }}
0x45}}{{#if:0x47|{{#if:0x45| }}0x47}} Update Section Blocks added Current }} removed unchanged | (unchanged) | Pre }} }}
0x46}}{{#if:0x48|{{#if:0x46| }}0x48}} Select Advancements Tab added Current }} removed unchanged | (unchanged) | Pre }} }}
0x47}}{{#if:0x49|{{#if:0x47| }}0x49}} Server Data added Current }} removed unchanged | (unchanged) | Pre }} }}
0x48}}{{#if:0x4A|{{#if:0x48| }}0x4A}} Set Action Bar Text added Current }} removed unchanged | (unchanged) | Pre }} }}
0x49}}{{#if:0x4B|{{#if:0x49| }}0x4B}} Set Border Center added Current }} removed unchanged | (unchanged) | Pre }} }}
0x4A}}{{#if:0x4C|{{#if:0x4A| }}0x4C}} Set Border Lerp Size added Current }} removed unchanged | (unchanged) | Pre }} }}
0x4B}}{{#if:0x4D|{{#if:0x4B| }}0x4D}} Set Border Size added Current }} removed unchanged | (unchanged) | Pre }} }}
0x4C}}{{#if:0x4E|{{#if:0x4C| }}0x4E}} Set Border Warning Delay added Current }} removed unchanged | (unchanged) | Pre }} }}
0x4D}}{{#if:0x4F|{{#if:0x4D| }}0x4F}} Set Border Warning Distance added Current }} removed unchanged | (unchanged) | Pre }} }}
0x4E}}{{#if:0x50|{{#if:0x4E| }}0x50}} Set Camera added Current }} removed unchanged | (unchanged) | Pre }} }}
0x4F}}{{#if:0x51|{{#if:0x4F| }}0x51}} Set Held Item added Current }} removed unchanged | (unchanged) | Pre }} }}
0x50}}{{#if:0x52|{{#if:0x50| }}0x52}} Set Center Chunk added Current }} removed unchanged | (unchanged) | Pre }} }}
0x51}}{{#if:0x53|{{#if:0x51| }}0x53}} Set Render Distance added Current }} removed unchanged | (unchanged) | Pre }} }}
0x52}}{{#if:0x54|{{#if:0x52| }}0x54}} Set Default Spawn Position added Current }} removed unchanged | (unchanged) | Pre }} }}
0x53}}{{#if:0x55|{{#if:0x53| }}0x55}} Display Objective added Current }} removed unchanged | (unchanged) | Pre }} }}
0x54}}{{#if:0x56|{{#if:0x54| }}0x56}} Set Entity Metadata added Current }} removed unchanged | (unchanged) | Pre }} }}
0x55}}{{#if:0x57|{{#if:0x55| }}0x57}} Link Entities added Current }} removed unchanged | (unchanged) | Pre }} }}
0x56}}{{#if:0x58|{{#if:0x56| }}0x58}} Set Entity Velocity added Current }} removed unchanged | (unchanged) | Pre }} }}
0x57}}{{#if:0x59|{{#if:0x57| }}0x59}} Set Equipment added Current }} removed unchanged | (unchanged) | Pre }} }}
0x58}}{{#if:0x5A|{{#if:0x58| }}0x5A}} Set Experience added Current }} removed unchanged | (unchanged) | Pre }} }}
0x59}}{{#if:0x5B|{{#if:0x59| }}0x5B}} Set Health added Current }} removed unchanged | (unchanged) | Pre }} }}
0x5A}}{{#if:0x5C|{{#if:0x5A| }}0x5C}} Update Objectives added Current }} removed unchanged | (unchanged) | Pre }} }}
0x5B}}{{#if:0x5D|{{#if:0x5B| }}0x5D}} Set Passengers added Current }} removed unchanged | (unchanged) | Pre }} }}
0x5C}}{{#if:0x5E|{{#if:0x5C| }}0x5E}} Update Teams added Current }} removed unchanged | (unchanged) | Pre }} }}
0x5D}}{{#if:0x5F|{{#if:0x5D| }}0x5F}} Update Score added Current }} removed unchanged | (unchanged) | Pre }} }}
0x5E}}{{#if:0x60|{{#if:0x5E| }}0x60}} Set Simulation Distance added Current }} removed unchanged | (unchanged) | Pre }} }}
0x5F}}{{#if:0x61|{{#if:0x5F| }}0x61}} Set Subtitle Text added Current }} removed unchanged | (unchanged) | Pre }} }}
0x60}}{{#if:0x62|{{#if:0x60| }}0x62}} Update Time added Current }} removed unchanged | (unchanged) | Pre }} }}
0x61}}{{#if:0x63|{{#if:0x61| }}0x63}} Set Title Text added Current }} removed unchanged | (unchanged) | Pre }} }}
0x62}}{{#if:0x64|{{#if:0x62| }}0x64}} Set Title Animation Times added Current }} removed unchanged | (unchanged) | Pre }} }}
0x63}}{{#if:0x65|{{#if:0x63| }}0x65}} Entity Sound Effect added Current }} removed unchanged | (unchanged) | Pre }} }}
0x64}}{{#if:0x66|{{#if:0x64| }}0x66}} Sound Effect added Current }} removed unchanged | (unchanged) | Pre }} }}
0x65}}{{#if:0x67|{{#if:0x65| }}0x67}} Start Configuration added Current }} removed unchanged | (unchanged) | Pre }} }}
0x66}}{{#if:0x68|{{#if:0x66| }}0x68}} Stop Sound added Current }} removed unchanged | (unchanged) | Pre }} }}
0x67}}{{#if:0x69|{{#if:0x67| }}0x69}} System Chat Message added Current }} removed unchanged | (unchanged) | Pre }} }}
0x68}}{{#if:0x6A|{{#if:0x68| }}0x6A}} Set Tab List Header And Footer added Current }} removed unchanged | (unchanged) | Pre }} }}
0x69}}{{#if:0x6B|{{#if:0x69| }}0x6B}} Tag Query Response added Current }} removed unchanged | (unchanged) | Pre }} }}
0x6A}}{{#if:0x6C|{{#if:0x6A| }}0x6C}} Pickup Item added Current }} removed unchanged | (unchanged) | Pre }} }}
0x6B}}{{#if:0x6D|{{#if:0x6B| }}0x6D}} Teleport Entity added Current }} removed unchanged | (unchanged) | Pre }} }}
0x6E Set Ticking State added Current }} removed unchanged | (unchanged) | Pre }} }}
0x6F Step Tick added Current }} removed unchanged | (unchanged) | Pre }} }}
0x6C}}{{#if:0x70|{{#if:0x6C| }}0x70}} Update Advancements added Current }} removed unchanged | (unchanged) | Pre }} }}
0x6D}}{{#if:0x71|{{#if:0x6D| }}0x71}} Update Attributes added Current }} removed unchanged | (unchanged) | Pre }} }}
0x6E}}{{#if:0x72|{{#if:0x6E| }}0x72}} Entity Effect added Current }} removed unchanged | (unchanged) | Pre }} }}
0x6F}}{{#if:0x73|{{#if:0x6F| }}0x73}} Update Recipes added Current }} removed unchanged | (unchanged) | Pre }} }}
0x70}}{{#if:0x74|{{#if:0x70| }}0x74}} Update Tags added Current }} removed unchanged | (unchanged) | Pre }} }}
Play serverbound
0x0F Change Container Slot State added Current }} removed unchanged | (unchanged) | Pre }} }}
0x0F}}{{#if:0x10|{{#if:0x0F| }}0x10}} Serverbound Plugin Message (play) added Current }} removed unchanged | (unchanged) | Pre }} }}
0x10}}{{#if:0x11|{{#if:0x10| }}0x11}} Edit Book added Current }} removed unchanged | (unchanged) | Pre }} }}
0x11}}{{#if:0x12|{{#if:0x11| }}0x12}} Query Entity Tag added Current }} removed unchanged | (unchanged) | Pre }} }}
0x12}}{{#if:0x13|{{#if:0x12| }}0x13}} Interact added Current }} removed unchanged | (unchanged) | Pre }} }}
0x13}}{{#if:0x14|{{#if:0x13| }}0x14}} Jigsaw Generate added Current }} removed unchanged | (unchanged) | Pre }} }}
0x14}}{{#if:0x15|{{#if:0x14| }}0x15}} Serverbound Keep Alive (play) added Current }} removed unchanged | (unchanged) | Pre }} }}
0x15}}{{#if:0x16|{{#if:0x15| }}0x16}} Lock Difficulty added Current }} removed unchanged | (unchanged) | Pre }} }}
0x16}}{{#if:0x17|{{#if:0x16| }}0x17}} Set Player Position added Current }} removed unchanged | (unchanged) | Pre }} }}
0x17}}{{#if:0x18|{{#if:0x17| }}0x18}} Set Player Position and Rotation added Current }} removed unchanged | (unchanged) | Pre }} }}
0x18}}{{#if:0x19|{{#if:0x18| }}0x19}} Set Player Rotation added Current }} removed unchanged | (unchanged) | Pre }} }}
0x19}}{{#if:0x1A|{{#if:0x19| }}0x1A}} Set Player On Ground added Current }} removed unchanged | (unchanged) | Pre }} }}
0x1A}}{{#if:0x1B|{{#if:0x1A| }}0x1B}} Move Vehicle added Current }} removed unchanged | (unchanged) | Pre }} }}
0x1B}}{{#if:0x1C|{{#if:0x1B| }}0x1C}} Paddle Boat added Current }} removed unchanged | (unchanged) | Pre }} }}
0x1C}}{{#if:0x1D|{{#if:0x1C| }}0x1D}} Pick Item added Current }} removed unchanged | (unchanged) | Pre }} }}
0x1D}}{{#if:0x1E|{{#if:0x1D| }}0x1E}} Ping Request (play) added Current }} removed unchanged | (unchanged) | Pre }} }}
0x1E}}{{#if:0x1F|{{#if:0x1E| }}0x1F}} Place Recipe added Current }} removed unchanged | (unchanged) | Pre }} }}
0x1F}}{{#if:0x20|{{#if:0x1F| }}0x20}} Player Abilities added Current }} removed unchanged | (unchanged) | Pre }} }}
0x20}}{{#if:0x21|{{#if:0x20| }}0x21}} Player Action added Current }} removed unchanged | (unchanged) | Pre }} }}
0x21}}{{#if:0x22|{{#if:0x21| }}0x22}} Player Command added Current }} removed unchanged | (unchanged) | Pre }} }}
0x22}}{{#if:0x23|{{#if:0x22| }}0x23}} Player Input added Current }} removed unchanged | (unchanged) | Pre }} }}
0x23}}{{#if:0x24|{{#if:0x23| }}0x24}} Pong (play) added Current }} removed unchanged | (unchanged) | Pre }} }}
0x24}}{{#if:0x25|{{#if:0x24| }}0x25}} Change Recipe Book Settings added Current }} removed unchanged | (unchanged) | Pre }} }}
0x25}}{{#if:0x26|{{#if:0x25| }}0x26}} Set Seen Recipe added Current }} removed unchanged | (unchanged) | Pre }} }}
0x26}}{{#if:0x27|{{#if:0x26| }}0x27}} Rename Item added Current }} removed unchanged | (unchanged) | Pre }} }}
0x27}}{{#if:0x28|{{#if:0x27| }}0x28}} Resource Pack Response (play) added Current }} removed unchanged | (unchanged) | Pre }} }}
0x28}}{{#if:0x29|{{#if:0x28| }}0x29}} Seen Advancements added Current }} removed unchanged | (unchanged) | Pre }} }}
0x29}}{{#if:0x2A|{{#if:0x29| }}0x2A}} Select Trade added Current }} removed unchanged | (unchanged) | Pre }} }}
0x2A}}{{#if:0x2B|{{#if:0x2A| }}0x2B}} Set Beacon Effect added Current }} removed unchanged | (unchanged) | Pre }} }}
0x2B}}{{#if:0x2C|{{#if:0x2B| }}0x2C}} Set Held Item added Current }} removed unchanged | (unchanged) | Pre }} }}
0x2C}}{{#if:0x2D|{{#if:0x2C| }}0x2D}} Program Command Block added Current }} removed unchanged | (unchanged) | Pre }} }}
0x2D}}{{#if:0x2E|{{#if:0x2D| }}0x2E}} Program Command Block Minecart added Current }} removed unchanged | (unchanged) | Pre }} }}
0x2E}}{{#if:0x2F|{{#if:0x2E| }}0x2F}} Set Creative Mode Slot added Current }} removed unchanged | (unchanged) | Pre }} }}
0x2F}}{{#if:0x30|{{#if:0x2F| }}0x30}} Program Jigsaw Block added Current }} removed unchanged | (unchanged) | Pre }} }}
0x30}}{{#if:0x31|{{#if:0x30| }}0x31}} Program Structure Block added Current }} removed unchanged | (unchanged) | Pre }} }}
0x31}}{{#if:0x32|{{#if:0x31| }}0x32}} Update Sign added Current }} removed unchanged | (unchanged) | Pre }} }}
0x32}}{{#if:0x33|{{#if:0x32| }}0x33}} Swing Arm added Current }} removed unchanged | (unchanged) | Pre }} }}
0x33}}{{#if:0x34|{{#if:0x33| }}0x34}} Teleport To Entity added Current }} removed unchanged | (unchanged) | Pre }} }}
0x34}}{{#if:0x35|{{#if:0x34| }}0x35}} Use Item On added Current }} removed unchanged | (unchanged) | Pre }} }}
0x35}}{{#if:0x36|{{#if:0x35| }}0x36}} Use Item added Current }} removed unchanged | (unchanged) | Pre }} }}

New/modified data types

No changes so far.

Entity Metadata

Type (VarInt Enum) Value (Varies) Notes
0 Byte
1 VarInt
2 VarLong
3 Float
4 String
5 Chat
6 OptChat (Boolean + Chat) Chat is present if the Boolean is set to true
7 Slot
8 Boolean
9 Rotation 3 Floats: rotation on x, rotation on y, rotation on z
10 Position
11 OptPosition (Boolean + Position) Position is present if the Boolean is set to true
12 Direction (VarInt) (Down = 0, Up = 1, North = 2, South = 3, West = 4, East = 5)
13 OptUUID (Boolean + UUID) UUID is present if the Boolean is set to true
14 BlockID (VarInt)
15 OptBlockID (VarInt) 0 for absent (implies air); otherwise, a block state ID as per the global palette
16 NBT
17 Particle
18 Villager Data 3 VarInts: villager type, villager profession, level
19 OptVarInt 0 for absent; 1 + actual value otherwise. Used for entity IDs.
20 Pose A VarInt enum: 0: STANDING, 1: FALL_FLYING, 2: SLEEPING, 3: SWIMMING, 4: SPIN_ATTACK, 5: SNEAKING, 6: LONG_JUMPING, 7: DYING, 8: CROAKING, 9: USING_TONGUE, 10: SITTING, 11: ROARING, 12: SNIFFING, 13: EMERGING, 14: DIGGING{{#if:|}}{{#if:, 15: SLIDING, 16: SHOOTING, 17: INHALING|{{#if:| }}, 15: SLIDING, 16: SHOOTING, 17: INHALING}}
21 Cat Variant A VarInt that points towards the CAT_VARIANT registry.
22 Frog Variant A VarInt that points towards the FROG_VARIANT registry.
23 OptGlobalPos (Boolean + GlobalPos) GlobalPos consists of a dimension identifier and Position.
24 Painting Variant A VarInt that points towards the PAINTING_VARIANT registry.
25 Sniffer State A VarInt enum: IDLING = 0, FEELING_HAPPY = 1, SCENTING = 2, SNIFFING = 3, SEARCHING = 4, DIGGING = 5, RISING = 6
26 Vector3 3 Floats: x, y, z
27 Quaternion 4 Floats: x, y, z, w

Abstract Vehicle

{{#if:Abstract Vehicle||Must specify the current entity ID for Template:Metadata inherit}} {{#vardefine:meta_current_entity|Abstract Vehicle}}

{{#if:{{#var:meta_prerelease}}|

   {{#if:Entity
       | {{#if:
           | Extends {{#if:[[{{#varexists:meta_Entity|Entity metadata}}#Entity|Entity]]|[[{{#varexists:meta_Entity|Entity metadata}}#Entity|Entity]]}}{{#if:[[{{#varexists:meta_{{{pre_inherits}}}|Entity metadata}}#{{{pre_inherits}}}|{{{pre_inherits}}}]]|{{#if:[[{{#varexists:meta_Entity|Entity metadata}}#Entity|Entity]]| }}[[{{#varexists:meta_{{{pre_inherits}}}|Entity metadata}}#{{{pre_inherits}}}|{{{pre_inherits}}}]]}}.
           | Extends [[{{#varexists:meta_Entity|Entity metadata}}#Entity|Entity]].
       }}{{#if:8
           | {{#vardefine:meta_Abstract Vehicle|8}}
           {{#if:{{#varexists:meta_Entity}}|start_at in use when inherited entity Entity exists}}
           | {{#vardefine:meta_Abstract Vehicle|{{#var:meta_Entity|0}}}}
           {{#if:{{#varexists:meta_Entity}}||Inherited entity Entity does not exist}}
       }}{{#if:8
           | {{#vardefine:meta_pre_Abstract Vehicle|8}}
           {{#if:{{#varexists:meta_Entity}}|start_at in use when inherited entity Entity exists}}
           | {{#vardefine:meta_pre_Abstract Vehicle|{{#var:meta_pre_Entity|0}}}}
           {{#if:{{#varexists:meta_Entity}}||Inherited entity Entity does not exist}}
       }}
       | The base class.
       {{#vardefine:meta_Abstract Vehicle|8}}
       {{#vardefine:meta_pre_Abstract Vehicle|8}}
   }}

|

   {{#if:Entity
       | Extends Entity.
       {{#if:8
           | {{#vardefine:meta_Abstract Vehicle|8}}
           {{#if:{{#varexists:meta_Entity}}|start_at in use when inherited entity Entity exists}}
           | {{#vardefine:meta_Abstract Vehicle|{{#var:meta_Entity|0}}}}
           {{#if:{{#varexists:meta_Entity}}||Inherited entity Entity does not exist}}
       }}
       | The base class.
       {{#vardefine:meta_Abstract Vehicle|8}}
   }}

}}

Index Type Meaning Default
   {{#vardefine:cur_meta|{{#var:meta_{{#var:meta_current_entity}}}}}}
   {{#vardefine:pre_meta|{{#var:meta_pre_{{#var:meta_current_entity}}}}}}
   {{#switch: 
added =
       {{#if:|}}{{#if:{{#var:pre_meta}}|{{#if:| }}{{#var:pre_meta}}}}
       {{#vardefine:meta_pre_{{#var:meta_current_entity}}|{{#expr:{{#var:pre_meta}}+1}}}}
removed =
       {{#if:{{#var:cur_meta}}|{{#var:cur_meta}}}}{{#if:|{{#if:{{#var:cur_meta}}| }}}}
       {{#vardefine:meta_{{#var:meta_current_entity}}|{{#expr:{{#var:cur_meta}}+1}}}}
=
       {{#ifeq: {{#var:cur_meta}}|{{#var:pre_meta}} | {{#var:cur_meta}} | {{#if:{{#var:cur_meta}}|{{#var:cur_meta}}}}{{#if:{{#var:pre_meta}}|{{#if:{{#var:cur_meta}}| }}{{#var:pre_meta}}}} }}
       {{#vardefine:meta_{{#var:meta_current_entity}}|{{#expr:{{#var:cur_meta}}+1}}}}
       {{#vardefine:meta_pre_{{#var:meta_current_entity}}|{{#expr:{{#var:pre_meta}}+1}}}}
#default =
       Invalid parameter to Template:Metadata id 
   }}
   {{#vardefineecho:cur_meta|{{#var:meta_{{#var:meta_current_entity}}}}}}
   {{#vardefine:meta_{{#var:meta_current_entity}}|{{#expr:{{#var:cur_meta}}+1}}}}
   {{#ifeq: |||Template:Metadata id must be used as {{Metadata id|}} (with an empty first parameter) for technical reasons}}

}}

VarInt Shaking power 0
   {{#vardefine:cur_meta|{{#var:meta_{{#var:meta_current_entity}}}}}}
   {{#vardefine:pre_meta|{{#var:meta_pre_{{#var:meta_current_entity}}}}}}
   {{#switch: 
added =
       {{#if:|}}{{#if:{{#var:pre_meta}}|{{#if:| }}{{#var:pre_meta}}}}
       {{#vardefine:meta_pre_{{#var:meta_current_entity}}|{{#expr:{{#var:pre_meta}}+1}}}}
removed =
       {{#if:{{#var:cur_meta}}|{{#var:cur_meta}}}}{{#if:|{{#if:{{#var:cur_meta}}| }}}}
       {{#vardefine:meta_{{#var:meta_current_entity}}|{{#expr:{{#var:cur_meta}}+1}}}}
=
       {{#ifeq: {{#var:cur_meta}}|{{#var:pre_meta}} | {{#var:cur_meta}} | {{#if:{{#var:cur_meta}}|{{#var:cur_meta}}}}{{#if:{{#var:pre_meta}}|{{#if:{{#var:cur_meta}}| }}{{#var:pre_meta}}}} }}
       {{#vardefine:meta_{{#var:meta_current_entity}}|{{#expr:{{#var:cur_meta}}+1}}}}
       {{#vardefine:meta_pre_{{#var:meta_current_entity}}|{{#expr:{{#var:pre_meta}}+1}}}}
#default =
       Invalid parameter to Template:Metadata id 
   }}
   {{#vardefineecho:cur_meta|{{#var:meta_{{#var:meta_current_entity}}}}}}
   {{#vardefine:meta_{{#var:meta_current_entity}}|{{#expr:{{#var:cur_meta}}+1}}}}
   {{#ifeq: |||Template:Metadata id must be used as {{Metadata id|}} (with an empty first parameter) for technical reasons}}

}}

VarInt Shaking direction 1
   {{#vardefine:cur_meta|{{#var:meta_{{#var:meta_current_entity}}}}}}
   {{#vardefine:pre_meta|{{#var:meta_pre_{{#var:meta_current_entity}}}}}}
   {{#switch: 
added =
       {{#if:|}}{{#if:{{#var:pre_meta}}|{{#if:| }}{{#var:pre_meta}}}}
       {{#vardefine:meta_pre_{{#var:meta_current_entity}}|{{#expr:{{#var:pre_meta}}+1}}}}
removed =
       {{#if:{{#var:cur_meta}}|{{#var:cur_meta}}}}{{#if:|{{#if:{{#var:cur_meta}}| }}}}
       {{#vardefine:meta_{{#var:meta_current_entity}}|{{#expr:{{#var:cur_meta}}+1}}}}
=
       {{#ifeq: {{#var:cur_meta}}|{{#var:pre_meta}} | {{#var:cur_meta}} | {{#if:{{#var:cur_meta}}|{{#var:cur_meta}}}}{{#if:{{#var:pre_meta}}|{{#if:{{#var:cur_meta}}| }}{{#var:pre_meta}}}} }}
       {{#vardefine:meta_{{#var:meta_current_entity}}|{{#expr:{{#var:cur_meta}}+1}}}}
       {{#vardefine:meta_pre_{{#var:meta_current_entity}}|{{#expr:{{#var:pre_meta}}+1}}}}
#default =
       Invalid parameter to Template:Metadata id 
   }}
   {{#vardefineecho:cur_meta|{{#var:meta_{{#var:meta_current_entity}}}}}}
   {{#vardefine:meta_{{#var:meta_current_entity}}|{{#expr:{{#var:cur_meta}}+1}}}}
   {{#ifeq: |||Template:Metadata id must be used as {{Metadata id|}} (with an empty first parameter) for technical reasons}}

}}

Float Shaking multiplier 0.0

Abstract Minecart

{{#if:Abstract Minecart||Must specify the current entity ID for Template:Metadata inherit}} {{#vardefine:meta_current_entity|Abstract Minecart}}

{{#if:{{#var:meta_prerelease}}|

   {{#if:Abstract Vehicle
       | {{#if:
           | Extends {{#if:[[{{#varexists:meta_Abstract Vehicle|Entity metadata}}#Abstract Vehicle|Abstract Vehicle]]|[[{{#varexists:meta_Abstract Vehicle|Entity metadata}}#Abstract Vehicle|Abstract Vehicle]]}}{{#if:[[{{#varexists:meta_{{{pre_inherits}}}|Entity metadata}}#{{{pre_inherits}}}|{{{pre_inherits}}}]]|{{#if:[[{{#varexists:meta_Abstract Vehicle|Entity metadata}}#Abstract Vehicle|Abstract Vehicle]]| }}[[{{#varexists:meta_{{{pre_inherits}}}|Entity metadata}}#{{{pre_inherits}}}|{{{pre_inherits}}}]]}}.
           | Extends [[{{#varexists:meta_Abstract Vehicle|Entity metadata}}#Abstract Vehicle|Abstract Vehicle]].
       }}{{#if:
           | {{#vardefine:meta_Abstract Minecart|{{{start_at}}}}}
           {{#if:{{#varexists:meta_Abstract Vehicle}}|start_at in use when inherited entity Abstract Vehicle exists}}
           | {{#vardefine:meta_Abstract Minecart|{{#var:meta_Abstract Vehicle|0}}}}
           {{#if:{{#varexists:meta_Abstract Vehicle}}||Inherited entity Abstract Vehicle does not exist}}
       }}{{#if:
           | {{#vardefine:meta_pre_Abstract Minecart|}}
           {{#if:{{#varexists:meta_Abstract Vehicle}}|start_at in use when inherited entity Abstract Vehicle exists}}
           | {{#vardefine:meta_pre_Abstract Minecart|{{#var:meta_pre_Abstract Vehicle|0}}}}
           {{#if:{{#varexists:meta_Abstract Vehicle}}||Inherited entity Abstract Vehicle does not exist}}
       }}
       | The base class.
       {{#vardefine:meta_Abstract Minecart|0}}
       {{#vardefine:meta_pre_Abstract Minecart|0}}
   }}

|

   {{#if:Abstract Vehicle
       | Extends Abstract Vehicle.
       {{#if:
           | {{#vardefine:meta_Abstract Minecart|{{{start_at}}}}}
           {{#if:{{#varexists:meta_Abstract Vehicle}}|start_at in use when inherited entity Abstract Vehicle exists}}
           | {{#vardefine:meta_Abstract Minecart|{{#var:meta_Abstract Vehicle|0}}}}
           {{#if:{{#varexists:meta_Abstract Vehicle}}||Inherited entity Abstract Vehicle does not exist}}
       }}
       | The base class.
       {{#vardefine:meta_Abstract Minecart|0}}
   }}

}}

Index Type Meaning Default
8 VarInt Shaking power 0
9 VarInt Shaking direction 1
10 Float Shaking multiplier 0.0
11 VarInt Custom block ID and damage 0
12 VarInt Custom block Y position (in 16ths of a block) 6
13 Boolean Show custom block false

Boat

{{#if:Boat||Must specify the current entity ID for Template:Metadata inherit}} {{#vardefine:meta_current_entity|Boat}}

{{#if:{{#var:meta_prerelease}}|

   {{#if:Abstract Vehicle
       | {{#if:
           | Extends {{#if:[[{{#varexists:meta_Abstract Vehicle|Entity metadata}}#Abstract Vehicle|Abstract Vehicle]]|[[{{#varexists:meta_Abstract Vehicle|Entity metadata}}#Abstract Vehicle|Abstract Vehicle]]}}{{#if:[[{{#varexists:meta_{{{pre_inherits}}}|Entity metadata}}#{{{pre_inherits}}}|{{{pre_inherits}}}]]|{{#if:[[{{#varexists:meta_Abstract Vehicle|Entity metadata}}#Abstract Vehicle|Abstract Vehicle]]| }}[[{{#varexists:meta_{{{pre_inherits}}}|Entity metadata}}#{{{pre_inherits}}}|{{{pre_inherits}}}]]}}.
           | Extends [[{{#varexists:meta_Abstract Vehicle|Entity metadata}}#Abstract Vehicle|Abstract Vehicle]].
       }}{{#if:
           | {{#vardefine:meta_Boat|{{{start_at}}}}}
           {{#if:{{#varexists:meta_Abstract Vehicle}}|start_at in use when inherited entity Abstract Vehicle exists}}
           | {{#vardefine:meta_Boat|{{#var:meta_Abstract Vehicle|0}}}}
           {{#if:{{#varexists:meta_Abstract Vehicle}}||Inherited entity Abstract Vehicle does not exist}}
       }}{{#if:
           | {{#vardefine:meta_pre_Boat|}}
           {{#if:{{#varexists:meta_Abstract Vehicle}}|start_at in use when inherited entity Abstract Vehicle exists}}
           | {{#vardefine:meta_pre_Boat|{{#var:meta_pre_Abstract Vehicle|0}}}}
           {{#if:{{#varexists:meta_Abstract Vehicle}}||Inherited entity Abstract Vehicle does not exist}}
       }}
       | The base class.
       {{#vardefine:meta_Boat|0}}
       {{#vardefine:meta_pre_Boat|0}}
   }}

|

   {{#if:Abstract Vehicle
       | Extends Abstract Vehicle.
       {{#if:
           | {{#vardefine:meta_Boat|{{{start_at}}}}}
           {{#if:{{#varexists:meta_Abstract Vehicle}}|start_at in use when inherited entity Abstract Vehicle exists}}
           | {{#vardefine:meta_Boat|{{#var:meta_Abstract Vehicle|0}}}}
           {{#if:{{#varexists:meta_Abstract Vehicle}}||Inherited entity Abstract Vehicle does not exist}}
       }}
       | The base class.
       {{#vardefine:meta_Boat|0}}
   }}

}}

Index Type Meaning Default
8 VarInt Time since last hit 0
9 VarInt Forward direction 1
10 Float Damage taken 0.0
11 VarInt Type (0=oak, 1=spruce, 2=birch, 3=jungle, 4=acacia, 5=dark oak) 0
12 Boolean Is left paddle turning false
13 Boolean Is right paddle turning false
14 VarInt Splash timer 0

Block Actions

No changes so far.

Inventories

No changes so far.

Plugin Channels

No changes so far.

Status

Clientbound

No changes so far.

Serverbound

No changes so far.

Login

Clientbound

No changes so far.

Serverbound

No changes so far.

Configuration

Clientbound

Remove Resource Pack (configuration)

Packet ID State Bound To Field Name Field Type Notes
0x06 Configuration Client Has UUID Boolean Whether a specific resource pack should be removed, or all of them.
UUID Optional UUID The UUID of the resource pack to be removed. Only present if the previous field is true.

Add Resource Pack (configuration)

Packet ID State Bound To Field Name Field Type Notes
0x07 Configuration Client UUID UUID The unique identifier of the resource pack.
URL String (32767) The URL to the resource pack.
Hash String (40) 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.
Forced Boolean The Notchian client will be forced to use the resource pack from the server. If they decline they will be kicked from the server.
Has Prompt Message Boolean Whether a custom message should be used on the resource pack prompt.
Prompt Message Optional Chat This is shown in the prompt making the client accept or decline the resource pack. Only present if the previous field is true.

Feature Flags

Used to enable and disable features, generally experimental ones, on the client.

Packet ID State Bound To Field Name Field Type Notes
{{#if:0x07|0x07}}{{#if:0x08|{{#if:0x07| }}0x08}} Configuration Client Total Features VarInt Number of features that appear in the array below.
Feature Flags Identifier Array

As of {{#if:1.20.2|1.20.2}}{{#if:1.20.3|{{#if:1.20.2| }}1.20.3}}, the following feature flags are available:

  • minecraft:vanilla - enables vanilla features
  • minecraft:bundle - enables support for the bundle
  • minecraft:trade_rebalance - enables support for the rebalanced villager trades
  • {{#if:|}}{{#if:minecraft:update_1_21 - enables support for 1.21 features|{{#if:| }}minecraft:update_1_21 - enables support for 1.21 features}}

Serverbound

Resource Pack Response (configuration)

Packet ID State Bound To Field Name Field Type Notes
0x05 Configuration Server
UUID UUID The unique identifier of the resource pack received in the Add Resource Pack (configuration) request.
Result VarInt Enum 0: successfully loaded, 1: declined, 2: failed download, 3: accepted.}}{{#if:Result ID (see below).|{{#if:0: successfully loaded, 1: declined, 2: failed download, 3: accepted.| }}Result ID (see below).}}

Result can be one of the following values:

ID Result
0 Successfully downloaded
1 Declined
2 Failed to download
3 Accepted
4 Invalid URL
5 Failed to reload
6 Discarded

Play

Clientbound

Explosion

Sent when an explosion occurs (creepers, TNT, and ghast fireballs).

Each block in Records is set to air. Coordinates for each axis in record is int(X) + record.x

There is currently a disparity in the Notchian implementation between the data that is read from and written to the network. The write logic only serializes the particle id for the fields Small explosion particle and Large explosion particle, while the read logic expects the particle id and extra required data. See MC-266537 for more information.

Packet ID State Bound To Field Name Field Type Notes
0x1E Play Client X Double
Y Double
Z Double
Strength Float A strength greater than or equal to 2.0 spawns a minecraft:explosion_emitter particle, while a lesser strength spawns a minecraft:explosion particle.}}{{#if:|{{#if:A strength greater than or equal to 2.0 spawns a minecraft:explosion_emitter particle, while a lesser strength spawns a minecraft:explosion particle.| }}{{{2}}}}}

{{#if:|}}{{#if:If the strength is greater or equal to 2.0, or the block interaction is not 0 (keep), large explosion particles are used. Otherwise, small explosion particles are used.|{{#if:| }}If the strength is greater or equal to 2.0, or the block interaction is not 0 (keep), large explosion particles are used. Otherwise, small explosion particles are used.}}

Record Count VarInt Number of elements in the following array.
Records Array of (Byte, Byte, Byte) Each record is 3 signed bytes long; the 3 bytes are the XYZ (respectively) signed offsets of affected blocks.
Player Motion X Float X velocity of the player being pushed by the explosion.
Player Motion Y Float Y velocity of the player being pushed by the explosion.
Player Motion Z Float Z velocity of the player being pushed by the explosion.
Block interaction VarInt Enum 0 = keep, 1 = destroy, 2 = destroy_with_decay, 3 = trigger_block.
Small explosion particle VarInt The particle ID listed in the particle data type.
Large explosion particle VarInt The particle ID listed in the particle data type.
Explosion sound Sound Name Identifier The name of the sound played.
Has Fixed Range Optional Boolean Whether is has fixed range.
Range Optional Float The fixed range of the sound. Only present if previous boolean is true.

Game Event

Used for a wide variety of game events, from weather to bed use to game mode to demo messages.

Packet ID State Bound To Field Name Field Type Notes
0x20 Play Client Event Unsigned Byte See below.
Value Float Depends on Event.

Events:

Event Effect Value
0 No respawn block available Note: Displays message 'block.minecraft.spawn.not_valid' (You have no home bed or charged respawn anchor, or it was obstructed) to the player.
1 Begin raining
2 End raining
3 Change game mode 0: Survival, 1: Creative, 2: Adventure, 3: Spectator.
4 Win game 0: Just respawn player.
1: Roll the credits and respawn player.
Note that 1 is only sent by Notchian server when player has not yet achieved advancement "The end?", else 0 is sent.
5 Demo event 0: Show welcome to demo screen.
101: Tell movement controls.
102: Tell jump control.
103: Tell inventory control.
104: Tell that the demo is over and print a message about how to take a screenshot.
6 Arrow hit player Note: Sent when any player is struck by an arrow.
7 Rain level change Note: Seems to change both sky color and lighting.
Rain level ranging from 0 to 1.
8 Thunder level change Note: Seems to change both sky color and lighting (same as Rain level change, but doesn't start rain). It also requires rain to render by Notchian client.
Thunder level ranging from 0 to 1.
9 Play pufferfish sting sound
10 Play elder guardian mob appearance (effect and sound)
11 Enable respawn screen 0: Enable respawn screen.
1: Immediately respawn (sent when the doImmediateRespawn gamerule changes).
12 Limited crafting 0: Disable limited crafting.
1: Enable limited crafting (sent when the doLimitedCrafting gamerule changes).
13 Start waiting for level chunks Instructs the client to begin the waiting process for the level chunks.
Sent by the server after the level is cleared on the client and is being re-sent (either during the first, or subsequent reconfigurations).

Reset Score

This is sent to the client when it should remove a scoreboard item.

Packet ID State Bound To Field Name Field Type Notes
0x42 Play Client Entity Name String (32767) The entity whose score this is. For players, this is their username; for other entities, it is their UUID.
Has Objective Name Boolean Whether the score should be removed for the specified objective, or for all of them.
Objective Name Optional String (32767) The name of the objective the score belongs to. Only present if the previous field is true.

Remove Resource Pack (play)

Packet ID State Bound To Field Name Field Type Notes
0x43 Play Client Has UUID Boolean Whether a specific resource pack should be removed, or all of them.
UUID Optional UUID The UUID of the resource pack to be removed. Only present if the previous field is true.

Add Resource Pack (play)

Packet ID State Bound To Field Name Field Type Notes
0x44 Play Client UUID UUID The unique identifier of the resource pack.
URL String (32767) The URL to the resource pack.
Hash String (40) 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.
Forced Boolean The Notchian client will be forced to use the resource pack from the server. If they decline they will be kicked from the server.
Has Prompt Message Boolean Whether a custom message should be used on the resource pack prompt.
Prompt Message Optional Chat This is shown in the prompt making the client accept or decline the resource pack. Only present if the previous field is true.

Update Objectives

This is sent to the client when it should create a new scoreboard objective or remove one.

Packet ID State Bound To Field Name Field Type Notes
{{#if:0x5A|0x5A}}{{#if:0x5C|{{#if:0x5A| }}0x5C}} Play Client Objective Name String (32767) A unique name for the objective.
Mode Byte 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text.
Objective Value Optional Chat Only if mode is 0 or 2.The text to be displayed for the score.
Type Optional VarInt Enum Only if mode is 0 or 2. 0 = "integer", 1 = "hearts".
Has Number Format Optional Boolean Only if mode is 0 or 2. Whether this objective has a set number format for the scores.
Number Format Optional VarInt Enum Only if mode is 0 or 2 and the previous boolean is true. Determines how the score number should be formatted.
Number Format Field Name
0: blank no fields no fields Show nothing.
1: styled Styling Compound Tag The styling to be used when formatting the score number. This is similar to a Chat, but only the styling fields are present.
2: fixed Content Chat The text to be used as placeholder.

Update Score

This is sent to the client when it should update a scoreboard item.

Packet ID State Bound To Field Name Field Type Notes
{{#if:0x5D|0x5D}}{{#if:0x5F|{{#if:0x5D| }}0x5F}} Play Client Entity Name String (32767) The entity whose score this is. For players, this is their username; for other entities, it is their UUID.
Action VarInt Enum 0 to create/update an item. 1 to remove an item.
Objective Name String (32767) The name of the objective the score belongs to.
Value Optional}}{{#if:|{{#if:Optional| }}}} VarInt Only sent when Action does not equal 1.}}{{#if:|{{#if:Only sent when Action does not equal 1.| }}}}
Has Display Name Boolean Whether this score has a custom display name.
Display Name Optional Chat The custom display name. Only present if the previous boolean is true.
Has Number Format Boolean Whether this score has a set number format. This overrides the number format set on the objective, if any.
Number Format Optional VarInt Enum Determines how the score number should be formatted. Only present if the previous boolean is true.
Number Format Field Name
0: blank no fields no fields Show nothing.
1: styled Styling Compound Tag The styling to be used when formatting the score number. This is similar to a Chat, but only the styling fields are present.
2: fixed Content Chat The text to be used as placeholder.

Set Ticking State

Used to adjust the ticking rate of the client, and whether it's frozen.

Packet ID State Bound To Field Name Field Type Notes
0x6E Play Server Tick rate Float
Is frozen Boolean

Step Tick

Advances the client processing by the specified number of ticks. Has no effect is the client ticking is not frozen.

Packet ID State Bound To Field Name Field Type Notes
0x6F Play Client Tick steps VarInt

Update Recipes

Packet ID State Bound To Field Name Field Type Notes
{{#if:0x6F|0x6F}}{{#if:0x73|{{#if:0x6F| }}0x73}} Play Client Num Recipes VarInt Number of elements in the following array.
Recipe Type Array Identifier The recipe type, see below.
Recipe ID Identifier
Data Varies Additional data for the recipe.

Recipe types:

Type Description Data
minecraft:crafting_shapeless Shapeless crafting recipe. All items in the ingredient list must be present, but in any order/slot. As follows:
Name Type Description
Group String (32767) Used to group similar recipes together in the recipe book. Tag is present in recipe JSON.
Category VarInt Enum Building = 0, Redstone = 1, Equipment = 2, Misc = 3
Ingredient count VarInt Number of elements in the following array.
Ingredients Array of Ingredient.
Result Slot
minecraft:crafting_shaped Shaped crafting recipe. All items must be present in the same pattern (which may be flipped horizontally or translated). As follows:
Name Type Description
Width VarInt
Height VarInt
Group String (32767) Used to group similar recipes together in the recipe book. Tag is present in recipe JSON.
Category VarInt Enum Building = 0, Redstone = 1, Equipment = 2, Misc = 3
Width VarInt
Height VarInt
Ingredients Array of Ingredient Length is width * height. Indexed by x + (y * width).
Result Slot
Show notification Boolean Show a toast when the recipe is added.
minecraft:crafting_special_armordye Recipe for dying leather armor As follows:
Name Type Description
Category VarInt Enum Building = 0, Redstone = 1, Equipment = 2, Misc = 3
minecraft:crafting_special_bookcloning Recipe for copying contents of written books
minecraft:crafting_special_mapcloning Recipe for copying maps
minecraft:crafting_special_mapextending Recipe for adding paper to maps
minecraft:crafting_special_firework_rocket Recipe for making firework rockets
minecraft:crafting_special_firework_star Recipe for making firework stars
minecraft:crafting_special_firework_star_fade Recipe for making firework stars fade between multiple colors
minecraft:crafting_special_repairitem Recipe for repairing items via crafting
minecraft:crafting_special_tippedarrow Recipe for crafting tipped arrows
minecraft:crafting_special_bannerduplicate Recipe for copying banner patterns
minecraft:crafting_special_shielddecoration Recipe for applying a banner's pattern to a shield
minecraft:crafting_special_shulkerboxcoloring Recipe for recoloring a shulker box
minecraft:crafting_special_suspiciousstew Recipe for crafting suspicious stews
minecraft:crafting_decorated_pot Recipe for crafting decorated pots
minecraft:smelting Smelting recipe As follows:
Name Type Description
Group String (32767) Used to group similar recipes together in the recipe book.
Category VarInt Enum Food = 0, Blocks = 1, Misc = 2
Ingredient Ingredient
Result Slot
Experience Float
Cooking time VarInt
minecraft:blasting Blast furnace recipe
minecraft:smoking Smoker recipe
minecraft:campfire_cooking Campfire recipe
minecraft:stonecutting Stonecutter recipe As follows:
Name Type Description
Group String (32767) Used to group similar recipes together in the recipe book. Tag is present in recipe JSON.
Ingredient Ingredient
Result Slot
minecraft:smithing_transform Recipe for smithing netherite gear As follows:
Name Type Description
Template Ingredient The smithing template.
Base Ingredient The base item.
Addition Ingredient The additional ingredient.
Result Slot
minecraft:smithing_trim Recipe for applying armor trims As follows:
Name Type Description
Template Ingredient The smithing template.
Base Ingredient The base item.
Addition Ingredient The additional ingredient.

Ingredient is defined as:

Name Type Description
Count VarInt Number of elements in the following array.
Items Array of Slot Any item in this array may be used for the recipe. The count of each item should be 1.

Serverbound

Change Container Slot State

This packet is sent by the client when toggling the state of a Crafter.

Packet ID State Bound To Field Name Field Type Notes
0x0F Play Server Slot ID VarInt This is the ID of the slot that was changed.
Window ID VarInt This is the ID of the window that was changed.
State Boolean The new state of the slot. True for enabled, false for disabled.

Resource Pack Response (play)

Packet ID State Bound To Field Name Field Type Notes
0x27 Play Server
UUID UUID The unique identifier of the resource pack received in the Add Resource Pack (play) request.
Result VarInt Enum 0: successfully loaded, 1: declined, 2: failed download, 3: accepted.}}{{#if:Result ID (see below).|{{#if:0: successfully loaded, 1: declined, 2: failed download, 3: accepted.| }}Result ID (see below).}}

Result can be one of the following values:

ID Result
0 Successfully downloaded
1 Declined
2 Failed to download
3 Accepted
4 Invalid URL
5 Failed to reload
6 Discarded

Program Jigsaw Block

Sent when Done is pressed on the Jigsaw Block interface.

Packet ID State Bound To Field Name Field Type Notes
0x2F Play Server Location Position Block entity location
Name Identifier
Target Identifier
Pool Identifier
Final state String (32767) "Turns into" on the GUI, final_state in NBT.
Joint type String (32767) rollable if the attached piece can be rotated, else aligned.
Selection priority VarInt
Placement priority VarInt