Difference between revisions of "Pre-release protocol"

From wiki.vg
Jump to navigation Jump to search
(1.20.3-pre4)
(→‎Entity Metadata: Merge changes from stable docs to incorporate new metadata type templates. Fix my earlier mistake on Pose in the process.)
(13 intermediate revisions by 4 users not shown)
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|1.20.3-pre4, protocol {{Snapshot PVN|1073741991}}]]). 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.4, protocol 765]]) to the current pre-release (currently [[Protocol version numbers|24w03b, protocol {{Snapshot PVN|1073741996}}]]). 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 9: Line 9:
 
=== Data types ===
 
=== Data types ===
  
==== NBT ====
+
No changes so far.
 
 
The NBT specification was changed so that the root tag is no longer required to be a [[NBT#Specification:compound_tag|Compound Tag]] when sent over the network.
 
 
 
Presently in the pre-release, only [[NBT#Specification:compound_tag|Compound Tag]] and [[NBT#Specification:string_tag|String Tag]] types are used as root, but the Notchian server/client implementation is able to handle [[NBT#Specification|NBT Tags]] of any type.
 
 
 
==== Chat ====
 
 
 
The [[Chat]] type is now serialized as a [[NBT#Specification|NBT Tag]] instead of a JSON String, unless explicitly stated otherwise.
 
 
 
{| class="wikitable"
 
|-
 
! Name
 
! Size (bytes)
 
! Encodes
 
! Notes
 
|- {{removed}}
 
! id=Definitions:chat | [[#Definitions:chat|Chat]]
 
| ≥ 1 <br />≤ (262144&times;4) + 3
 
| See [[Chat]]
 
| Encoded as a String with max length of 262144.
 
|- {{added}}
 
! id=Definitions:chat | [[#Definitions:chat|Chat]]
 
| Varies
 
| See [[Chat]]
 
| Encoded as a [[NBT|NBT Tag]], with the type of tag used depending on the case:
 
* As a [[NBT#Specification:string_tag|String Tag]]: For components only containing text (no styling, no events etc.).
 
* As a [[NBT#Specification:compound_tag|Compound Tag]]: Every other case.
 
|}
 
 
 
This affects the following packets and data types containing Chat fields:
 
* [[Protocol#Disconnect (configuration)|Disconnect (configuration)]]
 
* [[Protocol#Resource Pack (configuration)|Resource Pack (configuration)]]
 
* [[Protocol#Boss Bar|Boss Bar]]
 
* [[Protocol#Command Suggestions Response|Command Suggestions Response]]
 
* [[Protocol#Disconnect (play)|Disconnect (play)]]
 
* [[Protocol#Disguised Chat Message|Disguised Chat Message]]
 
* [[Protocol#Map Data|Map Data]]
 
* [[Protocol#Open Screen|Open Screen]]
 
* [[Protocol#Player Chat Message|Player Chat Message]]
 
* [[Protocol#Combat Death|Combat Death]]
 
* [[Protocol#Player Info Update|Player Info Update]]
 
* [[Protocol#Resource Pack (play)|Resource Pack (play)]]
 
* [[Protocol#Server Data|Server Data]]
 
* [[Protocol#Set Action Bar Text|Set Action Bar Text]]
 
* [[Protocol#Update Objectives|Update Objectives]]
 
* [[Protocol#Update Teams|Update Teams]]
 
* [[Protocol#Set Subtitle Text|Set Subtitle Text]]
 
* [[Protocol#Set Title Text|Set Title Text]]
 
* [[Protocol#System Chat Message|System Chat Message]]
 
* [[Protocol#Set Tab List Header And Footer|Set Tab List Header And Footer]]
 
* [[Protocol#Update Advancements|Update Advancements]]
 
<br>
 
* [[Slot|Slot data type (values in the item NBT field)]]
 
* [[Entity_metadata#Entity_Metadata_Format|Chat entity metadata type]]
 
* [[Entity_metadata#Entity_Metadata_Format|OptChat entity metadata type]]
 
<br>
 
However, the following are '''NOT''' affected, as to maintain backwards compatibility with older versions:
 
* [[Protocol#Disconnect (login)|Disconnect (login)]]
 
* [[Server_List_Ping#Status_Response|Server List status response (the description field)]]
 
 
 
==== Particle ====
 
 
 
{| class="wikitable"
 
|-
 
! Particle Name
 
! Particle ID
 
! Data
 
|-
 
| <code>minecraft:ambient_entity_effect</code>
 
| 0
 
| None
 
|-
 
| <code>minecraft:angry_villager</code>
 
| 1
 
| None
 
|-
 
| <code>minecraft:block</code>
 
| 2
 
|
 
{| class="wikitable"
 
  ! Field Name
 
  ! Field Type
 
  ! Meaning
 
  |-
 
  | BlockState
 
  | VarInt
 
  | The ID of the block state.
 
  |}
 
|-
 
| <code>minecraft:block_marker</code>
 
| 3
 
|
 
{| class="wikitable"
 
  ! Field Name
 
  ! Field Type
 
  ! Meaning
 
  |-
 
  | BlockState
 
  | VarInt
 
  | The ID of the block state.
 
  |}
 
|-
 
| <code>minecraft:bubble</code>
 
| 4
 
| None
 
|-
 
| <code>minecraft:cloud</code>
 
| 5
 
| None
 
|-
 
| <code>minecraft:crit</code>
 
| 6
 
| None
 
|-
 
| <code>minecraft:damage_indicator</code>
 
| 7
 
| None
 
|-
 
| <code>minecraft:dragon_breath</code>
 
| 8
 
| None
 
|-
 
| <code>minecraft:dripping_lava</code>
 
| 9
 
| None
 
|-
 
| <code>minecraft:falling_lava</code>
 
| 10
 
| None
 
|-
 
| <code>minecraft:landing_lava</code>
 
| 11
 
| None
 
|-
 
| <code>minecraft:dripping_water</code>
 
| 12
 
| None
 
|-
 
| <code>minecraft:falling_water</code>
 
| 13
 
| None
 
|-
 
| <code>minecraft:dust</code>
 
| 14
 
|
 
{| class="wikitable"
 
  ! 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.
 
  |}
 
|-
 
| <code>minecraft:dust_color_transition</code>
 
| 15
 
|
 
{| class="wikitable"
 
  ! 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.
 
  |}
 
|-
 
| <code>minecraft:effect</code>
 
| 16
 
| None
 
|-
 
| <code>minecraft:elder_guardian</code>
 
| 17
 
| None
 
|-
 
| <code>minecraft:enchanted_hit</code>
 
| 18
 
| None
 
|-
 
| <code>minecraft:enchant</code>
 
| 19
 
| None
 
|-
 
| <code>minecraft:end_rod</code>
 
| 20
 
| None
 
|-
 
| <code>minecraft:entity_effect</code>
 
| 21
 
| None
 
|-
 
| <code>minecraft:explosion_emitter</code>
 
| 22
 
| None
 
|-
 
| <code>minecraft:explosion</code>
 
| 23
 
| None
 
|- {{added}}
 
| <code>minecraft:gust</code>
 
| 24
 
| None
 
|- {{added}}
 
| <code>minecraft:gust_emitter</code>
 
| 25
 
| None
 
|-
 
| <code>minecraft:sonic_boom</code>
 
| {{change|24|26}}
 
| None
 
|-
 
| <code>minecraft:falling_dust</code>
 
| {{change|25|27}}
 
|
 
{| class="wikitable"
 
  ! Field Name
 
  ! Field Type
 
  ! Meaning
 
  |-
 
  | BlockState
 
  | VarInt
 
  | The ID of the block state.
 
  |}
 
|-
 
| <code>minecraft:firework</code>
 
| {{change|26|28}}
 
| None
 
|-
 
| <code>minecraft:fishing</code>
 
| {{change|27|29}}
 
| None
 
|-
 
| <code>minecraft:flame</code>
 
| {{change|28|30}}
 
| None
 
|-
 
| <code>minecraft:cherry_leaves</code>
 
| {{change|29|31}}
 
| None
 
|-
 
| <code>minecraft:sculk_soul</code>
 
| {{change|30|32}}
 
| None
 
|-
 
| <code>minecraft:sculk_charge</code>
 
| {{change|31|33}}
 
|
 
{| class="wikitable"
 
  ! Field Name
 
  ! Field Type
 
  ! Meaning
 
  |-
 
  | Roll
 
  | Float
 
  | How much the particle will be rotated when displayed.
 
  |}
 
|-
 
| <code>minecraft:sculk_charge_pop</code>
 
| {{change|32|34}}
 
| None
 
|-
 
| <code>minecraft:soul_fire_flame</code>
 
| {{change|33|35}}
 
| None
 
|-
 
| <code>minecraft:soul</code>
 
| {{change|34|36}}
 
| None
 
|-
 
| <code>minecraft:flash</code>
 
| {{change|35|37}}
 
| None
 
|-
 
| <code>minecraft:happy_villager</code>
 
| {{change|36|38}}
 
| None
 
|-
 
| <code>minecraft:composter</code>
 
| {{change|37|39}}
 
| None
 
|-
 
| <code>minecraft:heart</code>
 
| {{change|38|40}}
 
| None
 
|-
 
| <code>minecraft:instant_effect</code>
 
| {{change|39|41}}
 
| None
 
|-
 
| <code>minecraft:item</code>
 
| {{change|40|42}}
 
|
 
{| class="wikitable"
 
  ! Field Name
 
  ! Field Type
 
  ! Meaning
 
  |-
 
  | Item
 
  | [[Slot]]
 
  | The item that will be used.
 
  |}
 
|-
 
| <code>minecraft:vibration</code>
 
| {{change|41|43}}
 
|
 
{| class="wikitable"
 
  ! 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 <code>minecraft:block</code>.
 
  |-
 
  | Entity ID
 
  | VarInt
 
  | The ID of the entity the vibration originated from. Only present if Position Type is <code>minecraft:entity</code>.
 
  |-
 
  | Entity eye height
 
  | Float
 
  | The height of the entity's eye relative to the entity. Only present if Position Type is <code>minecraft:entity</code>.
 
  |-
 
  | Ticks
 
  | VarInt
 
  | The amount of ticks it takes for the vibration to travel from its source to its destination.
 
  |}
 
|-
 
| <code>minecraft:item_slime</code>
 
| {{change|42|44}}
 
| None
 
|-
 
| <code>minecraft:item_snowball</code>
 
| {{change|43|45}}
 
| None
 
|-
 
| <code>minecraft:large_smoke</code>
 
| {{change|44|46}}
 
| None
 
|-
 
| <code>minecraft:lava</code>
 
| {{change|45|47}}
 
| None
 
|-
 
| <code>minecraft:mycelium</code>
 
| {{change|46|48}}
 
| None
 
|-
 
| <code>minecraft:note</code>
 
| {{change|47|49}}
 
| None
 
|-
 
| <code>minecraft:poof</code>
 
| {{change|48|50}}
 
| None
 
|-
 
| <code>minecraft:portal</code>
 
| {{change|49|51}}
 
| None
 
|-
 
| <code>minecraft:rain</code>
 
| {{change|50|52}}
 
| None
 
|-
 
| <code>minecraft:smoke</code>
 
| {{change|51|53}}
 
| None
 
|- {{added}}
 
| <code>minecraft:white_smoke</code>
 
| 54
 
| None
 
|-
 
| <code>minecraft:sneeze</code>
 
| {{change|52|55}}
 
| None
 
|-
 
| <code>minecraft:spit</code>
 
| {{change|53|56}}
 
| None
 
|-
 
| <code>minecraft:squid_ink</code>
 
| {{change|54|57}}
 
| None
 
|-
 
| <code>minecraft:sweep_attack</code>
 
| {{change|55|58}}
 
| None
 
|-
 
| <code>minecraft:totem_of_undying</code>
 
| {{change|56|59}}
 
| None
 
|-
 
| <code>minecraft:underwater</code>
 
| {{change|57|60}}
 
| None
 
|-
 
| <code>minecraft:splash</code>
 
| {{change|58|61}}
 
| None
 
|-
 
| <code>minecraft:witch</code>
 
| {{change|59|62}}
 
| None
 
|-
 
| <code>minecraft:bubble_pop</code>
 
| {{change|60|63}}
 
| None
 
|-
 
| <code>minecraft:current_down</code>
 
| {{change|61|64}}
 
| None
 
|-
 
| <code>minecraft:bubble_column_up</code>
 
| {{change|62|65}}
 
| None
 
|-
 
| <code>minecraft:nautilus</code>
 
| {{change|63|66}}
 
| None
 
|-
 
| <code>minecraft:dolphin</code>
 
| {{change|64|67}}
 
| None
 
|-
 
| <code>minecraft:campfire_cosy_smoke</code>
 
| {{change|65|68}}
 
| None
 
|-
 
| <code>minecraft:campfire_signal_smoke</code>
 
| {{change|66|69}}
 
| None
 
|-
 
| <code>minecraft:dripping_honey</code>
 
| {{change|67|70}}
 
| None
 
|-
 
| <code>minecraft:falling_honey</code>
 
| {{change|68|71}}
 
| None
 
|-
 
| <code>minecraft:landing_honey</code>
 
| {{change|69|72}}
 
| None
 
|-
 
| <code>minecraft:falling_nectar</code>
 
| {{change|70|73}}
 
| None
 
|-
 
| <code>minecraft:falling_spore_blossom</code>
 
| {{change|71|74}}
 
| None
 
|-
 
| <code>minecraft:ash</code>
 
| {{change|72|75}}
 
| None
 
|-
 
| <code>minecraft:crimson_spore</code>
 
| {{change|73|76}}
 
| None
 
|-
 
| <code>minecraft:warped_spore</code>
 
| {{change|74|77}}
 
| None
 
|-
 
| <code>minecraft:spore_blossom_air</code>
 
| {{change|75|78}}
 
| None
 
|-
 
| <code>minecraft:dripping_obsidian_tear</code>
 
| {{change|76|79}}
 
| None
 
|-
 
| <code>minecraft:falling_obsidian_tear</code>
 
| {{change|77|80}}
 
| None
 
|-
 
| <code>minecraft:landing_obsidian_tear</code>
 
| {{change|78|81}}
 
| None
 
|-
 
| <code>minecraft:reverse_portal</code>
 
| {{change|79|82}}
 
| None
 
|-
 
| <code>minecraft:white_ash</code>
 
| {{change|80|83}}
 
| None
 
|-
 
| <code>minecraft:small_flame</code>
 
| {{change|81|84}}
 
| None
 
|-
 
| <code>minecraft:snowflake</code>
 
| {{change|82|85}}
 
| None
 
|-
 
| <code>minecraft:dripping_dripstone_lava</code>
 
| {{change|83|86}}
 
| None
 
|-
 
| <code>minecraft:falling_dripstone_lava</code>
 
| {{change|84|87}}
 
| None
 
|-
 
| <code>minecraft:dripping_dripstone_water</code>
 
| {{change|85|88}}
 
| None
 
|-
 
| <code>minecraft:falling_dripstone_water</code>
 
| {{change|86|89}}
 
| None
 
|-
 
| <code>minecraft:glow_squid_ink</code>
 
| {{change|87|90}}
 
| None
 
|-
 
| <code>minecraft:glow</code>
 
| {{change|88|91}}
 
| None
 
|-
 
| <code>minecraft:wax_on</code>
 
| {{change|89|92}}
 
| None
 
|-
 
| <code>minecraft:wax_off</code>
 
| {{change|90|93}}
 
| None
 
|-
 
| <code>minecraft:electric_spark</code>
 
| {{change|91|94}}
 
| None
 
|-
 
| <code>minecraft:scrape</code>
 
| {{change|92|95}}
 
| None
 
|-
 
| <code>minecraft:shriek</code>
 
| {{change|93|96}}
 
|
 
{| class="wikitable"
 
  ! Field Name
 
  ! Field Type
 
  ! Meaning
 
  |-
 
  | Delay
 
  | VarInt
 
  | The time in ticks before the particle is displayed
 
  |}
 
|-
 
| <code>minecraft:egg_crack</code>
 
| {{change|94|97}}
 
| None
 
|- {{added}}
 
| <code>minecraft:dust_plume</code>
 
| 98
 
| None
 
|- {{added}}
 
| <code>minecraft:gust_dust</code>
 
| 99
 
| None
 
|- {{added}}
 
| <code>minecraft:trial_spawner_detection</code>
 
| 100
 
| None
 
|}
 
  
 
=== Packets ===
 
=== Packets ===
Line 622: Line 17:
 
  ! Packet name
 
  ! Packet name
 
  !colspan="2"| Documentation
 
  !colspan="2"| Documentation
 +
|-
 +
!colspan="4"| Handshake serverbound
 +
{{PacketList|0x00|Handshake}}
 +
|-
 +
!colspan="4"| Login clientbound
 +
{{PacketList|0x05|Cookie Request (login)|rel=added}}
 +
|-
 +
!colspan="4"| Login serverbound
 +
{{PacketList|0x04|Cookie Response (login)|rel=added}}
 
  |-
 
  |-
 
  !colspan="4"| Configuration clientbound
 
  !colspan="4"| Configuration clientbound
  {{PacketList|0x06|Resource Pack (configuration)|pre=removed}}
+
  {{PacketList|0x00|Cookie Request (configuration)|rel=added}}
  {{PacketList|0x06|Remove Resource Pack (configuration)|rel=added}}
+
{{PacketList|{{change|0x00|0x01}}|Clientbound Plugin Message (configuration)|pre=unchanged}}
  {{PacketList|0x07|Add Resource Pack (configuration)|rel=added}}
+
{{PacketList|{{change|0x01|0x02}}|Disconnect (configuration)|pre=unchanged}}
  {{PacketList|{{change|0x07|0x08}}|Feature Flags}}
+
{{PacketList|{{change|0x02|0x03}}|Finish Configuration|pre=unchanged}}
 +
{{PacketList|{{change|0x03|0x04}}|Clientbound Keep Alive (configuration)|pre=unchanged}}
 +
{{PacketList|{{change|0x04|0x05}}|Ping (configuration)|pre=unchanged}}
 +
  {{PacketList|{{change|0x05|0x06}}|Registry Data|pre=unchanged}}
 +
{{PacketList|{{change|0x06|0x07}}|Remove Resource Pack (configuration)|pre=unchanged}}
 +
  {{PacketList|{{change|0x07|0x08}}|Add Resource Pack (configuration)|pre=unchanged}}
 +
{{PacketList|0x09|Store Cookie (configuration)|rel=added}}
 +
{{PacketList|0x0A|Transfer (configuration)|rel=added}}
 +
  {{PacketList|{{change|0x08|0x0B}}|Feature Flags|pre=unchanged}}
 +
{{PacketList|{{change|0x09|0x0C}}|Update Tags (configuration)|pre=unchanged}}
 +
 
 
  |-
 
  |-
 
  !colspan="4"| Configuration serverbound
 
  !colspan="4"| Configuration serverbound
  {{PacketList|0x05|Resource Pack Response (configuration)}}
+
  {{PacketList|0x01|Cookie Response (configuration)|rel=added}}
 +
{{PacketList|{{change|0x01|0x02}}|Serverbound Plugin Message (configuration)|pre=unchanged}}
 +
{{PacketList|{{change|0x02|0x03}}|Finish Configuration|pre=unchanged}}
 +
{{PacketList|{{change|0x03|0x04}}|Serverbound Keep Alive (configuration)|pre=unchanged}}
 +
{{PacketList|{{change|0x04|0x05}}|Pong (configuration)|pre=unchanged}}
 +
{{PacketList|{{change|0x05|0x06}}|Resource Pack Response (configuration)|pre=unchanged}}
 
  |-
 
  |-
 
  !colspan="4"| Play clientbound
 
  !colspan="4"| Play clientbound
  {{PacketList|0x1E|Explosion}}
+
  {{PacketList|0x16|Cookie Request (Play)|rel=added}}
  {{PacketList|0x20|Game Event}}
+
  {{PacketList|{{change|0x16|0x17}}|Set Cooldown|pre=unchanged}}
  {{PacketList|0x42|Reset Score|rel=added}}
+
  {{PacketList|{{change|0x17|0x18}}|Chat Suggestions|pre=unchanged}}
  {{PacketList|0x42|Resource Pack (play)|pre=removed}}
+
  {{PacketList|{{change|0x18|0x19}}|Clientbound Plugin Message (play)|pre=unchanged}}
  {{PacketList|0x43|Remove Resource Pack (play)|rel=added}}
+
  {{PacketList|{{change|0x19|0x1A}}|Damage Event|pre=unchanged}}
{{PacketList|0x44|Add Resource Pack (play)|rel=added}}
+
  {{PacketList|{{change|0x1A|0x1B}}|Delete Message|pre=unchanged}}
  {{PacketList|{{change|0x43|0x45}}|Respawn|pre=unchanged}}
+
  {{PacketList|{{change|0x1B|0x1C}}|Disconnect (play)|pre=unchanged}}
  {{PacketList|{{change|0x44|0x46}}|Set Head Rotation|pre=unchanged}}
+
  {{PacketList|{{change|0x1C|0x1D}}|Disguised Chat Message|pre=unchanged}}
  {{PacketList|{{change|0x45|0x47}}|Update Section Blocks|pre=unchanged}}
+
  {{PacketList|{{change|0x1D|0x1E}}|Entity Event|pre=unchanged}}
  {{PacketList|{{change|0x46|0x48}}|Select Advancements Tab|pre=unchanged}}
+
  {{PacketList|{{change|0x1E|0x1F}}|Explosion|pre=unchanged}}
  {{PacketList|{{change|0x47|0x49}}|Server Data|pre=unchanged}}
+
  {{PacketList|{{change|0x1F|0x20}}|Unload Chunk|pre=unchanged}}
  {{PacketList|{{change|0x48|0x4A}}|Set Action Bar Text|pre=unchanged}}
+
  {{PacketList|{{change|0x20|0x21}}|Game Event|pre=unchanged}}
  {{PacketList|{{change|0x49|0x4B}}|Set Border Center|pre=unchanged}}
+
  {{PacketList|{{change|0x21|0x22}}|Open Horse Screen|pre=unchanged}}
  {{PacketList|{{change|0x4A|0x4C}}|Set Border Lerp Size|pre=unchanged}}
+
  {{PacketList|{{change|0x22|0x23}}|Hurt Animation|pre=unchanged}}
  {{PacketList|{{change|0x4B|0x4D}}|Set Border Size|pre=unchanged}}
+
  {{PacketList|{{change|0x23|0x24}}|Initialize World Border|pre=unchanged}}
  {{PacketList|{{change|0x4C|0x4E}}|Set Border Warning Delay|pre=unchanged}}
+
  {{PacketList|{{change|0x24|0x25}}|Clientbound Keep Alive (play)|pre=unchanged}}
  {{PacketList|{{change|0x4D|0x4F}}|Set Border Warning Distance|pre=unchanged}}
+
  {{PacketList|{{change|0x25|0x26}}|Chunk Data and Update Light|pre=unchanged}}
  {{PacketList|{{change|0x4E|0x50}}|Set Camera|pre=unchanged}}
+
  {{PacketList|{{change|0x26|0x27}}|World Event|pre=unchanged}}
  {{PacketList|{{change|0x4F|0x51}}|Set Held Item|pre=unchanged}}
+
  {{PacketList|{{change|0x27|0x28}}|Particle|pre=unchanged}}
  {{PacketList|{{change|0x50|0x52}}|Set Center Chunk|pre=unchanged}}
+
  {{PacketList|{{change|0x28|0x29}}|Update Light|pre=unchanged}}
  {{PacketList|{{change|0x51|0x53}}|Set Render Distance|pre=unchanged}}
+
  {{PacketList|{{change|0x29|0x2A}}|Login (play)|pre=unchanged}}
  {{PacketList|{{change|0x52|0x54}}|Set Default Spawn Position|pre=unchanged}}
+
  {{PacketList|{{change|0x2A|0x2B}}|Map Data|pre=unchanged}}
  {{PacketList|{{change|0x53|0x55}}|Display Objective|pre=unchanged}}
+
  {{PacketList|{{change|0x2B|0x2C}}|Merchant Offers|pre=unchanged}}
  {{PacketList|{{change|0x54|0x56}}|Set Entity Metadata|pre=unchanged}}
+
  {{PacketList|{{change|0x2C|0x2D}}|Update Entity Position|pre=unchanged}}
  {{PacketList|{{change|0x55|0x57}}|Link Entities|pre=unchanged}}
+
  {{PacketList|{{change|0x2D|0x2E}}|Update Entity Position and Rotation|pre=unchanged}}
  {{PacketList|{{change|0x56|0x58}}|Set Entity Velocity|pre=unchanged}}
+
  {{PacketList|{{change|0x2E|0x2F}}|Update Entity Rotation|pre=unchanged}}
  {{PacketList|{{change|0x57|0x59}}|Set Equipment|pre=unchanged}}
+
  {{PacketList|{{change|0x2F|0x30}}|Move Vehicle|pre=unchanged}}
  {{PacketList|{{change|0x58|0x5A}}|Set Experience|pre=unchanged}}
+
  {{PacketList|{{change|0x30|0x31}}|Open Book|pre=unchanged}}
  {{PacketList|{{change|0x59|0x5B}}|Set Health|pre=unchanged}}
+
  {{PacketList|{{change|0x31|0x32}}|Open Screen|pre=unchanged}}
  {{PacketList|{{change|0x5A|0x5C}}|Update Objectives}}
+
  {{PacketList|{{change|0x32|0x33}}|Open Sign Editor|pre=unchanged}}
  {{PacketList|{{change|0x5B|0x5D}}|Set Passengers|pre=unchanged}}
+
  {{PacketList|{{change|0x33|0x34}}|Ping (play)|pre=unchanged}}
  {{PacketList|{{change|0x5C|0x5E}}|Update Teams|pre=unchanged}}
+
  {{PacketList|{{change|0x34|0x35}}|Ping Response (play)|pre=unchanged}}
  {{PacketList|{{change|0x5D|0x5F}}|Update Score}}
+
  {{PacketList|{{change|0x35|0x36}}|Place Ghost Recipe|pre=unchanged}}
  {{PacketList|{{change|0x5E|0x60}}|Set Simulation Distance|pre=unchanged}}
+
  {{PacketList|{{change|0x36|0x37}}|Player Abilities|pre=unchanged}}
  {{PacketList|{{change|0x5F|0x61}}|Set Subtitle Text|pre=unchanged}}
+
  {{PacketList|{{change|0x37|0x38}}|Player Chat Message|pre=unchanged}}
  {{PacketList|{{change|0x60|0x62}}|Update Time|pre=unchanged}}
+
  {{PacketList|{{change|0x38|0x39}}|End Combat|pre=unchanged}}
  {{PacketList|{{change|0x61|0x63}}|Set Title Text|pre=unchanged}}
+
  {{PacketList|{{change|0x39|0x3A}}|Enter Combat|pre=unchanged}}
  {{PacketList|{{change|0x62|0x64}}|Set Title Animation Times|pre=unchanged}}
+
  {{PacketList|{{change|0x3A|0x3B}}|Combat Death|pre=unchanged}}
  {{PacketList|{{change|0x63|0x65}}|Entity Sound Effect|pre=unchanged}}
+
  {{PacketList|{{change|0x3B|0x3C}}|Player Info Remove|pre=unchanged}}
  {{PacketList|{{change|0x64|0x66}}|Sound Effect|pre=unchanged}}
+
  {{PacketList|{{change|0x3C|0x3D}}|Player Info Update|pre=unchanged}}
  {{PacketList|{{change|0x65|0x67}}|Start Configuration|pre=unchanged}}
+
  {{PacketList|{{change|0x3D|0x3E}}|Look At|pre=unchanged}}
  {{PacketList|{{change|0x66|0x68}}|Stop Sound|pre=unchanged}}
+
  {{PacketList|{{change|0x3E|0x3F}}|Synchronize Player Position|pre=unchanged}}
  {{PacketList|{{change|0x67|0x69}}|System Chat Message|pre=unchanged}}
+
  {{PacketList|{{change|0x3F|0x40}}|Update Recipe Book|pre=unchanged}}
  {{PacketList|{{change|0x68|0x6A}}|Set Tab List Header And Footer|pre=unchanged}}
+
  {{PacketList|{{change|0x40|0x41}}|Remove Entities|pre=unchanged}}
  {{PacketList|{{change|0x69|0x6B}}|Tag Query Response|pre=unchanged}}
+
  {{PacketList|{{change|0x41|0x42}}|Remove Entity Effect|pre=unchanged}}
  {{PacketList|{{change|0x6A|0x6C}}|Pickup Item|pre=unchanged}}
+
  {{PacketList|{{change|0x42|0x43}}|Reset Score|pre=unchanged}}
  {{PacketList|{{change|0x6B|0x6D}}|Teleport Entity|pre=unchanged}}
+
  {{PacketList|{{change|0x43|0x44}}|Remove Resource Pack (play)|pre=unchanged}}
  {{PacketList|0x6E|Set Ticking State|rel=added}}
+
  {{PacketList|{{change|0x44|0x45}}|Add Resource Pack (play)|pre=unchanged}}
{{PacketList|0x6F|Step Tick|rel=added}}
+
  {{PacketList|{{change|0x45|0x46}}|Respawn|pre=unchanged}}
  {{PacketList|{{change|0x6C|0x70}}|Update Advancements|pre=unchanged}}
+
  {{PacketList|{{change|0x46|0x47}}|Set Head Rotation|pre=unchanged}}
  {{PacketList|{{change|0x6D|0x71}}|Update Attributes|pre=unchanged}}
+
  {{PacketList|{{change|0x47|0x48}}|Update Section Blocks|pre=unchanged}}
  {{PacketList|{{change|0x6E|0x72}}|Entity Effect|pre=unchanged}}
+
  {{PacketList|{{change|0x48|0x49}}|Select Advancements Tab|pre=unchanged}}
  {{PacketList|{{change|0x6F|0x73}}|Update Recipes}}
+
{{PacketList|{{change|0x49|0x4A}}|Server Data|pre=unchanged}}
  {{PacketList|{{change|0x70|0x74}}|Update Tags|pre=unchanged}}
+
{{PacketList|{{change|0x4A|0x4B}}|Set Action Bar Text|pre=unchanged}}
 +
{{PacketList|{{change|0x4B|0x4C}}|Set Border Center|pre=unchanged}}
 +
{{PacketList|{{change|0x4C|0x4D}}|Set Border Lerp Size|pre=unchanged}}
 +
{{PacketList|{{change|0x4D|0x4E}}|Set Border Size|pre=unchanged}}
 +
{{PacketList|{{change|0x4E|0x4F}}|Set Border Warning Delay|pre=unchanged}}
 +
{{PacketList|{{change|0x4F|0x50}}|Set Border Warning Distance|pre=unchanged}}
 +
{{PacketList|{{change|0x50|0x51}}|Set Camera|pre=unchanged}}
 +
{{PacketList|{{change|0x51|0x52}}|Set Held Item|pre=unchanged}}
 +
{{PacketList|{{change|0x52|0x53}}|Set Center Chunk|pre=unchanged}}
 +
{{PacketList|{{change|0x53|0x54}}|Set Render Distance|pre=unchanged}}
 +
{{PacketList|{{change|0x54|0x55}}|Set Default Spawn Position|pre=unchanged}}
 +
{{PacketList|{{change|0x55|0x56}}|Display Objective|pre=unchanged}}
 +
{{PacketList|{{change|0x56|0x57}}|Set Entity Metadata|pre=unchanged}}
 +
{{PacketList|{{change|0x57|0x58}}|Link Entities|pre=unchanged}}
 +
{{PacketList|{{change|0x58|0x59}}|Set Entity Velocity|pre=unchanged}}
 +
{{PacketList|{{change|0x59|0x5A}}|Set Equipment|pre=unchanged}}
 +
{{PacketList|{{change|0x5A|0x5B}}|Set Experience|pre=unchanged}}
 +
{{PacketList|{{change|0x5B|0x5C}}|Set Health|pre=unchanged}}
 +
{{PacketList|{{change|0x5C|0x5D}}|Update Objectives|pre=unchanged}}
 +
{{PacketList|{{change|0x5D|0x5E}}|Set Passengers|pre=unchanged}}
 +
{{PacketList|{{change|0x5E|0x5F}}|Update Teams|pre=unchanged}}
 +
{{PacketList|{{change|0x5F|0x60}}|Update Score|pre=unchanged}}
 +
{{PacketList|{{change|0x60|0x61}}|Set Simulation Distance|pre=unchanged}}
 +
{{PacketList|{{change|0x61|0x62}}|Set Subtitle Text|pre=unchanged}}
 +
{{PacketList|{{change|0x62|0x63}}|Update Time|pre=unchanged}}
 +
{{PacketList|{{change|0x63|0x64}}|Set Title Text|pre=unchanged}}
 +
{{PacketList|{{change|0x64|0x65}}|Set Title Animation Times|pre=unchanged}}
 +
{{PacketList|{{change|0x65|0x66}}|Entity Sound Effect|pre=unchanged}}
 +
{{PacketList|{{change|0x66|0x67}}|Sound Effect|pre=unchanged}}
 +
{{PacketList|{{change|0x67|0x68}}|Start Configuration|pre=unchanged}}
 +
{{PacketList|{{change|0x68|0x69}}|Stop Sound|pre=unchanged}}
 +
{{PacketList|0x6A|Store Cookie (Play)|rel=added}}
 +
{{PacketList|{{change|0x69|0x6B}}|System Chat Message|pre=unchanged}}
 +
{{PacketList|{{change|0x6A|0x6C}}|Set Tab List Header And Footer|pre=unchanged}}
 +
{{PacketList|{{change|0x6B|0x6D}}|Tag Query Response|pre=unchanged}}
 +
{{PacketList|{{change|0x6C|0x6E}}|Pickup Item|pre=unchanged}}
 +
{{PacketList|{{change|0x6D|0x6F}}|Teleport Entity|pre=unchanged}}
 +
{{PacketList|{{change|0x6E|0x70}}|Set Ticking State|pre=unchanged}}
 +
{{PacketList|{{change|0x6F|0x71}}|Step Tick|pre=unchanged}}
 +
{{PacketList|0x72|Transfer (Play)|rel=added}}
 +
{{PacketList|{{change|0x70|0x73}}|Update Advancements|pre=unchanged}}
 +
{{PacketList|{{change|0x71|0x74}}|Update Attributes}}
 +
{{PacketList|{{change|0x72|0x75}}|Entity Effect}}
 +
{{PacketList|{{change|0x73|0x76}}|Update Recipes|pre=unchanged}}
 +
{{PacketList|{{change|0x74|0x77}}|Update Tags (play)|pre=unchanged}}
 
  |-
 
  |-
 
  !colspan="4"| Play serverbound
 
  !colspan="4"| Play serverbound
  {{PacketList|0x0F|Change Container Slot State|rel=added}}
+
  {{PacketList|0x10|Cookie Response (play)|rel=added}}
  {{PacketList|{{change|0x0F|0x10}}|Serverbound Plugin Message (play)|pre=unchanged}}
+
  {{PacketList|{{change|0x10|0x11}}|Serverbound Plugin Message (play)|pre=unchanged}}
  {{PacketList|{{change|0x10|0x11}}|Edit Book|pre=unchanged}}
+
  {{PacketList|{{change|0x11|0x12}}|Edit Book|pre=unchanged}}
  {{PacketList|{{change|0x11|0x12}}|Query Entity Tag|pre=unchanged}}
+
  {{PacketList|{{change|0x12|0x13}}|Query Entity Tag|pre=unchanged}}
  {{PacketList|{{change|0x12|0x13}}|Interact|pre=unchanged}}
+
  {{PacketList|{{change|0x13|0x14}}|Interact|pre=unchanged}}
  {{PacketList|{{change|0x13|0x14}}|Jigsaw Generate|pre=unchanged}}
+
  {{PacketList|{{change|0x14|0x15}}|Jigsaw Generate|pre=unchanged}}
  {{PacketList|{{change|0x14|0x15}}|Serverbound Keep Alive (play)|pre=unchanged}}
+
  {{PacketList|{{change|0x15|0x16}}|Serverbound Keep Alive (play)|pre=unchanged}}
  {{PacketList|{{change|0x15|0x16}}|Lock Difficulty|pre=unchanged}}
+
  {{PacketList|{{change|0x16|0x17}}|Lock Difficulty|pre=unchanged}}
  {{PacketList|{{change|0x16|0x17}}|Set Player Position|pre=unchanged}}
+
  {{PacketList|{{change|0x17|0x18}}|Set Player Position|pre=unchanged}}
  {{PacketList|{{change|0x17|0x18}}|Set Player Position and Rotation|pre=unchanged}}
+
  {{PacketList|{{change|0x18|0x19}}|Set Player Position and Rotation|pre=unchanged}}
  {{PacketList|{{change|0x18|0x19}}|Set Player Rotation|pre=unchanged}}
+
  {{PacketList|{{change|0x19|0x1A}}|Set Player Rotation|pre=unchanged}}
  {{PacketList|{{change|0x19|0x1A}}|Set Player On Ground|pre=unchanged}}
+
  {{PacketList|{{change|0x1A|0x1B}}|Set Player On Ground|pre=unchanged}}
  {{PacketList|{{change|0x1A|0x1B}}|Move Vehicle|pre=unchanged}}
+
  {{PacketList|{{change|0x1B|0x1C}}|Move Vehicle|pre=unchanged}}
  {{PacketList|{{change|0x1B|0x1C}}|Paddle Boat|pre=unchanged}}
+
  {{PacketList|{{change|0x1C|0x1D}}|Paddle Boat|pre=unchanged}}
  {{PacketList|{{change|0x1C|0x1D}}|Pick Item|pre=unchanged}}
+
  {{PacketList|{{change|0x1D|0x1E}}|Pick Item|pre=unchanged}}
  {{PacketList|{{change|0x1D|0x1E}}|Ping Request (play)|pre=unchanged}}
+
  {{PacketList|{{change|0x1E|0x1F}}|Ping Request (play)|pre=unchanged}}
  {{PacketList|{{change|0x1E|0x1F}}|Place Recipe|pre=unchanged}}
+
  {{PacketList|{{change|0x1F|0x20}}|Place Recipe|pre=unchanged}}
  {{PacketList|{{change|0x1F|0x20}}|Player Abilities|pre=unchanged}}
+
  {{PacketList|{{change|0x20|0x21}}|Player Abilities|pre=unchanged}}
  {{PacketList|{{change|0x20|0x21}}|Player Action|pre=unchanged}}
+
  {{PacketList|{{change|0x21|0x22}}|Player Action|pre=unchanged}}
  {{PacketList|{{change|0x21|0x22}}|Player Command|pre=unchanged}}
+
  {{PacketList|{{change|0x22|0x23}}|Player Command|pre=unchanged}}
  {{PacketList|{{change|0x22|0x23}}|Player Input|pre=unchanged}}
+
  {{PacketList|{{change|0x23|0x24}}|Player Input|pre=unchanged}}
  {{PacketList|{{change|0x23|0x24}}|Pong (play)|pre=unchanged}}
+
  {{PacketList|{{change|0x24|0x25}}|Pong (play)|pre=unchanged}}
  {{PacketList|{{change|0x24|0x25}}|Change Recipe Book Settings|pre=unchanged}}
+
  {{PacketList|{{change|0x25|0x26}}|Change Recipe Book Settings|pre=unchanged}}
  {{PacketList|{{change|0x25|0x26}}|Set Seen Recipe|pre=unchanged}}
+
  {{PacketList|{{change|0x26|0x27}}|Set Seen Recipe|pre=unchanged}}
  {{PacketList|{{change|0x26|0x27}}|Rename Item|pre=unchanged}}
+
  {{PacketList|{{change|0x27|0x28}}|Rename Item|pre=unchanged}}
  {{PacketList|{{change|0x27|0x28}}|Resource Pack Response (play)}}
+
  {{PacketList|{{change|0x28|0x29}}|Resource Pack Response (play)|pre=unchanged}}
  {{PacketList|{{change|0x28|0x29}}|Seen Advancements|pre=unchanged}}
+
  {{PacketList|{{change|0x29|0x2A}}|Seen Advancements|pre=unchanged}}
  {{PacketList|{{change|0x29|0x2A}}|Select Trade|pre=unchanged}}
+
  {{PacketList|{{change|0x2A|0x2B}}|Select Trade|pre=unchanged}}
  {{PacketList|{{change|0x2A|0x2B}}|Set Beacon Effect|pre=unchanged}}
+
  {{PacketList|{{change|0x2B|0x2C}}|Set Beacon Effect|pre=unchanged}}
  {{PacketList|{{change|0x2B|0x2C}}|Set Held Item|pre=unchanged}}
+
  {{PacketList|{{change|0x2C|0x2D}}|Set Held Item|pre=unchanged}}
  {{PacketList|{{change|0x2C|0x2D}}|Program Command Block|pre=unchanged}}
+
  {{PacketList|{{change|0x2D|0x2E}}|Program Command Block|pre=unchanged}}
  {{PacketList|{{change|0x2D|0x2E}}|Program Command Block Minecart|pre=unchanged}}
+
  {{PacketList|{{change|0x2E|0x2F}}|Program Command Block Minecart|pre=unchanged}}
  {{PacketList|{{change|0x2E|0x2F}}|Set Creative Mode Slot|pre=unchanged}}
+
  {{PacketList|{{change|0x2F|0x30}}|Set Creative Mode Slot|pre=unchanged}}
  {{PacketList|{{change|0x2F|0x30}}|Program Jigsaw Block}}
+
  {{PacketList|{{change|0x30|0x31}}|Program Jigsaw Block|pre=unchanged}}
  {{PacketList|{{change|0x30|0x31}}|Program Structure Block|pre=unchanged}}
+
  {{PacketList|{{change|0x31|0x32}}|Program Structure Block|pre=unchanged}}
  {{PacketList|{{change|0x31|0x32}}|Update Sign|pre=unchanged}}
+
  {{PacketList|{{change|0x32|0x33}}|Update Sign|pre=unchanged}}
  {{PacketList|{{change|0x32|0x33}}|Swing Arm|pre=unchanged}}
+
  {{PacketList|{{change|0x33|0x34}}|Swing Arm|pre=unchanged}}
  {{PacketList|{{change|0x33|0x34}}|Teleport To Entity|pre=unchanged}}
+
  {{PacketList|{{change|0x34|0x35}}|Teleport To Entity|pre=unchanged}}
  {{PacketList|{{change|0x34|0x35}}|Use Item On|pre=unchanged}}
+
  {{PacketList|{{change|0x35|0x36}}|Use Item On|pre=unchanged}}
  {{PacketList|{{change|0x35|0x36}}|Use Item|pre=unchanged}}
+
  {{PacketList|{{change|0x36|0x37}}|Use Item|pre=unchanged}}
 
  |}
 
  |}
  
Line 737: Line 200:
 
== Entity Metadata ==
 
== Entity Metadata ==
  
{| class="wikitable"
+
{{#vardefine: meta_prerelease | 1}}
! Type ([[Data Types#Definitions:varint|VarInt]]&nbsp;Enum)
+
 
  ! Value (Varies)
+
{{Metadata type definition/begin}}
 +
  ! Value
 
  ! Notes
 
  ! Notes
|-
+
{{Metadata type definition|Byte}}
| 0
+
  | {{Type|Byte}}
  | [[Data Types#Definitions:byte|Byte]]
 
 
  |
 
  |
|-
+
{{Metadata type definition|VarInt}}
| 1
+
  | {{Type|VarInt}}
  | [[Data Types#Definitions:varint|VarInt]]
 
 
  |
 
  |
|-
+
{{Metadata type definition|VarLong}}
| 2
+
  | {{Type|VarLong}}
  | [[Data Types#Definitions:varlong|VarLong]]
 
 
  |
 
  |
|-
+
{{Metadata type definition|Float}}
| 3
+
  | {{Type|Float}}
  | [[Data Types#Definitions:float|Float]]
 
 
  |
 
  |
|-
+
{{Metadata type definition|String}}
| 4
+
  | {{Type|String}}
  | [[Data Types#Definitions:string|String]]
 
 
  |
 
  |
|-
+
{{Metadata type definition|Text Component}}
| 5
+
  | {{Type|Text Component}}
  | [[Data Types#Definitions:chat|Chat]]
 
 
  |
 
  |
|-
+
{{Metadata type definition|Optional Text Component}}
  | 6
+
  | ({{Type|Boolean}}, {{Type|Optional}} {{Type|Text Component}})
| OptChat (Boolean + [[Data Types#Definitions:chat|Chat]])
+
  | Text Component is present if the Boolean is set to true.
  | [[Data Types#Definitions:chat|Chat]] is present if the Boolean is set to true
+
{{Metadata type definition|Slot}}
|-
+
  | {{Type|Slot}}
| 7
 
  | [[Data Types#Definitions:slot|Slot]]
 
 
  |
 
  |
|-
+
{{Metadata type definition|Boolean}}
| 8
+
  | {{Type|Boolean}}
  | [[Data Types#Definitions:boolean|Boolean]]
 
 
  |
 
  |
|-
+
{{Metadata type definition|Rotations}}
  | 9
+
  | ({{Type|Float}}, {{Type|Float}}, {{Type|Float}})
| [[Data Types#Definitions:rotation|Rotation]]
+
  | rotation on x, rotation on y, rotation on z
  | 3 [[Data Types#Definitions:float|Floats]]: rotation on x, rotation on y, rotation on z
+
{{Metadata type definition|Position}}
|-
+
  | {{Type|Position}}
  | 10
 
| [[Data Types#Position|Position]]
 
 
  |
 
  |
|-
+
{{Metadata type definition|Optional Position}}
  | 11
+
  | ({{Type|Boolean}}, {{Type|Optional}} {{Type|Position}})
| OptPosition (Boolean + Position)
+
  | Position is present if the Boolean is set to true.
  | Position is present if the Boolean is set to true
+
{{Metadata type definition|Direction}}
|-
+
  | {{Type|VarInt}} {{Type|Enum}}
| 12
+
  | Down = 0, Up = 1, North = 2, South = 3, West = 4, East = 5
  | Direction ([[Data Types#Definitions:varint|VarInt]])
+
{{Metadata type definition|Optional UUID}}
  | (Down = 0, Up = 1, North = 2, South = 3, West = 4, East = 5)
+
  | ({{Type|Boolean}}, {{Type|Optional}} {{Type|UUID}})
|-
+
  | UUID is present if the Boolean is set to true.
  | 13
+
{{Metadata type definition|Block State}}
| OptUUID (Boolean + UUID)
+
  | {{Type|VarInt}}
  | UUID is present if the Boolean is set to true
+
  | An ID in the block state registry.
|-
+
{{Metadata type definition|Optional Block State}}
  | 14
+
  | {{Type|VarInt}}
| BlockID ([[Data Types#Definitions:varint|VarInt]])
+
  | 0 for absent (air is unrepresentable); otherwise, an ID in the block state registry.
  |-
+
{{Metadata type definition|NBT}}
| 15
+
  | {{Type|NBT}}
  | OptBlockID ([[Data Types#Definitions:varint|VarInt]])
 
  | 0 for absent (implies air); otherwise, a block state ID as per the global palette
 
|-
 
| 16
 
  | [[Data_types#Definitions:nbt|NBT]]
 
|
 
|-
 
| 17
 
| [[Data Types#Particle|Particle]]
 
 
  |
 
  |
  |-
+
{{Metadata type definition|Particle}}
  | 18
+
  | ({{Type|VarInt}}, Varies)
| Villager Data
+
  | particle type (an ID in the <code>minecraft:particle_type</code> registry), particle data (See [[Particles]].)
  | 3 [[Data Types#Definitions:varint|VarInts]]: villager type, villager profession, level
+
{{Metadata type definition|Villager Data}}
|-
+
  | ({{Type|VarInt}}, {{Type|VarInt}}, {{Type|VarInt}})
  | 19
+
| villager type, villager profession, level (See below.)
| OptVarInt
+
{{Metadata type definition|Optional VarInt}}
  | 0 for absent; 1 + actual value otherwise. Used for entity IDs.
+
  | {{Type|VarInt}}
|-
+
  | 0 for absent; 1 + actual value otherwise. Used for entity IDs.
  | 20
+
{{Metadata type definition|Pose}}
| Pose
+
  | {{Type|VarInt}} {{Type|Enum}}
  | A [[Data Types#Definitions:varint|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{{change||, 15: SLIDING, 16: SHOOTING, 17: INHALING}}
+
  | STANDING = 0, FALL_FLYING = 1, SLEEPING = 2, SWIMMING = 3, SPIN_ATTACK = 4, SNEAKING = 5, LONG_JUMPING = 6, DYING = 7, CROAKING = 8, USING_TONGUE = 9, SITTING = 10, ROARING = 11, SNIFFING = 12, EMERGING = 13, DIGGING = 14{{change||2=, SLIDING = 15, SHOOTING = 16, INHALING = 17}}
|-
+
{{Metadata type definition|Cat Variant}}
  | 21
+
  | {{Type|VarInt}}
| Cat Variant
+
  | An ID in the <code>minecraft:cat_variant</code> registry.
  | A [[Data Types#Definitions:varint|VarInt]] that points towards the CAT_VARIANT registry.
+
{{Metadata type definition|Frog Variant}}
|-
+
  | {{Type|VarInt}}
  | 22
+
  | An ID in the <code>minecraft:frog_variant</code> registry.
| Frog Variant
+
{{Metadata type definition|Optional Global Position}}
  | A [[Data Types#Definitions:varint|VarInt]] that points towards the FROG_VARIANT registry.
+
  | ({{Type|Boolean}}, {{Type|Optional}} {{Type|Identifier}}, {{Type|Optional}} {{Type|Position}})
|-
+
  | dimension identifier, position; only if the Boolean is set to true.
  | 23
+
{{Metadata type definition|Painting Variant}}
| OptGlobalPos (Boolean + GlobalPos)
+
  | {{Type|VarInt}}
  | GlobalPos consists of a dimension identifier and [[Data Types#Position|Position]].
+
  | An ID in the <code>minecraft:painting_variant</code> registry.
|-
+
{{Metadata type definition|Sniffer State}}
  | 24
+
  | {{Type|VarInt}} {{Type|Enum}}
| Painting Variant
+
  | IDLING = 0, FEELING_HAPPY = 1, SCENTING = 2, SNIFFING = 3, SEARCHING = 4, DIGGING = 5, RISING = 6
  | A [[Data Types#Definitions:varint|VarInt]] that points towards the PAINTING_VARIANT registry.
+
{{Metadata type definition|Armadillo State|rel=added}}
|-
+
  | {{Type|VarInt}} {{Type|Enum}}
  | 25
+
  | IDLE = 0, ROLLING = 1, SCARED = 2
| Sniffer State
+
{{Metadata type definition|Vector3}}
  | A [[Data Types#Definitions:varint|VarInt]] enum: IDLING = 0, FEELING_HAPPY = 1, SCENTING = 2, SNIFFING = 3, SEARCHING = 4, DIGGING = 5, RISING = 6
+
  | ({{Type|Float}}, {{Type|Float}}, {{Type|Float}})
  |-
+
| x, y, z
  | 26
+
{{Metadata type definition|Quaternion}}
| Vector3
+
  | ({{Type|Float}}, {{Type|Float}}, {{Type|Float}}, {{Type|Float}})
  | 3 [[Data Types#Definitions:float|Floats]]: x, y, z
+
  | x, y, z, w
|-
 
  | 27
 
| Quaternion
 
  | 4 [[Data Types#Definitions:float|Floats]]: x, y, z, w
 
|-
 
 
  |}
 
  |}
  
=== Abstract Vehicle ===
+
=== Armadillo ===
  
{{Metadata inherit|Abstract Vehicle|inherits=Entity|start_at=8}}
+
{{Metadata inherit|Armadillo|inherits=Animal|start_at=17}}
 
+
{| class="wikitable" {{added}}
{| class="wikitable"
 
 
  ! Index
 
  ! Index
 
  ! Type
 
  ! Type
 
  !style="width: 250px;" colspan="2"| Meaning
 
  !style="width: 250px;" colspan="2"| Meaning
 
  ! Default
 
  ! Default
|- {{added}}
 
| {{Metadata id|}}
 
| VarInt
 
|colspan="2"| Shaking power
 
| 0
 
|- {{added}}
 
| {{Metadata id|}}
 
| VarInt
 
|colspan="2"| Shaking direction
 
| 1
 
|- {{added}}
 
| {{Metadata id|}}
 
| Float
 
|colspan="2"| Shaking multiplier
 
| 0.0
 
|-
 
|}
 
 
=== Abstract Minecart===
 
 
{{Metadata inherit|Abstract Minecart|inherits=Abstract Vehicle}}
 
 
{| class="wikitable"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
|- {{removed}}
 
| 8
 
| VarInt
 
|colspan="2"| Shaking power
 
| 0
 
|- {{removed}}
 
| 9
 
| VarInt
 
|colspan="2"| Shaking direction
 
| 1
 
|- {{removed}}
 
| 10
 
| Float
 
|colspan="2"| Shaking multiplier
 
| 0.0
 
|-
 
| 11
 
| VarInt
 
|colspan="2"| Custom block ID and damage
 
| 0
 
|-
 
| 12
 
| VarInt
 
|colspan="2"| Custom block Y position (in 16ths of a block)
 
| 6
 
|-
 
| 13
 
| Boolean
 
|colspan="2"| Show custom block
 
| false
 
|}
 
 
=== Boat ===
 
 
{{Metadata inherit|Boat|inherits=Abstract Vehicle}}
 
 
{| class="wikitable"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
|- {{removed}}
 
| 8
 
| VarInt
 
|colspan="2"| Time since last hit
 
| 0
 
|- {{removed}}
 
| 9
 
| VarInt
 
|colspan="2"| Forward direction
 
| 1
 
|- {{removed}}
 
| 10
 
| Float
 
|colspan="2"| Damage taken
 
| 0.0
 
|-
 
| 11
 
| VarInt
 
|colspan="2"| Type (0=oak, 1=spruce, 2=birch, 3=jungle, 4=acacia, 5=dark oak)
 
| 0
 
|-
 
| 12
 
| Boolean
 
|colspan="2"| Is left paddle turning
 
| false
 
|-
 
| 13
 
| Boolean
 
|colspan="2"| Is right paddle turning
 
| false
 
 
  |-
 
  |-
  | 14
+
  | {{Metadata id|added}}
  | VarInt
+
  | {{Metadata type|Armadillo State}}
  |colspan="2"| Splash timer
+
  |colspan="2"| Armadillo State
  | 0
+
  | IDLE
 
  |}
 
  |}
  
Line 981: Line 321:
 
No changes so far.
 
No changes so far.
  
== Status ==
+
== Handshake ==
 
 
=== Clientbound ===
 
 
 
No changes so far.
 
 
 
=== Serverbound ===
 
 
 
No changes so far.
 
 
 
== Login ==
 
 
 
=== Clientbound ===
 
 
 
No changes so far.
 
  
 
=== Serverbound ===
 
=== Serverbound ===
  
No changes so far.
+
==== Handshake ====
  
== Configuration ==
+
This causes the server to switch into the target state.
  
=== Clientbound ===
+
{| class="wikitable"
 
 
==== Remove Resource Pack (configuration) ====
 
 
 
{| class="wikitable" {{added}}
 
 
  ! Packet ID
 
  ! Packet ID
 
  ! State
 
  ! State
Line 1,015: Line 337:
 
  ! Notes
 
  ! Notes
 
  |-
 
  |-
  | rowspan="2"| 0x06
+
  | rowspan="4"| 0x00
  | rowspan="2"| Configuration
+
  | rowspan="4"| Handshaking
  | rowspan="2"| Client
+
  | rowspan="4"| Server
  | Has UUID
+
  | Protocol Version
  | Boolean
+
  | [[#Definitions:varint|VarInt]]
  | Whether a specific resource pack should be removed, or all of them.
+
  | See [[protocol version numbers]] (currently 765 in Minecraft 1.20.4).
 
  |-
 
  |-
  | UUID
+
  | Server Address
  | Optional UUID
+
  | [[#Definitions:string|String]] (255)
| The UUID of the resource pack to be removed. Only present if the previous field is true.
+
  | Hostname or IP, e.g. localhost or 127.0.0.1, that was used to connect. The Notchian server does not use this information. Note that SRV records are a simple redirect, e.g. if _minecraft._tcp.example.com points to mc.example.org, users connecting to example.com will provide example.org as server address in addition to connecting to it.
|}
 
 
 
==== Add Resource Pack (configuration) ====
 
 
 
{| class="wikitable" {{added}}
 
! Packet ID
 
! 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
+
  | Server Port
  | Boolean
+
  | [[#Definitions:unsigned-short|Unsigned Short]]
  | Whether a custom message should be used on the resource pack prompt.
+
  | Default is 25565. The Notchian server does not use this information.
 
  |-
 
  |-
  | Prompt Message
+
  | Next State
  | Optional [[Chat]]
+
  | [[#Definitions:varint|VarInt]] [[#Definitions:enum|Enum]]
  | This is shown in the prompt making the client accept or decline the resource pack. Only present if the previous field is true.
+
  | 1 for [[#Status|Status]], 2 for [[#Login|Login]]{{change||, 3 for [[#Login|Transfer]]}}.
 
  |}
 
  |}
  
==== Feature Flags ====
+
== Status ==
  
Used to enable and disable features, generally experimental ones, on the client.
+
=== Clientbound ===
  
{| class="wikitable"
+
No changes so far.
! Packet ID
 
! State
 
! Bound To
 
! Field Name
 
! Field Type
 
! Notes
 
|-
 
| rowspan="2"| {{change|0x07|0x08}}
 
| rowspan="2"| Configuration
 
| rowspan="2"| Client
 
| Total Features
 
| VarInt
 
| Number of features that appear in the array below.
 
|-
 
| Feature Flags
 
| 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 ===
 
=== Serverbound ===
  
==== Resource Pack Response (configuration) ====
+
No changes so far.
  
{| class="wikitable"
+
== Login ==
! 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.
 
|-
 
| 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
 
| Downloaded
 
|-
 
| 5
 
| Invalid URL
 
|-
 
| 6
 
| Failed to reload
 
|-
 
| 7
 
| Discarded
 
|}
 
 
 
== Play ==
 
  
 
=== Clientbound ===
 
=== Clientbound ===
  
==== Explosion ====
+
==== Cookie Request (login) ====
  
Sent when an explosion occurs (creepers, TNT, and ghast fireballs).
+
Requests a cookie that was previously stored.
  
Each block in Records is set to air. Coordinates for each axis in record is int(X) + record.x
+
{| class="wikitable" {{added}}
 
 
{{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"
 
 
  ! Packet ID
 
  ! Packet ID
 
  ! State
 
  ! State
 
  ! Bound To
 
  ! Bound To
  ! colspan="2" | Field Name
+
  ! colspan="2"| Field Name
  ! Field Type
+
  ! colspan="2"| Field Type
 
  ! Notes
 
  ! Notes
 
  |-
 
  |-
  | rowspan="15"| 0x1E
+
  | rowspan="1"| 0x05
  | rowspan="15"| Play
+
  | rowspan="1"| Login
  | rowspan="15"| Client
+
  | rowspan="1"| Client
  | colspan="2" | X
+
  | colspan="2"| Key
| Double
+
  | colspan="2"| Identifier
|
+
  | The identifier of the cookie.
|-
 
| colspan="2" | Y
 
| Double
 
|
 
|-
 
| colspan="2" | Z
 
| Double
 
|
 
|-
 
  | colspan="2" | Strength
 
| Float
 
| {{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.}}
 
|-
 
| colspan="2" | Record Count
 
| VarInt
 
| Number of elements in the following array.
 
|-
 
| colspan="2" | 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.
 
|-
 
| colspan="2" | Player Motion X
 
| Float
 
| X velocity of the player being pushed by the explosion.
 
|-
 
| colspan="2" | Player Motion Y
 
| Float
 
| Y velocity of the player being pushed by the explosion.
 
|-
 
| colspan="2" | Player Motion Z
 
| Float
 
| Z velocity of the player being pushed by the explosion.
 
|- {{added}}
 
| colspan="2" | Block interaction
 
| VarInt Enum
 
| 0 = keep, 1 = destroy, 2 = destroy_with_decay, 3 = trigger_block.
 
|- {{added}}
 
| colspan="2" | Small explosion particle
 
| VarInt
 
| The particle ID listed in [[#Particle|the particle data type]].
 
|- {{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 ====
+
=== Serverbound ===
  
Used for a wide variety of game events, from weather to bed use to game mode to demo messages.
+
==== Cookie Response (login) ====
  
{| class="wikitable"
+
Response to a [[#Cookie_Request_(login)|Cookie Request (login)]] from the server. The Notchian server only accepts responses of up to 5 kiB in size.
 +
 
 +
{| class="wikitable" {{added}}
 
  ! Packet ID
 
  ! Packet ID
 
  ! State
 
  ! State
 
  ! Bound To
 
  ! Bound To
  ! Field Name
+
  ! colspan="2"| Field Name
  ! Field Type
+
  ! colspan="2"| Field Type
 
  ! Notes
 
  ! Notes
 
  |-
 
  |-
  | rowspan="2"| 0x20
+
  | rowspan="3"| 0x04
  | rowspan="2"| Play
+
| rowspan="3"| Login
  | rowspan="2"| Client
+
  | rowspan="3"| Server
  | Event
+
| colspan="2"| Key
  | Unsigned Byte
+
  | colspan="2"| Identifier
  | See below.
+
  | The identifier of the cookie.
 +
  |-
 +
| colspan="2"| Has Payload
 +
| colspan="2"| Boolean
 +
  | The payload is only present if the cookie exists on the client.
 
  |-
 
  |-
  | Value
+
  | colspan="2"| Payload
  | Float
+
  | colspan="2"| Optional ByteArray(5120)
  | Depends on Event.
+
  | The data of the cookie, if any.
 
  |}
 
  |}
  
''Events'':
+
== Configuration ==
  
{| class="wikitable"
+
=== Clientbound ===
! 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.<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.
 
|-
 
| 5
 
| Demo event
 
| 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.
 
|-
 
| 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.<br>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.<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}}
 
| 13
 
| Start waiting for level chunks
 
| 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).
 
|}
 
  
==== Reset Score ====
+
==== Cookie Request (configuration) ====
  
This is sent to the client when it should remove a scoreboard item.
+
Requests a cookie that was previously stored.
  
 
{| class="wikitable" {{added}}
 
{| class="wikitable" {{added}}
Line 1,333: Line 433:
 
  ! State
 
  ! State
 
  ! Bound To
 
  ! Bound To
  ! Field Name
+
  ! colspan="2"| Field Name
  ! Field Type
+
  ! colspan="2"| Field Type
 
  ! Notes
 
  ! Notes
 
  |-
 
  |-
  | rowspan="3"| 0x42
+
  | rowspan="1"| 0x00
  | rowspan="3"| Play
+
  | rowspan="1"| Configuration
  | rowspan="3"| Client
+
  | rowspan="1"| Client
  | Entity Name
+
  | colspan="2"| Key
| String (32767)
+
  | colspan="2"| Identifier
  | The entity whose score this is. For players, this is their username; for other entities, it is their UUID.
+
  | The identifier of the cookie.
|-
 
| 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) ====
+
==== Store Cookie (configuration) ====
 +
 
 +
Stores some arbitrary data on the client, which persists between server transfers. The Notchian client only accepts cookies of up to 5 kiB in size.
  
 
{| class="wikitable" {{added}}
 
{| class="wikitable" {{added}}
Line 1,359: Line 453:
 
  ! State
 
  ! State
 
  ! Bound To
 
  ! Bound To
  ! Field Name
+
  ! colspan="2"| Field Name
  ! Field Type
+
  ! colspan="2"| Field Type
 
  ! Notes
 
  ! Notes
 
  |-
 
  |-
  | rowspan="2"| 0x43
+
  | rowspan="2"| 0x09
  | rowspan="2"| Play
+
  | rowspan="2"| Configuration
 
  | rowspan="2"| Client
 
  | rowspan="2"| Client
  | Has UUID
+
  | colspan="2"| Key
  | Boolean
+
  | colspan="2"| Identifier
  | Whether a specific resource pack should be removed, or all of them.
+
  | The identifier of the cookie.
 
  |-
 
  |-
  | UUID
+
  | colspan="2"| Payload
  | Optional UUID
+
  | colspan="2"| ByteArray(5120)
  | The UUID of the resource pack to be removed. Only present if the previous field is true.
+
  | The data of the cookie.
 
  |}
 
  |}
  
==== Add Resource Pack (play) ====
+
==== Transfer (configuration) ====
 +
 
 +
Notifies the client that it should transfer to the given server. Cookies previously stored are preserved between server transfers.
  
 
{| class="wikitable" {{added}}
 
{| class="wikitable" {{added}}
Line 1,381: Line 477:
 
  ! State
 
  ! State
 
  ! Bound To
 
  ! Bound To
  ! Field Name
+
  ! colspan="2"| Field Name
  ! Field Type
+
  ! colspan="2"| Field Type
 
  ! Notes
 
  ! Notes
 
  |-
 
  |-
  | rowspan="6"| 0x44
+
  | rowspan="2"| 0x0A
  | rowspan="6"| Play
+
  | rowspan="2"| Configuration
  | rowspan="6"| Client
+
  | rowspan="2"| Client
  | UUID
+
  | colspan="2"| Host
  | UUID
+
  | colspan="2"| String
  | The unique identifier of the resource pack.
+
  | The hostname of IP of the server.
 
  |-
 
  |-
  | URL
+
  | colspan="2"| Port
| String (32767)
+
  | colspan="2"| VarInt
  | The URL to the resource pack.
+
  | The port of the server.
|-
 
  | 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.
 
 
  |}
 
  |}
  
==== Update Objectives ====
+
=== Serverbound ===
 +
 
 +
==== Cookie Response (configuration) ====
  
This is sent to the client when it should create a new {{Minecraft Wiki|scoreboard}} objective or remove one.
+
Response to a [[#Cookie_Request_(configuration)|Cookie Request (configuration)]] from the server. The Notchian server only accepts responses of up to 5 kiB in size.
  
{| class="wikitable"
+
{| class="wikitable" {{added}}
 
  ! Packet ID
 
  ! Packet ID
 
  ! State
 
  ! State
 
  ! Bound To
 
  ! Bound To
 
  ! colspan="2"| Field Name
 
  ! colspan="2"| Field Name
  ! Field Type
+
  ! colspan="2"| Field Type
 
  ! Notes
 
  ! Notes
 
  |-
 
  |-
  | rowspan="10"| {{change|0x5A|0x5C}}
+
  | rowspan="3"| 0x01
  | rowspan="10"| Play
+
  | rowspan="3"| Configuration
  | rowspan="10"| Client
+
  | rowspan="3"| Server
  | colspan="2"| Objective Name
+
  | colspan="2"| Key
  | String (32767)
+
  | colspan="2"| Identifier
  | A unique name for the objective.
+
  | The identifier of the cookie.
 
  |-
 
  |-
  | colspan="2"| Mode
+
  | colspan="2"| Has Payload
  | Byte
+
  | colspan="2"| Boolean
  | 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text.
+
  | The payload is only present if the cookie exists on the client.
 
  |-
 
  |-
  | colspan="2"| Objective Value
+
  | colspan="2"| Payload
| Optional Chat
+
  | colspan="2"| Optional ByteArray(5120)
| Only if mode is 0 or 2.The text to be displayed for the score.
+
  | The data of the cookie, if any.
|-
 
| colspan="2"| Type
 
| Optional VarInt Enum
 
| Only if mode is 0 or 2. 0 = "integer", 1 = "hearts".
 
|- {{added}}
 
  | 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}}
 
| colspan="2"| 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.
 
|- {{added}}
 
! Number Format
 
! Field Name
 
!
 
!
 
|- {{added}}
 
| 0: blank
 
| ''no fields''
 
| ''no fields''
 
| Show nothing.
 
|- {{added}}
 
| 1: styled
 
| Styling
 
| [[NBT#Specification:compound_tag|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.
 
|- {{added}}
 
| 2: fixed
 
| Content
 
| [[Chat]]
 
| The text to be used as placeholder.
 
 
  |}
 
  |}
  
==== Update Score ====
+
== Play ==
  
This is sent to the client when it should update a scoreboard item.
+
=== Clientbound ===
  
{| class="wikitable"
+
==== Cookie Request (play) ====
 +
 
 +
Requests a cookie that was previously stored.
 +
 
 +
{| class="wikitable" {{added}}
 
  ! Packet ID
 
  ! Packet ID
 
  ! State
 
  ! State
 
  ! Bound To
 
  ! Bound To
  ! Field Name
+
  ! colspan="2"| Field Name
  ! Field Type
+
  ! colspan="2"| Field Type
 
  ! Notes
 
  ! Notes
 
  |-
 
  |-
  | rowspan="12"| {{change|0x5D|0x5F}}
+
  | rowspan="1"| 0x16
  | rowspan="12"| Play
+
  | rowspan="1"| Play
  | rowspan="12"| Client
+
  | rowspan="1"| Client
  | colspan="2"| Entity Name
+
  | colspan="2"| Key
| String (32767)
+
  | colspan="2"| Identifier
| The entity whose score this is. For players, this is their username; for other entities, it is their UUID.
+
  | The identifier of the cookie.
|- {{removed}}
 
  | colspan="2"| Action
 
| VarInt Enum
 
| 0 to create/update an item. 1 to remove an item.
 
|-
 
| colspan="2"| Objective Name
 
| String (32767)
 
  | The name of the objective the score belongs to.
 
|-
 
| colspan="2"| Value
 
| {{change|Optional|}} VarInt
 
| The score to be displayed next to the entry. {{change|Only sent when Action does not equal 1.|}}
 
|- {{added}}
 
| colspan="2"| Has Display Name
 
| Boolean
 
| Whether this score has a custom display name.
 
|- {{added}}
 
| colspan="2"| Display Name
 
| Optional Chat
 
| The custom display name. Only present if the previous boolean is true.
 
|- {{added}}
 
| colspan="2"| Has Number Format
 
| Boolean
 
| Whether this score has a set number format. This overrides the number format set on the objective, if any.
 
|- {{added}}
 
| colspan="2"| Number Format
 
| Optional VarInt Enum
 
| Determines how the score number should be formatted. Only present if the previous boolean is true.
 
|- {{added}}
 
! Number Format
 
! Field Name
 
!
 
!
 
|- {{added}}
 
| 0: blank
 
| ''no fields''
 
| ''no fields''
 
| Show nothing.
 
|- {{added}}
 
| 1: styled
 
| Styling
 
| [[NBT#Specification:compound_tag|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.
 
|- {{added}}
 
| 2: fixed
 
| Content
 
| [[Chat]]
 
| The text to be used as placeholder.
 
 
  |}
 
  |}
  
==== Set Ticking State ====
+
==== Store Cookie (play) ====
  
Used to adjust the ticking rate of the client, and whether it's frozen.
+
Stores some arbitrary data on the client, which persists between server transfers. The Notchian client only accepts cookies of up to 5 kiB in size.
  
 
{| class="wikitable" {{added}}
 
{| class="wikitable" {{added}}
Line 1,549: Line 555:
 
  ! State
 
  ! State
 
  ! Bound To
 
  ! Bound To
  ! Field Name
+
  ! colspan="2"| Field Name
  ! Field Type
+
  ! colspan="2"| Field Type
 
  ! Notes
 
  ! Notes
 
  |-
 
  |-
  | rowspan="2" | 0x6E
+
  | rowspan="2"| 0x6A
  | rowspan="2" | Play
+
  | rowspan="2"| Play
  | rowspan="2" | Server
+
  | rowspan="2"| Client
  | Tick rate
+
  | colspan="2"| Key
  | Float
+
  | colspan="2"| Identifier
  |
+
  | The identifier of the cookie.
 
  |-
 
  |-
  | Is frozen
+
  | colspan="2"| Payload
  | Boolean
+
  | colspan="2"| ByteArray(5120)
  |
+
  | The data of the cookie.
 
  |}
 
  |}
  
==== Step Tick ====
+
==== Transfer (play) ====
  
Advances the client processing by the specified number of ticks. Has no effect is the client ticking is not frozen.
+
Notifies the client that it should transfer to the given server. Cookies previously stored are preserved between server transfers.
  
 
{| class="wikitable" {{added}}
 
{| class="wikitable" {{added}}
Line 1,573: Line 579:
 
  ! State
 
  ! State
 
  ! Bound To
 
  ! Bound To
  ! Field Name
+
  ! colspan="2"| Field Name
  ! Field Type
+
  ! colspan="2"| Field Type
 
  ! Notes
 
  ! Notes
 
  |-
 
  |-
  | 0x6F
+
  | rowspan="2"| 0x72
  | Play
+
  | rowspan="2"| Play
  | Client
+
  | rowspan="2"| Client
  | Tick steps
+
  | colspan="2"| Host
  | VarInt
+
| colspan="2"| String
  |
+
  | The hostname of IP of the server.
 +
|-
 +
| colspan="2"| Port
 +
| colspan="2"| VarInt
 +
  | The port of the server.
 
  |}
 
  |}
  
==== Update Recipes ====
+
==== Update Attributes ====
 +
 
 +
Sets {{Minecraft Wiki|Attribute|attributes}} on the given entity.
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 1,595: Line 607:
 
  ! Notes
 
  ! Notes
 
  |-
 
  |-
  | rowspan="4"| {{change|0x6F|0x73}}
+
  | rowspan="6"| 0x71
  | rowspan="4"| Play
+
  | rowspan="6"| Play
  | rowspan="4"| Client
+
  | rowspan="6"| Client
  | colspan="2"| Num Recipes
+
  | colspan="2"| Entity ID
 +
| colspan="2"| VarInt
 +
|
 +
|-
 +
| colspan="2"| Number Of Properties
 
  | colspan="2"| VarInt
 
  | colspan="2"| VarInt
 
  | Number of elements in the following array.
 
  | Number of elements in the following array.
 
  |-
 
  |-
  | rowspan="3"| Recipe
+
  | rowspan="4"| Property
  | Type
+
  | {{change|Key|Id}}
  | rowspan="3"| Array
+
  | rowspan="4"| Array
  | Identifier
+
  | {{change|Identifier|VarInt Enum}}
  | The recipe type, see below.
+
  | See below.
 
  |-
 
  |-
  | Recipe ID
+
  | Value
  | Identifier
+
  | Double
  |
+
  | See below.
 +
|-
 +
| Number Of Modifiers
 +
| VarInt
 +
| Number of elements in the following array.
 
  |-
 
  |-
  | Data
+
  | Modifiers
  | Varies
+
  | Array of Modifier Data
  | Additional data for the recipe.
+
  | See {{Minecraft Wiki|Attribute#Modifiers}}. Modifier Data defined below.
 
  |}
 
  |}
  
Recipe types:
+
Known Key values (see also {{Minecraft Wiki|Attribute#Modifiers}}):
  
 
{| class="wikitable"
 
{| class="wikitable"
! Type
 
! Description
 
! Data
 
 
  |-
 
  |-
  | <code>minecraft:crafting_shapeless</code>
+
  ! Id
  | Shapeless crafting recipe. All items in the ingredient list must be present, but in any order/slot.
+
  ! Key
  | As follows:
+
  ! Default
  {| class="wikitable"
+
! Min
    ! Name
+
! Max
    ! Type
+
! Label
    ! 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]]
 
    |
 
    |}
 
 
  |-
 
  |-
  | <code>minecraft:crafting_shaped</code>
+
  | 0
  | Shaped crafting recipe. All items must be present in the same pattern (which may be flipped horizontally or translated).
+
  | generic.armor
  | As follows:
+
  | 0.0
  {| class="wikitable"
+
| 0.0
    ! Name
+
| 30.0
    ! Type
+
| Armor.
    ! Description
 
    |- {{removed}}
 
    | Width
 
    | VarInt
 
    |
 
    |- {{removed}}
 
    | 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
 
    |- {{added}}
 
    | Width
 
    | VarInt
 
    |
 
    |- {{added}}
 
    | Height
 
    | VarInt
 
    |
 
    |-
 
    | Ingredients
 
    | Array of Ingredient
 
    | Length is <code>width * height</code>. Indexed by <code>x + (y * width)</code>.
 
    |-
 
    | Result
 
    | [[Slot]]
 
    |-
 
    | Show notification
 
    | Boolean
 
    | Show a toast when the recipe is [[Protocol#Update_Recipe_Book|added]].
 
    |}
 
 
  |-
 
  |-
  | <code>minecraft:crafting_special_armordye</code>
+
  | 1
  | Recipe for dying leather armor
+
  | generic.armor_toughness
  | rowspan="14" | As follows:
+
  | 0.0
  {| class="wikitable"
+
| 0.0
    ! Name
+
| 20.0
    ! Type
+
| Armor Toughness.
    ! Description
 
    |-
 
    |Category
 
    |VarInt Enum
 
    |Building = 0, Redstone = 1, Equipment = 2, Misc = 3
 
    |}
 
 
  |-
 
  |-
  | <code>minecraft:crafting_special_bookcloning</code>
+
  | 2
  | Recipe for copying contents of written books
+
  | generic.attack_damage
 +
| 2.0
 +
| 0.0
 +
| 2048.0
 +
| Attack Damage.
 
  |-
 
  |-
  | <code>minecraft:crafting_special_mapcloning</code>
+
  | 3
  | Recipe for copying maps
+
  | generic.attack_knockback
 +
| 0.0
 +
| 0.0
 +
| 5.0
 +
| Attack Knockback.
 
  |-
 
  |-
  | <code>minecraft:crafting_special_mapextending</code>
+
  | 4
  | Recipe for adding paper to maps
+
  | generic.attack_speed
 +
| 4.0
 +
| 0.0
 +
| 1024.0
 +
| Attack Speed.
 +
|- {{added}}
 +
| 5
 +
| generic.block_interaction_range
 +
| 4.5
 +
| 0.0
 +
| 64.0
 +
| Block Interaction Range.
 +
|- {{added}}
 +
| 6
 +
| generic.entity_interaction_range
 +
| 3.0
 +
| 0.0
 +
| 64.0
 +
| Entity Interaction Range.
 
  |-
 
  |-
  | <code>minecraft:crafting_special_firework_rocket</code>
+
  | 7
  | Recipe for making firework rockets
+
  | generic.flying_speed
 +
| 0.4
 +
| 0.0
 +
| 1024.0
 +
| Flying Speed.
 
  |-
 
  |-
  | <code>minecraft:crafting_special_firework_star</code>
+
  | 8
  | Recipe for making firework stars
+
  | generic.follow_range
 +
| 32.0
 +
| 0.0
 +
| 2048.0
 +
| Follow Range.
 
  |-
 
  |-
  | <code>minecraft:crafting_special_firework_star_fade</code>
+
  | 9
  | Recipe for making firework stars fade between multiple colors
+
  | horse.jump_strength
 +
| 0.7
 +
| 0.0
 +
| 2.0
 +
| Jump Strength.
 
  |-
 
  |-
  | <code>minecraft:crafting_special_repairitem</code>
+
  | 10
  | Recipe for repairing items via crafting
+
  | generic.knockback_resistance
 +
| 0.0
 +
| 0.0
 +
| 1.0
 +
| Knockback Resistance.
 
  |-
 
  |-
  | <code>minecraft:crafting_special_tippedarrow</code>
+
  | 11
  | Recipe for crafting tipped arrows
+
  | generic.luck
 +
| 0.0
 +
| -1024.0
 +
| 1024.0
 +
| Luck.
 
  |-
 
  |-
  | <code>minecraft:crafting_special_bannerduplicate</code>
+
  | 12
  | Recipe for copying banner patterns
+
  | generic.max_absorption
 +
| 0.0
 +
| 0.0
 +
| 2048.0
 +
| Max Absorption.
 
  |-
 
  |-
  | <code>minecraft:crafting_special_shielddecoration</code>
+
  | 13
  | Recipe for applying a banner's pattern to a shield
+
  | generic.max_health
 +
| 20.0
 +
| 1.0
 +
| 1024.0
 +
| Max Health.
 
  |-
 
  |-
  | <code>minecraft:crafting_special_shulkerboxcoloring</code>
+
  | 14
  | Recipe for recoloring a shulker box
+
  | generic.movement_speed
 +
| 0.7
 +
| 0.0
 +
| 1024.0
 +
| Movement Speed.
 +
|- {{added}}
 +
| 15
 +
| generic.scale
 +
| 1.0
 +
| 0.0625
 +
| 16.0
 +
| Scale.
 
  |-
 
  |-
  | <code>minecraft:crafting_special_suspiciousstew</code>
+
  | 16
  | Recipe for crafting suspicious stews
+
  | zombie.spawn_reinforcements
  |-
+
  | 0.0
  | <code>minecraft:crafting_decorated_pot</code>
+
  | 0.0
  | Recipe for crafting decorated pots
+
  | 1.0
|-
+
  | Spawn Reinforcements Chance.
| <code>minecraft:smelting</code>
+
  |- {{added}}
| Smelting recipe
+
  | 17
| rowspan="4"| As follows:
+
  | generic.step_height
  {| class="wikitable"
+
  | 0.6
    ! Name
+
  | 0.0
    ! Type
+
| 10.0
    ! Description
+
  | Step Height.
    |-
 
    | 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:
+
''Modifier Data'' structure:
  
 
{| class="wikitable"
 
{| class="wikitable"
! Name
 
! Type
 
! Description
 
 
  |-
 
  |-
  | Count
+
! Field Name
  | VarInt
+
! Field Type
  | Number of elements in the following array.
+
! Notes
 +
|-
 +
| UUID
 +
| UUID
 +
|
 +
|-
 +
  | Amount
 +
  | Double
 +
  | May be positive or negative.
 
  |-
 
  |-
  | Items
+
  | Operation
  | Array of [[Slot]]
+
  | Byte
  | Any item in this array may be used for the recipe.  The count of each item should be 1.
+
  | See below.
 
  |}
 
  |}
  
=== Serverbound ===
+
The operation controls how the base value of the modifier is changed.
 +
 
 +
* 0: Add/subtract amount
 +
* 1: Add/subtract amount percent of the current value
 +
* 2: Multiply by amount percent
  
==== Change Container Slot State ====
+
All of the 0's are applied first, and then the 1's, and then the 2's.
  
This packet is sent by the client when toggling the state of a Crafter.
+
==== Entity Effect ====
  
{| class="wikitable" {{added}}
+
{| class="wikitable"
 
  ! Packet ID
 
  ! Packet ID
 
  ! State
 
  ! State
Line 1,889: Line 814:
 
  ! Notes
 
  ! Notes
 
  |-
 
  |-
  | rowspan="3"| 0x0F
+
  | rowspan="7"| 0x72
  | rowspan="3"| Play
+
  | rowspan="7"| Play
  | rowspan="3"| Server
+
  | rowspan="7"| Client
  | Slot ID
+
  | Entity ID
 +
| VarInt
 +
|
 +
|-
 +
| Effect ID
 
  | VarInt
 
  | VarInt
  | This is the ID of the slot that was changed.
+
  | See {{Minecraft Wiki|Status effect#Effect list|this table}}.
 +
|-
 +
| Amplifier
 +
| Byte
 +
| Notchian client displays effect level as Amplifier + 1.
 
  |-
 
  |-
  | Window ID
+
  | Duration
 
  | VarInt
 
  | VarInt
  | This is the ID of the window that was changed.
+
  | Duration in ticks. (-1 for infinite)
 
  |-
 
  |-
  | State
+
  | Flags
 +
| Byte
 +
| Bit field, see below.
 +
|- {{removed}}
 +
| Has Factor Data
 
  | Boolean
 
  | Boolean
  | The new state of the slot. True for enabled, false for disabled.
+
  | Used in DARKNESS effect
 +
|- {{removed}}
 +
| Factor Codec
 +
| NBT Tag
 +
| See below
 
  |}
 
  |}
  
==== Resource Pack Response (play) ====
+
{{Need Info|What exact effect does the blend bit flag have on the client? What happens if it is used on effects besides DARKNESS?}}
  
{| class="wikitable"
+
Within flags:
! 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:
+
* 0x01: Is ambient - was the effect spawned from a beacon?  All beacon-generated effects are ambient.  Ambient effects use a different icon in the HUD (blue border rather than gray).  If all effects on an entity are ambient, the [[Entity_metadata#Living Entity|"Is potion effect ambient" living metadata field]] should be set to true.  Usually should not be enabled.
 +
* 0x02: Show particles - should all particles from this effect be hidden?  Effects with particles hidden are not included in the calculation of the effect color, and are not rendered on the HUD (but are still rendered within the inventory).  Usually should be enabled.
 +
* 0x04: Show icon - should the icon be displayed on the client?  Usually should be enabled.
 +
* {{change||0x08: Blend - should the effect's hard-coded blending be applied?  Currently only used in the DARKNESS effect to apply extra void fog and adjust the gamma value for lighting.}}
  
{| class="wikitable" {{added}}
+
{{change|Factor Data|}}
  ! ID
+
{| class="wikitable" {{removed}}
  ! Result
+
  !Name
 +
  !Type
 +
!style="width: 250px;" colspan="2"| Notes
 
  |-
 
  |-
  | 0
+
  | padding_duration
  | Successfully downloaded
+
| TAG_INT
 +
  |
 
  |-
 
  |-
  | 1
+
  | factor_start
  | Declined
+
| TAG_FLOAT
 +
  |
 
  |-
 
  |-
  | 2
+
  | factor_target
  | Failed to download
+
| TAG_FLOAT
 +
  |
 
  |-
 
  |-
  | 3
+
  | factor_current
  | Accepted
+
| TAG_FLOAT
 +
  |
 
  |-
 
  |-
  | 4
+
  | effect_changed_timestamp
  | Invalid URL
+
  | TAG_INT
 
  |-
 
  |-
  | 5
+
  | factor_previous_frame
  | Failed to reload
+
  | TAG_FLOAT
 
  |-
 
  |-
  | 6
+
  | had_effect_last_tick
  | Discarded
+
  | TAG_BOOLEAN
 
  |}
 
  |}
  
==== Program Jigsaw Block ====
+
=== Serverbound ===
  
Sent when Done is pressed on the {{Minecraft Wiki|Jigsaw Block}} interface.
+
==== Cookie Response (play) ====
  
{| class="wikitable"
+
Response to a [[#Cookie_Request_(play)|Cookie Request (play)]] from the server. The Notchian server only accepts responses of up to 5 kiB in size.
 +
 
 +
{| class="wikitable" {{added}}
 
  ! Packet ID
 
  ! Packet ID
 
  ! State
 
  ! State
 
  ! Bound To
 
  ! Bound To
  ! Field Name
+
  ! colspan="2"| Field Name
  ! Field Type
+
  ! colspan="2"| Field Type
 
  ! Notes
 
  ! Notes
 
  |-
 
  |-
  | rowspan="8"| 0x2F
+
  | rowspan="3"| 0x6A
  | rowspan="8"| Play
+
  | rowspan="3"| Play
  | rowspan="8"| Server
+
  | rowspan="3"| Server
  | Location
+
  | colspan="2"| Key
  | Position
+
  | colspan="2"| Identifier
  | Block entity location
+
  | The identifier of the cookie.
 
  |-
 
  |-
  | Name
+
  | colspan="2"| Has Payload
  | Identifier
+
  | colspan="2"| Boolean
  |
+
  | The payload is only present if the cookie exists on the client.
 
  |-
 
  |-
  | Target
+
  | colspan="2"| Payload
| Identifier
+
  | colspan="2"| Optional ByteArray(5120)
|
+
  | The data of the cookie, if any.
|-
 
| Pool
 
| Identifier
 
|
 
  |-
 
| Final state
 
| String (32767)
 
| "Turns into" on the GUI, <code>final_state</code> in NBT.
 
|-
 
| Joint type
 
| String (32767)
 
  | <code>rollable</code> if the attached piece can be rotated, else <code>aligned</code>.
 
|- {{added}}
 
| Selection priority
 
| VarInt
 
|
 
|- {{added}}
 
| Placement priority
 
| VarInt
 
|
 
 
  |}
 
  |}
  
 
[[Category:Minecraft Modern]]
 
[[Category:Minecraft Modern]]

Revision as of 05:25, 26 February 2024

This page documents the changes from the last stable Minecraft release (currently 1.20.4, protocol 765) to the current pre-release (currently 24w03b, protocol Snapshot 172). Note that this page contains bleeding-edge information that may not be completely or correctly documented.

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

Contents

Data types

No changes so far.

Packets

ID Packet name Documentation
Handshake serverbound
0x00 Handshake Current Pre
Login clientbound
0x05 Cookie Request (login) Pre
Login serverbound
0x04 Cookie Response (login) Pre
Configuration clientbound
0x00 Cookie Request (configuration) Pre
0x00 0x01 Clientbound Plugin Message (configuration) Current (unchanged)
0x01 0x02 Disconnect (configuration) Current (unchanged)
0x02 0x03 Finish Configuration Current (unchanged)
0x03 0x04 Clientbound Keep Alive (configuration) Current (unchanged)
0x04 0x05 Ping (configuration) Current (unchanged)
0x05 0x06 Registry Data Current (unchanged)
0x06 0x07 Remove Resource Pack (configuration) Current (unchanged)
0x07 0x08 Add Resource Pack (configuration) Current (unchanged)
0x09 Store Cookie (configuration) Pre
0x0A Transfer (configuration) Pre
0x08 0x0B Feature Flags Current (unchanged)
0x09 0x0C Update Tags (configuration) Current (unchanged)
Configuration serverbound
0x01 Cookie Response (configuration) Pre
0x01 0x02 Serverbound Plugin Message (configuration) Current (unchanged)
0x02 0x03 Finish Configuration Current (unchanged)
0x03 0x04 Serverbound Keep Alive (configuration) Current (unchanged)
0x04 0x05 Pong (configuration) Current (unchanged)
0x05 0x06 Resource Pack Response (configuration) Current (unchanged)
Play clientbound
0x16 Cookie Request (Play) Pre
0x16 0x17 Set Cooldown Current (unchanged)
0x17 0x18 Chat Suggestions Current (unchanged)
0x18 0x19 Clientbound Plugin Message (play) Current (unchanged)
0x19 0x1A Damage Event Current (unchanged)
0x1A 0x1B Delete Message Current (unchanged)
0x1B 0x1C Disconnect (play) Current (unchanged)
0x1C 0x1D Disguised Chat Message Current (unchanged)
0x1D 0x1E Entity Event Current (unchanged)
0x1E 0x1F Explosion Current (unchanged)
0x1F 0x20 Unload Chunk Current (unchanged)
0x20 0x21 Game Event Current (unchanged)
0x21 0x22 Open Horse Screen Current (unchanged)
0x22 0x23 Hurt Animation Current (unchanged)
0x23 0x24 Initialize World Border Current (unchanged)
0x24 0x25 Clientbound Keep Alive (play) Current (unchanged)
0x25 0x26 Chunk Data and Update Light Current (unchanged)
0x26 0x27 World Event Current (unchanged)
0x27 0x28 Particle Current (unchanged)
0x28 0x29 Update Light Current (unchanged)
0x29 0x2A Login (play) Current (unchanged)
0x2A 0x2B Map Data Current (unchanged)
0x2B 0x2C Merchant Offers Current (unchanged)
0x2C 0x2D Update Entity Position Current (unchanged)
0x2D 0x2E Update Entity Position and Rotation Current (unchanged)
0x2E 0x2F Update Entity Rotation Current (unchanged)
0x2F 0x30 Move Vehicle Current (unchanged)
0x30 0x31 Open Book Current (unchanged)
0x31 0x32 Open Screen Current (unchanged)
0x32 0x33 Open Sign Editor Current (unchanged)
0x33 0x34 Ping (play) Current (unchanged)
0x34 0x35 Ping Response (play) Current (unchanged)
0x35 0x36 Place Ghost Recipe Current (unchanged)
0x36 0x37 Player Abilities Current (unchanged)
0x37 0x38 Player Chat Message Current (unchanged)
0x38 0x39 End Combat Current (unchanged)
0x39 0x3A Enter Combat Current (unchanged)
0x3A 0x3B Combat Death Current (unchanged)
0x3B 0x3C Player Info Remove Current (unchanged)
0x3C 0x3D Player Info Update Current (unchanged)
0x3D 0x3E Look At Current (unchanged)
0x3E 0x3F Synchronize Player Position Current (unchanged)
0x3F 0x40 Update Recipe Book Current (unchanged)
0x40 0x41 Remove Entities Current (unchanged)
0x41 0x42 Remove Entity Effect Current (unchanged)
0x42 0x43 Reset Score Current (unchanged)
0x43 0x44 Remove Resource Pack (play) Current (unchanged)
0x44 0x45 Add Resource Pack (play) Current (unchanged)
0x45 0x46 Respawn Current (unchanged)
0x46 0x47 Set Head Rotation Current (unchanged)
0x47 0x48 Update Section Blocks Current (unchanged)
0x48 0x49 Select Advancements Tab Current (unchanged)
0x49 0x4A Server Data Current (unchanged)
0x4A 0x4B Set Action Bar Text Current (unchanged)
0x4B 0x4C Set Border Center Current (unchanged)
0x4C 0x4D Set Border Lerp Size Current (unchanged)
0x4D 0x4E Set Border Size Current (unchanged)
0x4E 0x4F Set Border Warning Delay Current (unchanged)
0x4F 0x50 Set Border Warning Distance Current (unchanged)
0x50 0x51 Set Camera Current (unchanged)
0x51 0x52 Set Held Item Current (unchanged)
0x52 0x53 Set Center Chunk Current (unchanged)
0x53 0x54 Set Render Distance Current (unchanged)
0x54 0x55 Set Default Spawn Position Current (unchanged)
0x55 0x56 Display Objective Current (unchanged)
0x56 0x57 Set Entity Metadata Current (unchanged)
0x57 0x58 Link Entities Current (unchanged)
0x58 0x59 Set Entity Velocity Current (unchanged)
0x59 0x5A Set Equipment Current (unchanged)
0x5A 0x5B Set Experience Current (unchanged)
0x5B 0x5C Set Health Current (unchanged)
0x5C 0x5D Update Objectives Current (unchanged)
0x5D 0x5E Set Passengers Current (unchanged)
0x5E 0x5F Update Teams Current (unchanged)
0x5F 0x60 Update Score Current (unchanged)
0x60 0x61 Set Simulation Distance Current (unchanged)
0x61 0x62 Set Subtitle Text Current (unchanged)
0x62 0x63 Update Time Current (unchanged)
0x63 0x64 Set Title Text Current (unchanged)
0x64 0x65 Set Title Animation Times Current (unchanged)
0x65 0x66 Entity Sound Effect Current (unchanged)
0x66 0x67 Sound Effect Current (unchanged)
0x67 0x68 Start Configuration Current (unchanged)
0x68 0x69 Stop Sound Current (unchanged)
0x6A Store Cookie (Play) Pre
0x69 0x6B System Chat Message Current (unchanged)
0x6A 0x6C Set Tab List Header And Footer Current (unchanged)
0x6B 0x6D Tag Query Response Current (unchanged)
0x6C 0x6E Pickup Item Current (unchanged)
0x6D 0x6F Teleport Entity Current (unchanged)
0x6E 0x70 Set Ticking State Current (unchanged)
0x6F 0x71 Step Tick Current (unchanged)
0x72 Transfer (Play) Pre
0x70 0x73 Update Advancements Current (unchanged)
0x71 0x74 Update Attributes Current Pre
0x72 0x75 Entity Effect Current Pre
0x73 0x76 Update Recipes Current (unchanged)
0x74 0x77 Update Tags (play) Current (unchanged)
Play serverbound
0x10 Cookie Response (play) Pre
0x10 0x11 Serverbound Plugin Message (play) Current (unchanged)
0x11 0x12 Edit Book Current (unchanged)
0x12 0x13 Query Entity Tag Current (unchanged)
0x13 0x14 Interact Current (unchanged)
0x14 0x15 Jigsaw Generate Current (unchanged)
0x15 0x16 Serverbound Keep Alive (play) Current (unchanged)
0x16 0x17 Lock Difficulty Current (unchanged)
0x17 0x18 Set Player Position Current (unchanged)
0x18 0x19 Set Player Position and Rotation Current (unchanged)
0x19 0x1A Set Player Rotation Current (unchanged)
0x1A 0x1B Set Player On Ground Current (unchanged)
0x1B 0x1C Move Vehicle Current (unchanged)
0x1C 0x1D Paddle Boat Current (unchanged)
0x1D 0x1E Pick Item Current (unchanged)
0x1E 0x1F Ping Request (play) Current (unchanged)
0x1F 0x20 Place Recipe Current (unchanged)
0x20 0x21 Player Abilities Current (unchanged)
0x21 0x22 Player Action Current (unchanged)
0x22 0x23 Player Command Current (unchanged)
0x23 0x24 Player Input Current (unchanged)
0x24 0x25 Pong (play) Current (unchanged)
0x25 0x26 Change Recipe Book Settings Current (unchanged)
0x26 0x27 Set Seen Recipe Current (unchanged)
0x27 0x28 Rename Item Current (unchanged)
0x28 0x29 Resource Pack Response (play) Current (unchanged)
0x29 0x2A Seen Advancements Current (unchanged)
0x2A 0x2B Select Trade Current (unchanged)
0x2B 0x2C Set Beacon Effect Current (unchanged)
0x2C 0x2D Set Held Item Current (unchanged)
0x2D 0x2E Program Command Block Current (unchanged)
0x2E 0x2F Program Command Block Minecart Current (unchanged)
0x2F 0x30 Set Creative Mode Slot Current (unchanged)
0x30 0x31 Program Jigsaw Block Current (unchanged)
0x31 0x32 Program Structure Block Current (unchanged)
0x32 0x33 Update Sign Current (unchanged)
0x33 0x34 Swing Arm Current (unchanged)
0x34 0x35 Teleport To Entity Current (unchanged)
0x35 0x36 Use Item On Current (unchanged)
0x36 0x37 Use Item Current (unchanged)

New/modified data types

No changes so far.

Entity Metadata

Type Name Value Notes
0 Byte Byte
1 VarInt VarInt
2 VarLong VarLong
3 Float Float
4 String String
5 Text Component Text Component
6 Optional Text Component (Boolean, Optional Text Component) Text Component is present if the Boolean is set to true.
7 Slot Slot
8 Boolean Boolean
9 Rotations (Float, Float, Float) rotation on x, rotation on y, rotation on z
10 Position Position
11 Optional Position (Boolean, Optional Position) Position is present if the Boolean is set to true.
12 Direction VarInt Enum Down = 0, Up = 1, North = 2, South = 3, West = 4, East = 5
13 Optional UUID (Boolean, Optional UUID) UUID is present if the Boolean is set to true.
14 Block State VarInt An ID in the block state registry.
15 Optional Block State VarInt 0 for absent (air is unrepresentable); otherwise, an ID in the block state registry.
16 NBT NBT
17 Particle (VarInt, Varies) particle type (an ID in the minecraft:particle_type registry), particle data (See Particles.)
18 Villager Data (VarInt, VarInt, VarInt) villager type, villager profession, level (See below.)
19 Optional VarInt VarInt 0 for absent; 1 + actual value otherwise. Used for entity IDs.
20 Pose VarInt Enum STANDING = 0, FALL_FLYING = 1, SLEEPING = 2, SWIMMING = 3, SPIN_ATTACK = 4, SNEAKING = 5, LONG_JUMPING = 6, DYING = 7, CROAKING = 8, USING_TONGUE = 9, SITTING = 10, ROARING = 11, SNIFFING = 12, EMERGING = 13, DIGGING = 14, SLIDING = 15, SHOOTING = 16, INHALING = 17
21 Cat Variant VarInt An ID in the minecraft:cat_variant registry.
22 Frog Variant VarInt An ID in the minecraft:frog_variant registry.
23 Optional Global Position (Boolean, Optional Identifier, Optional Position) dimension identifier, position; only if the Boolean is set to true.
24 Painting Variant VarInt An ID in the minecraft:painting_variant registry.
25 Sniffer State VarInt Enum IDLING = 0, FEELING_HAPPY = 1, SCENTING = 2, SNIFFING = 3, SEARCHING = 4, DIGGING = 5, RISING = 6
26 Armadillo State VarInt Enum IDLE = 0, ROLLING = 1, SCARED = 2
26 27 Vector3 (Float, Float, Float) x, y, z
27 28 Quaternion (Float, Float, Float, Float) x, y, z, w

Armadillo

Extends Animal.

Index Type Meaning Default
17 Armadillo State (26) Armadillo State IDLE

Block Actions

No changes so far.

Inventories

No changes so far.

Plugin Channels

No changes so far.

Handshake

Serverbound

Handshake

This causes the server to switch into the target state.

Packet ID State Bound To Field Name Field Type Notes
0x00 Handshaking Server Protocol Version VarInt See protocol version numbers (currently 765 in Minecraft 1.20.4).
Server Address String (255) Hostname or IP, e.g. localhost or 127.0.0.1, that was used to connect. The Notchian server does not use this information. Note that SRV records are a simple redirect, e.g. if _minecraft._tcp.example.com points to mc.example.org, users connecting to example.com will provide example.org as server address in addition to connecting to it.
Server Port Unsigned Short Default is 25565. The Notchian server does not use this information.
Next State VarInt Enum 1 for Status, 2 for Login, 3 for Transfer.

Status

Clientbound

No changes so far.

Serverbound

No changes so far.

Login

Clientbound

Cookie Request (login)

Requests a cookie that was previously stored.

Packet ID State Bound To Field Name Field Type Notes
0x05 Login Client Key Identifier The identifier of the cookie.

Serverbound

Cookie Response (login)

Response to a Cookie Request (login) from the server. The Notchian server only accepts responses of up to 5 kiB in size.

Packet ID State Bound To Field Name Field Type Notes
0x04 Login Server Key Identifier The identifier of the cookie.
Has Payload Boolean The payload is only present if the cookie exists on the client.
Payload Optional ByteArray(5120) The data of the cookie, if any.

Configuration

Clientbound

Cookie Request (configuration)

Requests a cookie that was previously stored.

Packet ID State Bound To Field Name Field Type Notes
0x00 Configuration Client Key Identifier The identifier of the cookie.

Store Cookie (configuration)

Stores some arbitrary data on the client, which persists between server transfers. The Notchian client only accepts cookies of up to 5 kiB in size.

Packet ID State Bound To Field Name Field Type Notes
0x09 Configuration Client Key Identifier The identifier of the cookie.
Payload ByteArray(5120) The data of the cookie.

Transfer (configuration)

Notifies the client that it should transfer to the given server. Cookies previously stored are preserved between server transfers.

Packet ID State Bound To Field Name Field Type Notes
0x0A Configuration Client Host String The hostname of IP of the server.
Port VarInt The port of the server.

Serverbound

Cookie Response (configuration)

Response to a Cookie Request (configuration) from the server. The Notchian server only accepts responses of up to 5 kiB in size.

Packet ID State Bound To Field Name Field Type Notes
0x01 Configuration Server Key Identifier The identifier of the cookie.
Has Payload Boolean The payload is only present if the cookie exists on the client.
Payload Optional ByteArray(5120) The data of the cookie, if any.

Play

Clientbound

Cookie Request (play)

Requests a cookie that was previously stored.

Packet ID State Bound To Field Name Field Type Notes
0x16 Play Client Key Identifier The identifier of the cookie.

Store Cookie (play)

Stores some arbitrary data on the client, which persists between server transfers. The Notchian client only accepts cookies of up to 5 kiB in size.

Packet ID State Bound To Field Name Field Type Notes
0x6A Play Client Key Identifier The identifier of the cookie.
Payload ByteArray(5120) The data of the cookie.

Transfer (play)

Notifies the client that it should transfer to the given server. Cookies previously stored are preserved between server transfers.

Packet ID State Bound To Field Name Field Type Notes
0x72 Play Client Host String The hostname of IP of the server.
Port VarInt The port of the server.

Update Attributes

Sets attributes on the given entity.

Packet ID State Bound To Field Name Field Type Notes
0x71 Play Client Entity ID VarInt
Number Of Properties VarInt Number of elements in the following array.
Property Key Id Array Identifier VarInt Enum See below.
Value Double See below.
Number Of Modifiers VarInt Number of elements in the following array.
Modifiers Array of Modifier Data See Attribute#Modifiers. Modifier Data defined below.

Known Key values (see also Attribute#Modifiers):

Id Key Default Min Max Label
0 generic.armor 0.0 0.0 30.0 Armor.
1 generic.armor_toughness 0.0 0.0 20.0 Armor Toughness.
2 generic.attack_damage 2.0 0.0 2048.0 Attack Damage.
3 generic.attack_knockback 0.0 0.0 5.0 Attack Knockback.
4 generic.attack_speed 4.0 0.0 1024.0 Attack Speed.
5 generic.block_interaction_range 4.5 0.0 64.0 Block Interaction Range.
6 generic.entity_interaction_range 3.0 0.0 64.0 Entity Interaction Range.
7 generic.flying_speed 0.4 0.0 1024.0 Flying Speed.
8 generic.follow_range 32.0 0.0 2048.0 Follow Range.
9 horse.jump_strength 0.7 0.0 2.0 Jump Strength.
10 generic.knockback_resistance 0.0 0.0 1.0 Knockback Resistance.
11 generic.luck 0.0 -1024.0 1024.0 Luck.
12 generic.max_absorption 0.0 0.0 2048.0 Max Absorption.
13 generic.max_health 20.0 1.0 1024.0 Max Health.
14 generic.movement_speed 0.7 0.0 1024.0 Movement Speed.
15 generic.scale 1.0 0.0625 16.0 Scale.
16 zombie.spawn_reinforcements 0.0 0.0 1.0 Spawn Reinforcements Chance.
17 generic.step_height 0.6 0.0 10.0 Step Height.

Modifier Data structure:

Field Name Field Type Notes
UUID UUID
Amount Double May be positive or negative.
Operation Byte See below.

The operation controls how the base value of the modifier is changed.

  • 0: Add/subtract amount
  • 1: Add/subtract amount percent of the current value
  • 2: Multiply by amount percent

All of the 0's are applied first, and then the 1's, and then the 2's.

Entity Effect

Packet ID State Bound To Field Name Field Type Notes
0x72 Play Client Entity ID VarInt
Effect ID VarInt See this table.
Amplifier Byte Notchian client displays effect level as Amplifier + 1.
Duration VarInt Duration in ticks. (-1 for infinite)
Flags Byte Bit field, see below.
Has Factor Data Boolean Used in DARKNESS effect
Factor Codec NBT Tag See below
Huh.png The following information needs to be added to this page:
What exact effect does the blend bit flag have on the client? What happens if it is used on effects besides DARKNESS?

Within flags:

  • 0x01: Is ambient - was the effect spawned from a beacon? All beacon-generated effects are ambient. Ambient effects use a different icon in the HUD (blue border rather than gray). If all effects on an entity are ambient, the "Is potion effect ambient" living metadata field should be set to true. Usually should not be enabled.
  • 0x02: Show particles - should all particles from this effect be hidden? Effects with particles hidden are not included in the calculation of the effect color, and are not rendered on the HUD (but are still rendered within the inventory). Usually should be enabled.
  • 0x04: Show icon - should the icon be displayed on the client? Usually should be enabled.
  • 0x08: Blend - should the effect's hard-coded blending be applied? Currently only used in the DARKNESS effect to apply extra void fog and adjust the gamma value for lighting.

Factor Data

Name Type Notes
padding_duration TAG_INT
factor_start TAG_FLOAT
factor_target TAG_FLOAT
factor_current TAG_FLOAT
effect_changed_timestamp TAG_INT
factor_previous_frame TAG_FLOAT
had_effect_last_tick TAG_BOOLEAN

Serverbound

Cookie Response (play)

Response to a Cookie Request (play) from the server. The Notchian server only accepts responses of up to 5 kiB in size.

Packet ID State Bound To Field Name Field Type Notes
0x6A Play Server Key Identifier The identifier of the cookie.
Has Payload Boolean The payload is only present if the cookie exists on the client.
Payload Optional ByteArray(5120) The data of the cookie, if any.