Difference between revisions of "Pre-release protocol"

From wiki.vg
Jump to navigation Jump to search
m (→‎Shulker: Document color field)
(Add Totem of undying animation to the Entity Status ids)
Line 789: Line 789:
 
  | Array of String
 
  | Array of String
 
  | One eligible command, note that each command is sent separately instead of in a single string, hence the need for Count
 
  | 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
 
  |}
 
  |}
  

Revision as of 22:05, 28 September 2016

This page documents the changes from the last stable Minecraft release (currently 1.10.2, protocol 210) to the current pre-release (currently 16w39a, protocol 307). 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.

ID Packet name Documentation
Handshaking serverbound
0x00 Handshake Current Pre
Play clientbound
0x03 Spawn Mob Current Pre
0x0E Tab-Complete (clientbound) Current Pre
0x48 Collect Item Current Pre
Play serverbound
0x02 Chat Message (serverbound) Current Pre

New/modified data types

Mobs

Mobs are spawned via 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).

Type Name x, z y ID
4 ElderGuardian 0.85 0.85 minecraft:elder_guardian
5 WitherSkeleton 0.7 2.4 minecraft:wither_skeleton
6 Stray 0.6 1.99 minecraft:stray
23 Husk 0.6 1.95 minecraft:husk
27 ZombieVillager 0.6 1.95 minecraft:zombie_villager
28 SkeletonHorse 1.396484 1.6 minecraft:skeleton_horse
29 ZombieHorse 1.396484 1.6 minecraft:zombie_horse
31 Donkey 1.396484 1.6 minecraft:donkey
32 Mule 1.396484 1.6 minecraft:mule
33 EvocationFangs 0.5 0.8 minecraft:evocation_fangs
34 EvocationIllager 0.6 1.95 minecraft:evocation_illager
35 Vex 0.4 0.8 minecraft:vex
36 VindicationIllager 0.6 1.95 minecraft:vindication_illager
48 Mob N/A N/A
49 Monster N/A N/A
50 Creeper 0.6 1.7 minecraft:creeper
51 Skeleton 0.6 1.99 minecraft:skeleton
52 Spider 1.4 0.9 minecraft:spider
53 Giant Zombie Giant 0.6 * 6 1.8 * 6 minecraft:giant
54 Zombie 0.6 1.8 minecraft:zombie
55 Slime 0.51000005 * size 0.51000005 * size minecraft:slime
56 Ghast 4 4 minecraft:ghast
57 Zombie Pigman PigZombie 0.6 1.8 minecraft:zombie_pigman
58 Enderman 0.6 2.9 minecraft:enderman
59 Cave Spider CaveSpider 0.7 0.5 minecraft:cave_spider
60 Silverfish 0.4 0.3 minecraft:silverfish
61 Blaze 0.6 1.8 minecraft:blaze
62 Magma Cube LavaSlime 0.51000005 * size 0.51000005 * size minecraft:magma_cube
63 Ender Dragon EnderDragon 16.0 8.0 minecraft:ender_dragon
64 Wither WitherBoss 0.9 3.5 minecraft:wither
65 Bat 0.5 0.9 minecraft:bat
66 Witch 0.6 1.8 minecraft:witch
67 Endermite 0.4 0.3 minecraft:endermite
68 Guardian 0.85 0.85 minecraft:guardian
69 Shulker 1 1 minecraft:shulker
90 Pig 0.9 0.9 minecraft:pig
91 Sheep 0.9 1.3 minecraft:sheep
92 Cow 0.9 1.4 minecraft:cow
93 Chicken 0.4 0.7 minecraft:chicken
94 Squid 0.8 0.8 minecraft:squid
95 Wolf 0.6 0.85 minecraft:wolf
96 Mooshroom MushroomCow 0.9 1.3 minecraft:mooshroom
97 Snowman SnowMan 0.7 1.9 minecraft:snowman
98 Ocelot Ozelot 0.6 0.8 minecraft:ocelot
99 Iron Golem VillagerGolem 1.4 2.7 minecraft:villager_golem
100 EntityHorse Horse 1.396484 1.6 minecraft:horse
101 Rabbit 0.4 0.5 minecraft:rabbit
102 Polar Bear PolarBear 1.3 1.4 minecraft:polar_bear
103 Llama 1.3964844 1.97 minecraft:llama
120 Villager 0.6 1.95 minecraft:villager

Entity Metadata

EvocationIllager

Extends Monster.

Index Type Meaning
12 Byte Unknown (Probably hands up animation)

Vex

Extends Monster.

Index Type Meaning
12 Byte Unknown (Probably the attack animation)

VindicationIllager

Extends Monster.

Index Type Meaning
12 Byte Unknown

EvocationFangs

Extends Entity.

AbstractSkeleton

Extends Monster.

Index Type Meaning
12 Boolean Is swinging arms

Skeleton

Extends AbstractSkeleton.

Index Type Meaning
12 VarInt Type (Normal = 0, Wither = 1, Stray = 2)
13 Boolean 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.

Stray

Extends AbstractSkeleton.

Zombie

Extends Monster.

Index Type Meaning
12 Boolean Is baby
13 VarInt Zombie type (0 for zombie, profession+1 for villagers, 6 for Husk) Unused
14 Boolean Is converting
15 14 Boolean Are hands held up

Zombie Villager

Extends Zombie.

Index Type Meaning
15 Boolean Is converting
16 VarInt Profession

Husk

Extends Zombie.

Guardian

Extends Monster.

Index Type Meaning
12 Byte Bit mask Meaning
0x02 is retracting spikes
0x04 is elderly
12 Boolean Is retracting spikes
13 VarInt Target EID

ElderGuardian

Extends Guardian.

AbstractHorse

Extends Animal.

Index Type Meaning
13 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 Owner

Horse

Extends AbstractHorse.

Index Type Meaning
15 VarInt Variant (Color & Style)
16 VarInt Armor

ZombieHorse

Extends AbstractHorse.

SkeletonHorse

Extends AbstractHorse.

ChestedHorse

Extends AbstractHorse.

Index Type Meaning
15 Boolean Has Chest

Donkey

Extends ChestedHorse.

Llama

Extends ChestedHorse.

Index Type Meaning
16 Integer Strength
17 Integer Carpet color (a dye color, or -1 if no carpet equipped)
18 Integer Variant (unknown)

Mule

Extends ChestedHorse.

Shulker

Extends Golem.

Index Type Meaning
12 Direction Facing direction
13 OptPosition Attachment position
14 Byte Shield height
15 Byte Color (dye color, default of pink)

Handshaking

Clientbound

No changes so far.

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 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, 2 for login

Play

Clientbound

Spawn Mob

Sent by the server when a mob entity is spawned.

Packet ID State Bound To Field Name Field Type Notes
0x03 Play Client Entity ID VarInt
Entity UUID UUID
Type 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
Velocity Y Short Same units as Entity Velocity
Velocity Z Short Same units as Entity Velocity
Metadata 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. The client lists these in the order that they are in the array. The client sorts these alphabetically before listing them.

Packet ID State Bound To Field Name Field Type Notes
0x0E Play Client Count VarInt Number of elements in the following array
Matches Array of String One eligible command, note that each command is sent separately instead of in a single string, hence the need for Count

Entity Status

Packet ID State Bound To Field Name Field Type Notes
0x1B Play Client Entity ID Int
Entity Status Byte Enum See below
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 debug for the given player
23 Disables reduced debug for the given player
24–28 Sets the 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)
35 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 (and Player Position And Look) packet sent by the client.

Packet ID State Bound To Field Name Field Type Notes
0x48 Play Client Collected Entity ID VarInt
Collector Entity ID VarInt
Pickup Item Count VarInt Seems to be 1 for XP orbs, otherwise the number of items in the stack.

Serverbound

Chat Message (serverbound)

Used to send a chat message to the server. The message may not be longer than 100 256 characters or else the server will kick the client.

If the message starts with a /, 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, "chat.type.text" 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.

Packet ID State Bound To Field Name Field Type Notes
0x02 Play Server Message String The client sends the raw input, not a Chat component


Status

Clientbound

No changes so far.

Serverbound

No changes so far.

Login

Clientbound

No changes so far.

Serverbound

No changes so far.