Difference between revisions of "Pre-release protocol"

From wiki.vg
Jump to navigation Jump to search
m (→‎Shulker: Note about uncertainty on the color)
(Switched to difference between 1.17.1 and 1.18 experimental snapshot 2)
Tag: Replaced
 
(775 intermediate revisions by 43 users not shown)
Line 1: Line 1:
This page documents the changes from the [[Protocol|last stable Minecraft release]] (currently [[Protocol version numbers|1.10.2, protocol 210]]) to the current pre-release (currently [[Protocol version numbers|16w39a, protocol 307]]). 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.17.1, protocol 756]]) to the current pre-release (currently [[Protocol version numbers|1.18 experimental snapshot 2, protocol {{Snapshot PVN|1073741866}}]]). 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 14: Line 14:
  
 
No changes so far.
 
No changes so far.
 
{| class="wikitable"
 
! ID
 
! Packet name
 
!colspan="2"| Documentation
 
|-
 
!colspan="4"| Handshaking serverbound
 
{{PacketList|0x00|Handshake}}
 
|-
 
!colspan="4"| Play clientbound
 
{{PacketList|0x03|Spawn Mob}}
 
{{PacketList|0x0E|Tab-Complete (clientbound)}}
 
{{PacketList|0x1B|Entity Status}}
 
{{PacketList|0x48|Collect Item}}
 
|-
 
!colspan="4"| Play serverbound
 
{{PacketList|0x02|Chat Message (serverbound)}}
 
|-
 
|}
 
  
 
== New/modified data types ==
 
== New/modified data types ==
  
=== Mobs ===
+
No changes so far.
  
Mobs are spawned via [[Protocol#Spawn_Mob|Spawn Mob]]. There are two extra mob types in the code that refer to mobs classes that can never spawn: Mob and Monster (they are always subclasses, aka another more specific type).
+
== Entity Metadata ==
  
{| class="wikitable"
+
No changes so far.
|-
 
! Type
 
! Name
 
! x, z
 
! y
 
! ID
 
|- style="background-color: #d9ead3;"
 
| 4
 
| ElderGuardian
 
| 0.85
 
| 0.85
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:elder_guardian</code>
 
|- style="background-color: #d9ead3;"
 
| 5
 
| WitherSkeleton
 
| 0.7
 
| 2.4
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:wither_skeleton</code>
 
|- style="background-color: #d9ead3;"
 
| 6
 
| Stray
 
| 0.6
 
| 1.99
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:stray</code>
 
|- style="background-color: #d9ead3;"
 
| 23
 
| Husk
 
| 0.6
 
| 1.95
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:husk</code>
 
|- style="background-color: #d9ead3;"
 
| 27
 
| ZombieVillager
 
| 0.6
 
| 1.95
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:zombie_villager</code>
 
|- style="background-color: #d9ead3;"
 
| 28
 
| SkeletonHorse
 
| 1.396484
 
| 1.6
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:skeleton_horse</code>
 
|- style="background-color: #d9ead3;"
 
| 29
 
| ZombieHorse
 
| 1.396484
 
| 1.6
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:zombie_horse</code>
 
|- style="background-color: #d9ead3;"
 
| 31
 
| Donkey
 
| 1.396484
 
| 1.6
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:donkey</code>
 
|- style="background-color: #d9ead3;"
 
| 32
 
| Mule
 
| 1.396484
 
| 1.6
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:mule</code>
 
|- style="background-color: #d9ead3;"
 
| 33
 
| EvocationFangs
 
| 0.5
 
| 0.8
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:evocation_fangs</code>
 
|- style="background-color: #d9ead3;"
 
| 34
 
| EvocationIllager
 
| 0.6
 
| 1.95
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:evocation_illager</code>
 
|- style="background-color: #d9ead3;"
 
| 35
 
| Vex
 
| 0.4
 
| 0.8
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:vex</code>
 
|- style="background-color: #d9ead3;"
 
| 36
 
| VindicationIllager
 
| 0.6
 
| 1.95
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:vindication_illager</code>
 
|-
 
| 48
 
| Mob
 
| N/A
 
| N/A
 
|-
 
| 49
 
| Monster
 
| N/A
 
| N/A
 
|-
 
| 50
 
| Creeper
 
| 0.6
 
| 1.7
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:creeper</code>
 
|-
 
| 51
 
| Skeleton
 
| 0.6
 
| 1.99
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:skeleton</code>
 
|-
 
| 52
 
| Spider
 
| 1.4
 
| 0.9
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:spider</code>
 
|-
 
| 53
 
| {{change|Giant Zombie|Giant}}
 
| 0.6 * 6
 
| 1.8 * 6
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:giant</code>
 
|-
 
| 54
 
| Zombie
 
| 0.6
 
| 1.8
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:zombie</code>
 
|-
 
| 55
 
| Slime
 
| 0.51000005 * size
 
| 0.51000005 * size
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:slime</code>
 
|-
 
| 56
 
| Ghast
 
| 4
 
| 4
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:ghast</code>
 
|-
 
| 57
 
| {{change|Zombie Pigman|PigZombie}}
 
| 0.6
 
| 1.8
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:zombie_pigman</code>
 
|-
 
| 58
 
| Enderman
 
| 0.6
 
| 2.9
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:enderman</code>
 
|-
 
| 59
 
| {{change|Cave Spider|CaveSpider}}
 
| 0.7
 
| 0.5
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:cave_spider</code>
 
|-
 
| 60
 
| Silverfish
 
| 0.4
 
| 0.3
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:silverfish</code>
 
|-
 
| 61
 
| Blaze
 
| 0.6
 
| 1.8
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:blaze</code>
 
|-
 
| 62
 
| {{change|Magma Cube|LavaSlime}}
 
| 0.51000005 * size
 
| 0.51000005 * size
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:magma_cube</code>
 
|-
 
| 63
 
| {{change|Ender Dragon|EnderDragon}}
 
| 16.0
 
| 8.0
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:ender_dragon</code>
 
|-
 
| 64
 
| {{change|Wither|WitherBoss}}
 
| 0.9
 
| 3.5
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:wither</code>
 
|-
 
| 65
 
| Bat
 
| 0.5
 
| 0.9
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:bat</code>
 
|-
 
| 66
 
| Witch
 
| 0.6
 
| 1.8
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:witch</code>
 
|-
 
| 67
 
| Endermite
 
| 0.4
 
| 0.3
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:endermite</code>
 
|-
 
| 68
 
| Guardian
 
| 0.85
 
| 0.85
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:guardian</code>
 
|-
 
| 69
 
| Shulker
 
| 1
 
| 1
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:shulker</code>
 
|-
 
| 90
 
| Pig
 
| 0.9
 
| 0.9
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:pig</code>
 
|-
 
| 91
 
| Sheep
 
| 0.9
 
| 1.3
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:sheep</code>
 
|-
 
| 92
 
| Cow
 
| 0.9
 
| 1.4
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:cow</code>
 
|-
 
| 93
 
| Chicken
 
| 0.4
 
| 0.7
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:chicken</code>
 
|-
 
| 94
 
| Squid
 
| 0.8
 
| 0.8
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:squid</code>
 
|-
 
| 95
 
| Wolf
 
| 0.6
 
| 0.85
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:wolf</code>
 
|-
 
| 96
 
| {{change|Mooshroom|MushroomCow}}
 
| 0.9
 
| 1.3
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:mooshroom</code>
 
|-
 
| 97
 
| {{change|Snowman|SnowMan}}
 
| 0.7
 
| 1.9
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:snowman</code>
 
|-
 
| 98
 
| {{change|Ocelot|Ozelot}}
 
| 0.6
 
| 0.8
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:ocelot</code>
 
|-
 
| 99
 
| {{change|Iron Golem|VillagerGolem}}
 
| 1.4
 
| 2.7
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:villager_golem</code>
 
|-
 
| 100
 
| {{change|EntityHorse|Horse}}
 
| 1.396484
 
| 1.6
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:horse</code>
 
|-
 
| 101
 
| Rabbit
 
| 0.4
 
| 0.5
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:rabbit</code>
 
|-
 
| 102
 
| {{change|Polar Bear|PolarBear}}
 
| 1.3
 
| 1.4
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:polar_bear</code>
 
|- style="background-color: #d9ead3;"
 
| 103
 
| Llama
 
| 1.3964844
 
| 1.97
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:llama</code>
 
|-
 
|-
 
| 120
 
| Villager
 
| 0.6
 
| 1.95
 
| style="background-color: #d9ead3; text-align: center;" | <code>minecraft:villager</code>
 
|}
 
  
=== Entity Metadata ===
+
=== Entity ===
  
=== EvocationIllager ===
+
No changes so far.
  
Extends [[#Monster|Monster]].
+
== Block Actions ==
  
{| class="wikitable" style="background-color: #d9ead3;"
+
No changes so far.
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
|-
 
| 12
 
| Byte
 
| Unknown (Probably hands up animation)
 
|}
 
  
=== Vex ===
+
== Inventories ==
  
Extends [[#Monster|Monster]].
+
No changes so far.
 
 
{| class="wikitable" style="background-color: #d9ead3;"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
|-
 
|rowspan="3"| 12
 
|rowspan="3"| Byte
 
! Bit mask
 
! Meaning
 
|- style="background-color: #d9ead3;"
 
| 0x01
 
| Attack state
 
|}
 
 
 
=== VindicationIllager ===
 
 
 
Extends [[#Monster|Monster]].
 
 
 
{| class="wikitable" style="background-color: #d9ead3;"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
|-
 
|rowspan="3"| 12
 
|rowspan="3"| Byte
 
! Bit mask
 
! Meaning
 
|- style="background-color: #d9ead3;"
 
| 0x01
 
| Unknown
 
|}
 
 
 
=== EvocationFangs ===
 
 
 
Extends [[#Entity|Entity]].
 
 
 
=== AbstractSkeleton ===
 
 
 
Extends [[#Monster|Monster]].
 
 
 
{| class="wikitable" style="background-color: #d9ead3;"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
|-
 
| 12
 
| Boolean
 
|colspan="2"| Is swinging arms
 
|}
 
 
 
=== Skeleton ===
 
 
 
Extends [[#AbstractSkeleton|AbstractSkeleton]].
 
 
 
{| class="wikitable" style="background-color: #f4cccc;"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
|-
 
| 12
 
| VarInt
 
|colspan="2"| Type (Normal = 0, Wither = 1, Stray = 2)
 
|-
 
| 13
 
| Boolean
 
|colspan="2"| Is swinging arms (Used to animate arms for melee attacks; only used when the skeleton does not have a bow in its hand)
 
|}
 
 
 
=== Wither Skeleton ===
 
 
 
Extends [[#AbstractSkeleton|AbstractSkeleton]].
 
 
 
=== Stray ===
 
 
 
Extends [[#AbstractSkeleton|AbstractSkeleton]].
 
  
=== Zombie ===
+
== Plugin Channels ==
 
 
Extends [[#Monster|Monster]].
 
 
 
{| class="wikitable"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
|-
 
| 12
 
| Boolean
 
|colspan="2"| Is baby
 
|-
 
| 13
 
| VarInt
 
|colspan="2"| {{change|Zombie type (0 for zombie, profession+1 for villagers, 6 for Husk)|Unused}}
 
|- style="background-color: #f4cccc;"
 
| 14
 
| Boolean
 
|colspan="2"| Is converting
 
|-
 
| {{change|15|14}}
 
| Boolean
 
|colspan="2"| Are hands held up
 
|}
 
 
 
=== Zombie Villager ===
 
 
 
Extends [[#Zombie|Zombie]].
 
 
 
{| class="wikitable"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
|- style="background-color: #d9ead3;"
 
| 15
 
| Boolean
 
|colspan="2"| Is converting
 
|- style="background-color: #d9ead3;"
 
| 16
 
| VarInt
 
|colspan="2"| Profession
 
|}
 
 
 
=== Husk ===
 
 
 
Extends [[#Zombie|Zombie]].
 
 
 
=== Guardian ===
 
 
 
Extends [[#Monster|Monster]].
 
 
 
{| class="wikitable"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
|- style="background-color: #f4cccc;"
 
|rowspan="3"| 12
 
|rowspan="3"| Byte
 
! Bit mask
 
! Meaning
 
|- style="background-color: #f4cccc;"
 
| 0x02
 
| is retracting spikes
 
|- style="background-color: #f4cccc;"
 
| 0x04
 
| is elderly
 
|- style="background-color: #d9ead3;"
 
| 12
 
| Boolean
 
|colspan="2"| Is retracting spikes
 
|-
 
| 13
 
| VarInt
 
|colspan="2"| Target EID
 
|}
 
 
 
=== ElderGuardian ===
 
 
 
Extends [[#Guardian|Guardian]].
 
 
 
=== AbstractHorse ===
 
 
 
Extends [[#Animal|Animal]].
 
 
 
{| class="wikitable" style="background-color: #d9ead3;"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
|-
 
|rowspan="9"| 13
 
|rowspan="9"| Byte
 
! Bit mask
 
! Meaning
 
|-
 
| 0x01
 
| ''Unused''
 
|-
 
| 0x02
 
| Is Tame
 
|-
 
| 0x04
 
| Is saddled
 
|-
 
| 0x08
 
| Has Chest
 
|-
 
| 0x10
 
| Is Bred (not used on the Notchian server; controlled via the unused Bred NBT flag)
 
|-
 
| 0x20
 
| Is eating
 
|-
 
| 0x40
 
| Is rearing (on hind legs)
 
|-
 
| 0x80
 
| Is mouth open
 
|-
 
| 14
 
| OptUUID
 
|colspan="2"| Owner
 
|}
 
 
 
=== Horse ===
 
 
 
Extends [[#AbstractHorse|AbstractHorse]].
 
 
 
{| class="wikitable" style="background-color: #d9ead3;"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
|-
 
| 15
 
| VarInt
 
|colspan="2"| Variant (Color & Style)
 
|-
 
| 16
 
| VarInt
 
|colspan="2"| Armor
 
|}
 
 
 
=== ZombieHorse ===
 
 
 
Extends [[#AbstractHorse|AbstractHorse]].
 
 
 
=== SkeletonHorse ===
 
 
 
Extends [[#AbstractHorse|AbstractHorse]].
 
 
 
=== ChestedHorse ===
 
 
 
Extends [[#AbstractHorse|AbstractHorse]].
 
 
 
{| class="wikitable" style="background-color: #d9ead3;"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
|-
 
| 15
 
| Boolean
 
|colspan="2"| Has Chest
 
|}
 
 
 
=== Donkey ===
 
 
 
Extends [[#ChestedHorse|ChestedHorse]].
 
 
 
=== Llama ===
 
 
 
Extends [[#ChestedHorse|ChestedHorse]].
 
 
 
{| class="wikitable" style="background-color: #d9ead3;"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
|-
 
| 16
 
| Integer
 
| colspan="2"| Strength (number of rows in the llama inventory???)
 
|-
 
| 17
 
| Integer
 
| colspan="2"| Carpet color (a dye color, or -1 if no carpet equipped)
 
|-
 
| 18
 
| Integer
 
| colspan="2"| Variant (0: <code>llama_creamy.png</code>, 1: <code>llama_white.png</code>, 2: <code>llama_brown.png</code>, 3: <code>llama_gray.png</code>)
 
|}
 
 
 
=== Mule ===
 
 
 
Extends [[#ChestedHorse|ChestedHorse]].
 
 
 
=== Shulker ===
 
 
 
Extends [[#Golem|Golem]].
 
 
 
{| class="wikitable"
 
! Index
 
! Type
 
! style="width: 250px;" colspan="2"| Meaning
 
|-
 
| 12
 
| Direction
 
|colspan="2"| Facing direction
 
|-
 
| 13
 
| OptPosition
 
|colspan="2"| Attachment position
 
|-
 
| 14
 
| Byte
 
|colspan="2"| Shield height
 
|- style="background-color: #d9ead3;"
 
| 15
 
| Byte
 
| colspan="2"| Color (dye color, default of pink (verify this, shouldn't it be purple?))
 
|}
 
 
 
== Inventory ==
 
 
 
{| class="wikitable"
 
|-
 
! Window Type
 
! Description
 
|-
 
| minecraft:chest
 
| {{Minecraft Wiki|Chest}}, large chest, or {{Minecraft Wiki|minecart with chest}}
 
|-
 
| minecraft:crafting_table
 
| {{Minecraft Wiki|Crafting table}}
 
|-
 
| minecraft:furnace
 
| {{Minecraft Wiki|Furnace}}
 
|-
 
| minecraft:dispenser
 
| {{Minecraft Wiki|Dispenser}}
 
|-
 
| minecraft:enchanting_table
 
| {{Minecraft Wiki|Enchantment table}}
 
|-
 
| minecraft:brewing_stand
 
| {{Minecraft Wiki|Brewing stand}}
 
|-
 
| minecraft:villager
 
| {{Minecraft Wiki|Villager}}
 
|-
 
| minecraft:beacon
 
| {{Minecraft Wiki|Beacon}}
 
|-
 
| minecraft:anvil
 
| {{Minecraft Wiki|Anvil}}
 
|-
 
| minecraft:hopper
 
| {{Minecraft Wiki|Hopper}} or {{Minecraft Wiki|minecart with hopper}}
 
|-
 
| minecraft:dropper
 
| {{Minecraft Wiki|Dropper}}
 
|-
 
|style="background-color: #d9ead3;"| minecraft:shulker_box
 
|style="background-color: #d9ead3;"| {{Minecraft Wiki|Shulker box}}
 
|-
 
| EntityHorse
 
| {{Minecraft Wiki|Horse|Horse, donkey, or mule}}, {{change||or {{Minecraft Wiki|Llama}}}}
 
|}
 
 
 
=== Shulker box ===
 
<!-- Yes, this image doesn't exist yet; I'll add it later. -->
 
[[File:Shulker-box-slots.png|thumb|Shulker box slots]]
 
 
 
This is the window that is opened when the player right-clicks on a shulker box chest.
 
 
 
{| class="wikitable"
 
|-
 
! Slot range
 
! Description
 
|-
 
| 0–26
 
| box slots
 
|-
 
| 27–53
 
| main inventory
 
|-
 
| 54–62
 
| hotbar
 
|}
 
 
 
=== Llama ===
 
<!-- Again, this image doesn't exist yet -->
 
[[File:Llama-slots.png|thumb|Llama slots]]
 
 
 
The inventory that appears when a tamed llama is right-clicked and has a chest, or when the player's inventory is opened while riding a tamed llama.  Depending on the value of the strength field, the number of chest rows may vary (max is 5, so 15 slots).
 
 
 
{{warning|There still is a saddle slot, even though it cannot be used and is invisible.}}
 
 
 
{| class="wikitable"
 
|-
 
! Slot range
 
! Description
 
|-
 
| 0
 
| saddle
 
|-
 
| 1
 
| carpet
 
|-
 
| 2-(2+3*Strength)
 
| llama inventory
 
|-
 
| ...
 
| player inventory
 
|-
 
| ...
 
| hotbar
 
|}
 
 
 
== Handshaking ==
 
 
 
=== Clientbound ===
 
  
 
No changes so far.
 
No changes so far.
 
=== Serverbound ===
 
 
==== Handshake ====
 
 
This causes the server to switch into the target state.
 
 
{| class="wikitable"
 
! Packet ID
 
! State
 
! Bound To
 
! Field Name
 
! Field Type
 
! Notes
 
|-
 
|rowspan="4"| 0x00
 
|rowspan="4"| Handshaking
 
|rowspan="4"| Server
 
| Protocol Version
 
| VarInt
 
| See [[protocol version numbers]] (currently {{change|210|307}})
 
|-
 
| Server Address
 
| String
 
| Hostname or IP, e.g. localhost or 127.0.0.1, that was used to connect.  The Notchian server does not use this information.
 
|-
 
| Server Port
 
| Unsigned Short
 
| Default is 25565.  The Notchian server does not use this information.
 
|-
 
| Next State
 
| VarInt Enum
 
| 1 for [[#Status|status]], 2 for [[#Login|login]]
 
|}
 
  
 
== Play ==
 
== Play ==
Line 805: Line 43:
 
=== Clientbound ===
 
=== Clientbound ===
  
==== Spawn Mob ====
+
No changes so far.
 
 
Sent by the server when a mob entity is spawned.
 
 
 
{| class="wikitable"
 
! Packet ID
 
! State
 
! Bound To
 
! Field Name
 
! Field Type
 
! Notes
 
|-
 
|rowspan="13"| 0x03
 
|rowspan="13"| Play
 
|rowspan="13"| Client
 
| Entity ID
 
| VarInt
 
|
 
|-
 
| Entity UUID
 
| UUID
 
|
 
|-
 
| Type
 
| {{change|Unsigned Byte|VarInt}}
 
| The type of mob. See [[Entities#Mobs]]
 
|-
 
| X
 
| Double
 
|
 
|-
 
| Y
 
| Double
 
|
 
|-
 
| Z
 
| Double
 
|
 
|-
 
| Yaw
 
| Angle
 
|
 
|-
 
| Pitch
 
| Angle
 
|
 
|-
 
| Head Pitch
 
| Angle
 
|
 
|-
 
| Velocity X
 
| Short
 
| Same units as [[#Entity Velocity|Entity Velocity]]
 
|-
 
| Velocity Y
 
| Short
 
| Same units as [[#Entity Velocity|Entity Velocity]]
 
|-
 
| Velocity Z
 
| Short
 
| Same units as [[#Entity Velocity|Entity Velocity]]
 
|-
 
| Metadata
 
| [[Entities#Entity Metadata Format|Entity Metadata]]
 
|
 
|}
 
 
 
==== Tab-Complete (clientbound) ====
 
 
 
The server responds with a list of auto-completions of the last word sent to it. In the case of regular chat, this is a player username. Command names and parameters are also supported. {{change|The client lists these in the order that they are in the array.|The client sorts these alphabetically before listing them.}}
 
 
 
{| class="wikitable"
 
! Packet ID
 
! State
 
! Bound To
 
! Field Name
 
! Field Type
 
! Notes
 
|-
 
|rowspan="2"| 0x0E
 
|rowspan="2"| Play
 
|rowspan="2"| Client
 
| Count
 
| VarInt
 
| Number of elements in the following array
 
|-
 
| Matches
 
| Array of String
 
| One eligible command, note that each command is sent separately instead of in a single string, hence the need for Count
 
|}
 
 
 
==== Entity Status ====
 
 
 
{| class="wikitable"
 
! Packet ID
 
! State
 
! Bound To
 
! Field Name
 
! Field Type
 
! Notes
 
|-
 
|rowspan="2"| 0x1B
 
|rowspan="2"| Play
 
|rowspan="2"| Client
 
| Entity ID
 
| Int
 
|
 
|-
 
| Entity Status
 
| Byte Enum
 
| See below
 
|}
 
 
 
{| class="wikitable"
 
|-
 
! Entity Status
 
! Meaning
 
|-
 
| 0
 
| Spawn tipped arrow particle effects
 
|-
 
| 1
 
| Reset a mob spawner minecart's timer (unused by the client?)
 
|-
 
| 1
 
| Create rabbit running particles
 
|-
 
| 2
 
| Entity hurt animation
 
|-
 
| 3
 
| Entity died animation
 
|-
 
| 4
 
| Iron Golem throwing up arms
 
|-
 
| 6
 
| Wolf/Ocelot/Horse taming — Spawn “heart” particles
 
|-
 
| 7
 
| Wolf/Ocelot/Horse tamed — Spawn “smoke” particles
 
|-
 
| 8
 
| Wolf shaking water — Trigger the shaking animation
 
|-
 
| 9
 
| Mark item use as finished (ie, eating finished, drinking finished)
 
|-
 
| 10
 
| Sheep eating grass
 
|-
 
| 10
 
| Ignite TNT minecart
 
|-
 
| 11
 
| Iron Golem handing over a rose
 
|-
 
| 12
 
| Villager mating — Spawn “heart” particles
 
|-
 
| 13
 
| Spawn particles indicating that a villager is angry and seeking revenge
 
|-
 
| 14
 
| Spawn happy particles near a villager
 
|-
 
| 15
 
| Witch animation — Spawn “magic” particles
 
|-
 
| 16
 
| Play zombie converting into a villager sound
 
|-
 
| 17
 
| Firework exploding
 
|-
 
| 18
 
| Animal in love (ready to mate) — Spawn “heart” particles
 
|-
 
| 19
 
| Reset squid rotation
 
|-
 
| 20
 
| Spawn explosion particle — works for some living entities
 
|-
 
| 21
 
| Play guardian sound — works for every entity
 
|-
 
| 22
 
| Enables reduced {{Minecraft Wiki|Debug screen|debug}} for the given player
 
|-
 
| 23
 
| Disables reduced {{Minecraft Wiki|Debug screen|debug}} for the given player
 
|-
 
| 24–28
 
| Sets the {{Minecraft Wiki|Server.properties#op-permission-level|op permission level}} 0–4 for the connected player
 
|-
 
| 29
 
| Shield block sound
 
|-
 
| 30
 
| Shield break sound
 
|-
 
| 31
 
| For a fishing rod bobber, if the hooked entity is this player, tug that player toward the caster of the rod
 
|-
 
| 32
 
| Armorstand hit sound
 
|-
 
| 33
 
| Entity hurt due to thorns (play thorns sound, perform normal hurt animation)
 
|-
 
|style="background-color: #d9ead3;"| 35
 
|style="background-color: #d9ead3;"| Plays the Totem of Undying animation
 
|}
 
 
 
==== Collect Item ====
 
 
 
Sent by the server when someone picks up an item lying on the ground — its sole purpose appears to be the animation of the item flying towards you. It doesn't destroy the entity in the client memory, and it doesn't add it to your inventory. The server only checks for items to be picked up after each [[#Player Position|Player Position]] (and [[#Player Position And Look|Player Position And Look]]) packet sent by the client.
 
 
 
{| class="wikitable"
 
! Packet ID
 
! State
 
! Bound To
 
! Field Name
 
! Field Type
 
! Notes
 
|-
 
|rowspan="3"| 0x48
 
|rowspan="3"| Play
 
|rowspan="3"| Client
 
| Collected Entity ID
 
| VarInt
 
|
 
|-
 
| Collector Entity ID
 
| VarInt
 
|
 
|-
 
|style="background-color: #d9ead3;"|Pickup Item Count
 
|style="background-color: #d9ead3;"|VarInt
 
|style="background-color: #d9ead3;"|Seems to be 1 for XP orbs, otherwise the number of items in the stack.
 
|}
 
  
 
=== Serverbound ===
 
=== Serverbound ===
  
==== Chat Message (serverbound) ====
+
No changes so far.
 
 
Used to send a chat message to the server. The message may not be longer than {{change|100|256}} characters or else the server will kick the client.
 
 
 
If the message starts with a <code>/</code>, the server will attempt to interpret it as a command.  Otherwise, the server will broadcast the same chat message to all players on the server (including the player that sent the message), prepended with player's name.  Specifically, it will respond with a translate [[chat]] component, "<code>chat.type.text</code>" with the first parameter set to the display name of the player (including some chat component logic to support clicking the name to send a PM) and the second parameter set to the message.
 
 
 
{| class="wikitable"
 
! Packet ID
 
! State
 
! Bound To
 
! Field Name
 
! Field Type
 
! Notes
 
|-
 
|rowspan="1"| 0x02
 
|rowspan="1"| Play
 
|rowspan="1"| Server
 
| Message
 
| String
 
| The client sends the raw input, not a [[Chat]] component
 
|}
 
 
 
  
 
== Status ==
 
== Status ==
Line 1,093: Line 68:
  
 
No changes so far.
 
No changes so far.
 +
 +
 +
[[Category:Minecraft Modern]]

Latest revision as of 22:32, 7 August 2021

This page documents the changes from the last stable Minecraft release (currently 1.17.1, protocol 756) to the current pre-release (currently 1.18 experimental snapshot 2, protocol Snapshot 42). 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

No changes so far.

New/modified data types

No changes so far.

Entity Metadata

No changes so far.

Entity

No changes so far.

Block Actions

No changes so far.

Inventories

No changes so far.

Plugin Channels

No changes so far.

Play

Clientbound

No changes so far.

Serverbound

No changes so far.

Status

Clientbound

No changes so far.

Serverbound

No changes so far.

Login

Clientbound

No changes so far.

Serverbound

No changes so far.