Difference between revisions of "Pre-release protocol"

From wiki.vg
Jump to navigation Jump to search
(Reset page)
 
Line 1: Line 1:
This page documents the changes from the [[Protocol|last stable Minecraft release]] (currently 1.6.2, protocol 74) to the current pre-release. Note that this page contains bleeding-edge information that may not be completely or correctly documented.
+
There are currently no pre-release versions available to document on this page. For the latest stable Minecraft release, see the [[Protocol|Protocol]] page. For previous pre-release pages, see the [[Protocol version numbers|Protocol version numbers]] page.
He 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 occured to the respective packets there.
 
  
== Protocol History ==
+
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.
13w36a - Added sound category byte to 0x3E
 
- Changed 0xC8 to a string:int map
 
  
13w37b -
+
== Contents ==
  
1.6.3 - Terrain fixes to help moving to 1.7, no packet changes from 1.6.2
+
<div style="float:right;">__TOC__</div>
  
1.6.4 -
+
=== Data types ===
  
13w38a/b/c -
+
No changes so far.
  
13w39a/b - UUIDs added to spawn named entity, game state 'gamemode' byte -> float
+
=== Packets ===
  
13w41a - Large protocol work
+
No changes so far.
  
== Protocol Version ==
+
[[Category:Minecraft Modern]]
13w41a -
 
 
 
13w39a/b - 80
 
 
 
13w38a/b/c - 79
 
 
 
1.6.4 - 78
 
 
 
1.6.3 - 77
 
 
 
13w37b - 76
 
 
 
13w36a - 75
 
 
 
== Packet format ==
 
 
 
{| class="wikitable"
 
! Field Name !! Field Type !! Notes
 
|-
 
| Length || VarInt ||
 
|-
 
| Type || VarInt ||
 
|-
 
| Data || ||
 
|}
 
 
 
== Data Types ==
 
 
 
VarInt - [http://developers.google.com/protocol-buffers/docs/encoding#varints Protocol Buffer 32-bit Varint]
 
 
 
String - UTF-8 String
 
 
 
== Handshaking ==
 
 
 
=== Serverbound ===
 
 
 
==== ? ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=4 | 0x00
 
| || VarInt ||
 
|-
 
| || String ||
 
|-
 
| || VarInt ||
 
|-
 
| || VarInt ||
 
|}
 
 
 
== Play ==
 
 
 
=== Clientbound ===
 
 
 
==== Keep Alive ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=1 | 0x00
 
| Keep Alive ID || Int ||
 
|}
 
 
 
 
 
==== Join Game ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=7 | 0x01
 
| Entity ID || Int || The player's Entity ID
 
|-
 
| Level type || String || level-type in server.properties
 
|-
 
| Gamemode || Byte || 0: survival, 1: creative, 2: adventure. Bit 3 (0x8) is the hardcore flag
 
|-
 
| Dimension || Byte || -1: nether, 0: overworld, 1: end
 
|-
 
| Difficulty || Unsigned Byte || 0 thru 3 for Peaceful, Easy, Normal, Hard
 
|-
 
| || Byte ||
 
|-
 
| Max Players || Byte || Used by the client to draw the player list
 
|}
 
 
 
==== Chat Message ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=1 | 0x02
 
| JSON Data || String || https://gist.github.com/thinkofdeath/e882ce057ed83bac0a1c
 
|}
 
 
 
==== Time Update ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=2 | 0x03
 
| Age of the world || Long || In ticks; not changed by server commands
 
|-
 
| Time of day || Long || The world (or region) time, in ticks. If negative the sun will stop moving at the Math.abs of the time
 
|}
 
 
 
==== Entity Equipment ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=3 | 0x04
 
| EntityID || Int || Entity's ID
 
|-
 
| Slot || Short || Equipment slot: 0=held, 1-4=armor slot (1 - boots, 2 - leggings, 3 - chestplate, 4 - helmet)
 
|-
 
| Item || [[Slot_Data|Slot]] || Item in slot format
 
|}
 
 
 
==== Spawn Position ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=3 | 0x05
 
| X || Int || Spawn X in block coordinates
 
|-
 
| Y || Int || Spawn Y in block coordinates
 
|-
 
| Z || Int || Spawn | in block coordinates
 
|}
 
 
 
==== Update Health ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=3 | 0x06
 
| Health || Float || 0 or less = dead, 20 = full HP
 
|-
 
| Food || Short || 0 - 20
 
|-
 
| Food Saturation || Float || Seems to vary from 0.0 to 5.0 in integer increments
 
|}
 
 
 
==== Respawn ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=5 | 0x07
 
| Dimension || Int || -1: The Nether, 0: The Overworld, 1: The End
 
|-
 
| Difficulty || Byte || 0 thru 3 for Peaceful, Easy, Normal, Hard.
 
|-
 
| Gamemode || Byte || 0: survival, 1: creative, 2: adventure. The hardcore flag is not included
 
|-
 
| World Height|| Short || Defaults to 256
 
|-
 
| Level Type || String ||
 
|}
 
 
 
==== Player ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=1 | 0x08
 
| On Ground || Bool | True if the client is on the ground, False otherwise
 
|}
 
 
 
==== Player Position ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=5| 0x09
 
| X || Double || Absolute position
 
|-
 
| Y || Double || Absolute position
 
|-
 
| Stance || Double || Used to modify the players bounding box when going up stairs, crouching, etc…
 
|-
 
| Z || Double || Absolute position
 
|-
 
| On Ground || Bool || True if the client is on the ground, False otherwise
 
|}
 
 
 
==== Player Look ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=3| 0x0A
 
| Yaw || Float || Absolute rotation on the X Axis, in degrees
 
|-
 
| Pitch || Float || Absolute rotation on the Y Axis, in degrees
 
|-
 
| On Ground || Bool || True if the client is on the ground, False otherwise
 
|}
 
 
 
==== Player Position And Look ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=7| 0x0B
 
| X || Double || Absolute position
 
|-
 
| Y || Double || Absolute position
 
|-
 
| Stance || Double || Used to modify the players bounding box when going up stairs, crouching, etc…
 
|-
 
| Z || Double || Absolute position
 
|-
 
| Yaw || Float || Absolute rotation on the X Axis, in degrees
 
|-
 
| Pitch || Float || Absolute rotation on the Y Axis, in degrees
 
|-
 
| On Ground || Bool || True if the client is on the ground, False otherwise
 
|}
 
 
 
==== Held Item Change ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=1 | 0x0C
 
| Slot || Short || The slot which the player has selected (0-8)
 
|}
 
 
 
==== Use Bed ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=5 | 0x0D
 
| Entity ID || Int || Player ID
 
|-
 
| || Byte ||
 
|-
 
| X || Int || Bed headboard X as block coordinate
 
|-
 
| Y || Unsigned Byte || Bed headboard Y as block coordinate
 
|-
 
| Z || Int || Bed headboard Z as block coordinate
 
|}
 
 
 
==== Animation ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=2 | 0x0E
 
| Entity ID || Int || Player ID
 
|-
 
| Animation || Byte || Animation ID
 
|}
 
 
 
Animation can be one of the following values:
 
 
 
{| class="wikitable"
 
! ID !! Animation
 
|-
 
| 0 || No animation
 
|-
 
| 1 || Swing arm
 
|-
 
| 2 || Damage animation
 
|-
 
| 3 || Leave bed
 
|-
 
| 5 || Eat food
 
|-
 
| 6 || Critical effect
 
|-
 
| 7 || Magic critical effect
 
|-
 
| 102 || (unknown)
 
|-
 
| 104 || Crouch
 
|-
 
| 105 || Uncrouch
 
|}
 
 
 
==== Spawn Player ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=10 | 0x0F
 
| Entity ID || Int || Player's Entity ID
 
|-
 
| Player UUID || String || Player's UUID
 
|-
 
| Player Name || String || Player's Name
 
|-
 
| X || Int || Player X as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| Y || Int || Player X as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| Z || Int || Player X as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| Yaw || Byte || Player rotation as a packed byte
 
|-
 
| Pitch || Byte || Player rotation as a packet byte
 
|-
 
| Current Item || Short || The item the player is currently holding. Note that this should be 0 for "no item", unlike -1 used in other packets. A negative value crashes clients.
 
|-
 
| Metadata || [[Entities#Entity_Metadata_Format|Metadata]] || The client will crash if no metadata is sent
 
|}
 
 
 
==== Collect Item ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=2 | 0x10
 
| Collected Entity ID || Int ||
 
|-
 
| Collector Entity ID || Int ||
 
|}
 
 
 
==== Spawn Object ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=8| 0x11
 
| Entity ID || Int || Entity ID of the object
 
|-
 
| Type || Byte || The of object (See [[Entities#Objects|Objects]]
 
|-
 
| X || Int || X position as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| Y || Int || Y position as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| Z || Int || Z position as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| Pitch || Byte || The pitch in steps of 2p/256
 
|-
 
| Yaw || Byte || The yaw in steps of 2p/256
 
|-
 
| Data || [[Object_Data|Object Data]] ||
 
|}
 
 
 
==== Spawn Mob ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=12 | 0x12
 
| Entity ID || Int || Entity's ID
 
|-
 
| Type || Unsigned Byte || The type of mob. See [[Entities#Mobs|Mobs]]
 
|-
 
| X || Int || X position as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| Y || Int || Y position as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| Z || Int || Z position as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| Pitch || Byte || The pitch in steps of 2p/256
 
|-
 
| Head Pitch || Byte || The pitch in steps of 2p/256
 
|-
 
| Yaw || Byte || The yaw in steps of 2p/256
 
|-
 
| Velocity X || Short ||
 
|-
 
| Velocity Y || Short ||
 
|-
 
| Velocity Z || Short ||
 
|-
 
| Metadata || [[Entities#Entity_Metadata_Format|Metadata]] ||
 
|}
 
 
 
==== Spawn Painting ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=6 | 0x13
 
| Entity ID || Int || Entity's ID
 
|-
 
| Title || String || Name of the painting. Max length 13
 
|-
 
| X || Int || Center X coordinate
 
|-
 
| Y || Int || Center Y coordinate
 
|-
 
| Z || Int || Center Z coordinate
 
|-
 
| Direction || Int || Direction the painting faces (0 -z, 1 -x, 2 +z, 3 +x)
 
|}
 
 
 
==== Spawn Experience Orb ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=5 | 0x14
 
| Entity ID || Int || Entity's ID
 
|-
 
| X || Int || X position as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| Y || Int || Y position as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| Z || Int || Z position as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| Count || Short || The amount of experience this orb will reward once collected
 
|}
 
 
 
==== Entity Velocity ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=4 | 0x15
 
| Entity ID || Int || Entity's ID
 
|-
 
| Velocity X || Short || Velocity on the X axis
 
|-
 
| Velocity Y || Short || Velocity on the Y axis
 
|-
 
| Velocity Z || Short || Velocity on the Z axis
 
|}
 
 
 
==== Destroy Entitie s====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=2 | 0x16
 
| Count || Byte || Length of following array
 
|-
 
| Entity IDs || Array of Int || The list of entities of destroy
 
|}
 
 
 
==== Entity ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=1 | 0x17
 
| Entity ID || Int || Entity's ID
 
|}
 
 
 
==== Entity Relative Move ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=4| 0x18
 
| Entity ID || Int || Entity's ID
 
|-
 
| DX || Byte || Change in X position as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| DY || Byte || Change in Y position as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| DZ || Byte || Change in Z position as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|}
 
 
 
==== Entity Look ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=3 | 0x19
 
| Entity ID || Int || Entity's ID
 
|-
 
| Yaw || Byte || The X Axis rotation as a fraction of 360
 
|-
 
| Pitch || Byte || The Y Axis rotation as a fraction of 360
 
|}
 
 
 
==== Entity Look and Relative Move ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=6 | 0x1A
 
| Entity ID || Int || Entity's ID
 
|-
 
| DX || Byte || Change in X position as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| DY || Byte || Change in Y position as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| DZ || Byte || Change in Z position as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| Yaw || Byte || The X Axis rotation as a fraction of 360
 
|-
 
| Pitch || Byte || The Y Axis rotation as a fraction of 360
 
|}
 
 
 
==== Entity Teleport ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=6 | 0x1B
 
| Entity ID || Int || Entity's ID
 
|-
 
| X || Byte || X position as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| Y || Byte || Y position as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| Z || Byte || Z position as a [[Data_Types#Fixed-point_numbers|Fixed-Point number]]
 
|-
 
| Yaw || Byte || The X Axis rotation as a fraction of 360
 
|-
 
| Pitch || Byte || The Y Axis rotation as a fraction of 360
 
|}
 
 
 
==== Entity Head Look ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=2 | 0x1C
 
| Entity ID || Int || Entity's ID
 
|-
 
| Head Yaw || Byte || Head yaw in steps of 2p/256
 
|}
 
 
 
==== Entity Status ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=2 | 0x1D
 
| Entity ID || Int || Entity's ID
 
|-
 
| Entity Status || Byte || See below
 
|}
 
 
 
{| class="wikitable"
 
|-
 
! Entity Status !! Meaning
 
|-
 
| 2 || Entity hurt
 
|-
 
| 3 || Entity dead
 
|-
 
| 6 || Wolf taming
 
|-
 
| 7 || Wolf tamed
 
|-
 
| 8 || Wolf shaking water off itself
 
|-
 
| 9 || (of self) Eating accepted by server
 
|-
 
| 10 || Sheep eating grass
 
|-
 
| 11 || Iron Golem handing over a rose
 
|-
 
| 12 || Spawn "heart" particles near a villager
 
|-
 
| 13 || Spawn particles indicating that a villager is angry and seeking revenge
 
|-
 
| 14 || Spawn happy particles near a villager
 
|-
 
| 15 || Spawn a "magic" particle near the Witch
 
|-
 
| 16 || Zombie converting into a villager by shaking violently (unused in recent update)
 
|-
 
| 17 || A firework exploding
 
|}
 
 
 
==== Attach Entity ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=3 | 0x1E
 
| Entity ID || Int || Entity's ID
 
|-
 
| Vehicle ID || Int || Vechicle's Entity ID
 
|-
 
| Leash || Bool || If true leashes the entity to the vehicle
 
|}
 
 
 
==== Attach Entity ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=2 | 0x1F
 
| Entity ID || Int || Entity's ID
 
|-
 
| Metadata || [[Entities#Entity_Metadata_Format|Metadata]] ||
 
|}
 
 
 
==== Entity Effect ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=4 | 0x20
 
| Entity ID || Int || Entity's ID
 
|-
 
| Effect ID || Byte || See [[http://www.minecraftwiki.net/wiki/Potion_effect#Parameters]]
 
|-
 
| Amplifier || Byte ||
 
|-
 
| Duration || Short ||
 
|}
 
 
 
==== Remove Entity Effect ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=2 | 0x21
 
| Entity ID || Int || Entity's ID
 
|-
 
| Effect ID || Byte ||
 
|}
 
 
 
==== Set Experience ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=3 | 0x22
 
| Experience bar || Float || Between 0 and 1
 
|-
 
| Level || Short ||
 
|-
 
| Total Experience || Short ||
 
|}
 
 
 
==== Entity Properties ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=3 | 0x23
 
| Entity ID || Int | Entity's ID
 
|-
 
| Count || Int || Length of following array
 
|-
 
| Properties || Array of Property Data ||
 
|}
 
 
 
'''Property Data''' structure:
 
{| class="wikitable"
 
|-
 
! Field Name !! Field Type !! Notes
 
|-
 
| Key || String ||
 
|-
 
| Value || Double ||
 
|-
 
| List Length || Short || Number of list elements that follow.
 
|-
 
| Modifiers || Array of Modifier Data || http://www.minecraftwiki.net/wiki/Attribute#Modifiers
 
|}
 
 
 
Known key values:
 
{| class="wikitable"
 
|-
 
! Key !! Default !! Min !! Max !! Label
 
|-
 
| generic.maxHealth || 20.0 || 0.0 || Double.MaxValue || Max Health
 
|-
 
| generic.followRange || 32.0 || 0.0 || 2048.0 || Follow Range
 
|-
 
| generic.knockbackResistance || 0.0 || 0.0 || 1.0 || Knockback Resistance
 
|-
 
| generic.movementSpeed || 0.699999988079071 || 0.0 || Double.MaxValue || Movement Speed
 
|-
 
| generic.attackDamage || 2.0 || 0.0 || Double.MaxValue ||
 
|-
 
| horse.jumpStrength || 0.7 || 0.0 || 2.0 || Jump Strength
 
|-
 
| zombie.spawnReinforcements || 0.0 || 0.0 || 1.0 || Spawn Reinforcements Chance
 
|}
 
 
 
'''Modifier Data''' structure:
 
{| class="wikitable"
 
|-
 
! Field Name !! Field Type !! Notes
 
|-
 
| UUID || 128-bit integer ||
 
|-
 
| Amount || Double ||
 
|-
 
| Operation || Byte ||
 
|}
 
 
 
==== Chunk Data ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=7 | 0x24
 
| Chunk X || Int || Chunk X coordinate
 
|-
 
| Chunk Z || Int || Chunk Z coordinate
 
|-
 
| Ground-Up continuous || Boolean || This is True if the packet represents all sections in this vertical column, where the primary bit map specifies exactly which sections are included, and which are air
 
|-
 
| Primary bit map || Unsigned Short || Bitmask with 1 for every 16x16x16 section which data follows in the compressed data.
 
|-
 
| Add bit map || Unsigned Short || Same as above, but this is used exclusively for the 'add' portion of the payload
 
|-
 
| Compressed size || Int || Size of compressed chunk data
 
|-
 
| Compressed data || Byte array || The chunk data is compressed using Zlib Deflate
 
|}
 
 
 
==== Multi Block Change ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=5 | 0x25
 
| Chunk X || Int || Chunk X coordinate
 
|-
 
| Chunk Z || Int || Chunk Z Coordinate
 
|-
 
| Record count || Short || The number of blocks affected
 
|-
 
| Data size || Int ||  The total size of the data, in bytes. Should always be 4*record count
 
|-
 
| Records || Array of Records ||
 
|}
 
 
 
'''Record'''
 
{| class="wikitable"
 
|-
 
! Bit mask !! Width !! Meaning
 
|-
 
| 00 00 00 0F || 4 bits || Block metadata
 
|-
 
| 00 00 FF F0 || 12 bits || Block ID
 
|-
 
| 00 FF 00 00 || 8 bits || Y co-ordinate
 
|-
 
| 0F 00 00 00 || 4 bits || Z co-ordinate, relative to chunk
 
|-
 
| F0 00 00 00 || 4 bits || X co-ordinate, relative to chunk
 
|}
 
 
 
==== Block Change ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=5 | 0x26
 
| X || Int || Block X Coordinate
 
|-
 
| Y || Byte || Block Y Coordinate
 
|-
 
| Z || Int || Block Z Coordinate
 
|-
 
| Block Type || Short || The new block type for the block
 
|-
 
| Block Data || Byte || The new data for the block
 
|}
 
 
 
==== Block Action ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=6 | 0x27
 
| X || Int || Block X Coordinate
 
|-
 
| Y || Byte || Block Y Coordinate
 
|-
 
| Z || Int || Block Z Coordinate
 
|-
 
| Byte 1 || Byte || Varies depending on block - see [[Block_Actions]]
 
|-
 
| Byte 2 || Byte || Varies depending on block - see [[Block_Actions]]
 
|-
 
| Block Type || Short || The block type for the block
 
|}
 
 
 
==== Block Action ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=5 | 0x28
 
| Entity ID || Int || Entity's ID
 
|-
 
| X || Int || rowspan=3 | Block Position
 
|-
 
| Y || Int
 
|-
 
| Z || Int
 
|-
 
| Destroy Stage || Byte || 0 - 9
 
|}
 
 
 
==== Map Chunk Bulk ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=5 | 0x29
 
| Chunk column count || Short || The number of chunk in this packet
 
|-
 
| Data length || Int || The size of the data field
 
|-
 
| Sky light sent || Bool || Whether or not the chunk data contains a light nibble array. This is true in the main world, false in the end + nether
 
|-
 
| Data || Byte Array || Compressed chunk data
 
|-
 
| Meta information || Meta || See below
 
|}
 
 
 
'''Meta'''
 
{| class="wikitable"
 
! Field Name !! Field Type !! Notes
 
|-
 
|Chunk X || Int || The X Coordinate of the chunk
 
|-
 
|Chunk Z || Int || The Z Coordinate of the chunk
 
|-
 
|Primary bitmap || Unsigned Short || A bitmap which specifies which sections are not empty in this chunk
 
|-
 
|Add bitmap || Unsigned Short || A bitmap which specifies which sections need add information because of very high block ids. not yet used
 
|}
 
 
 
==== Explosion ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan="9" | 0x2A
 
| X || Double ||
 
|-
 
| Y || Double ||
 
|-
 
| Z || Double ||
 
|-
 
| Radius || Float || Currently unused in the client
 
|-
 
| Record count || Int || This is the count, not the size. The size is 3 times this value.
 
|-
 
| Records || (Byte, Byte, Byte) × count || Each record is 3 signed bytes long, each bytes are the XYZ (respectively) offsets of affected blocks.
 
|-
 
| Player Motion X || Float || X velocity of the player being pushed by the explosion
 
|-
 
| Player Motion Y || Float || Y velocity of the player being pushed by the explosion
 
|-
 
| Player Motion Z || Float || Z velocity of the player being pushed by the explosion
 
|}
 
 
 
==== Effect ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan="6" | 0x2B
 
| Effect ID || Int || The ID of the effect, see below.
 
|-
 
| X || Int || The X location of the effect multiplied by 8
 
|-
 
| Y || Byte || The Y location of the effect multiplied by 8
 
|-
 
| Z || Int || The Z location of the effect multiplied by 8
 
|-
 
| Data || Int || Extra data for certain effects, see below.
 
|-
 
| Disable relative volume || Bool || See above
 
|}
 
 
 
'''Sound''':
 
 
 
*1000: <code>random.click</code>
 
*1001: <code>random.click</code>
 
*1002: <code>random.bow</code>
 
*1003: <code>random.door_open</code> or <code>random.door_close</code> (50/50 chance)
 
*1004: <code>random.fizz</code>
 
*1005: Play a music disc. '''Data''': [http://www.minecraftwiki.net/wiki/Music_Discs Record ID]
 
*''(1006 not assigned)''
 
*1007: <code>mob.ghast.charge</code>
 
*1008: <code>mob.ghast.fireball</code>
 
*1009: <code>mob.ghast.fireball</code>, but with a lower volume.
 
*1010: <code>mob.zombie.wood</code>
 
*1011: <code>mob.zombie.metal</code>
 
*1012: <code>mob.zombie.woodbreak</code>
 
*1013: <code>mob.wither.spawn</code>
 
*1014: <code>mob.wither.shoot</code>
 
*1015: <code>mob.bat.takeoff</code>
 
*1016: <code>mob.zombie.infect</code>
 
*1017: <code>mob.zombie.unfect</code>
 
*1018: <code>mob.enderdragon.end</code>
 
*1020: <code>random.anvil_break</code>
 
*1021: <code>random.anvil_use</code>
 
*1022: <code>random.anvil_land</code>
 
 
 
'''Particle''':
 
 
 
*2000: Spawns 10 smoke particles, e.g. from a fire. '''Data''': direction, see below
 
*2001: Block break. '''Data''': [http://www.minecraftwiki.net/wiki/Data_values Block ID]
 
*2002: Splash potion. Particle effect + glass break sound. '''Data''': [http://www.lb-stuff.com/Minecraft/PotionDataValues1.9pre3.txt Potion ID]
 
*2003: Eye of ender entity break animation - particles and sound
 
*2004: Mob spawn particle effect: smoke + flames
 
*2005: Spawn "happy villager" effect (hearts).
 
 
 
Smoke directions:
 
 
 
{| class="wikitable"
 
! ID !! Direction
 
|-
 
| 0 || South - East
 
|-
 
| 1 || South
 
|-
 
| 2 || South - West
 
|-
 
| 3 || East
 
|-
 
| 4 || (Up or middle ?)
 
|-
 
| 5 || West
 
|-
 
| 6 || North - East
 
|-
 
| 7 || North
 
|-
 
| 8 || North - West
 
|}
 
 
 
==== Sound Effect ====
 
 
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan="7" | 0x2C
 
| Sound name || String ||
 
|-
 
| Effect position X || Int || Effect X multiplied by 8
 
|-
 
| Effect position Y || Int || Effect Y multiplied by 8
 
|-
 
| Effect position Z || Int || Effect Z multiplied by 8
 
|-
 
| Volume || Float || 1 is 100%, can be more
 
|-
 
| Pitch || Byte || 63 is 100%, can be more
 
|-
 
| Sound Category || Unsigned Byte || Possible values:
 
MASTER: 0
 
 
 
MUSIC: 1
 
 
 
RECORDS: 2
 
 
 
WEATHER: 3
 
 
 
BLOCKS: 4
 
 
 
MOBS: 5
 
 
 
ANIMALS: 6
 
 
 
PLAYERS: 7
 
|}
 
 
 
==== Particle ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan="9" | 0x3F
 
| Particle name || String || The name of the particle to create. A list can be found [https://gist.github.com/thinkofdeath/5110835 here]
 
|-
 
| X || Float || X position of the particle
 
|-
 
| Y || Float || Y position of the particle
 
|-
 
| Z || Float || Z position of the particle
 
|-
 
| Offset X || Float || This is added to the X position after being multiplied by random.nextGaussian()
 
|-
 
| Offset Y || Float || This is added to the Y position after being multiplied by random.nextGaussian()
 
|-
 
| Offset Z || Float || This is added to the Z position after being multiplied by random.nextGaussian()
 
|-
 
| Particle speed || Float || The speed of each particle
 
|-
 
| Number of particles || Int || The number of particles to create
 
|}
 
 
 
==== Change Game State ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan="2" | 0x2D
 
| Reason || Byte ||
 
|-
 
| Value || Float || Depends on reason
 
|}
 
 
 
'''Reason codes'''
 
 
 
{| class="wikitable"
 
! Code !! Effect !! Notes
 
|-
 
| 0 || Invalid Bed || "tile.bed.notValid"
 
|-
 
| 1 || Begin raining ||
 
|-
 
| 2 || End raining ||
 
|-
 
| 3 || Change game mode || "gameMode.changed" 0 - Survival, 1 - Creative, 2 - Adventure
 
|-
 
| 4 || Enter credits ||
 
|-
 
| 5 || Demo messages || 0 - Show welcome to demo screen, 101 - Tell movement controls, 102 - Tell jump control, 103 - Tell inventory control
 
|-
 
| 6 | Bow hit sound ||
 
|-
 
| 7 || Fade value || The current darkness value. 1 = Dark, 0 = Bright, Setting the value higher causes the game to change color and freeze
 
|-
 
| 8 || Fade time || Time in ticks for the sky to fade
 
|}
 
 
 
==== Spawn Global Entity ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan="5" | 0x2E
 
| Entity ID || Int || The entity ID of the thunderbolt
 
|-
 
| Type || Byte || The global entity type, currently always 1 for thunderbolt.
 
|-
 
| X || Int || Thunderbolt X a [[Data_Types#Fixed-point_numbers|fixed-point number]]
 
|-
 
| Y || Int || Thunderbolt Y a [[Data_Types#Fixed-point_numbers|fixed-point number]]
 
|-
 
| Z || Int || Thunderbolt Z a [[Data_Types#Fixed-point_numbers|fixed-point number]]
 
|}
 
 
 
==== Open Window ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan="6" | 0x2F
 
| Window id || Byte || A unique id number for the window to be displayed.  Notchian server implementation is a counter, starting at 1.
 
|-
 
| Inventory Type || Byte || The window type to use for display.  Check below
 
|-
 
| Window title || String || The title of the window.
 
|-
 
| Number of Slots || Byte || Number of slots in the window (excluding the number of slots in the player inventory).
 
|-
 
| Use provided window title || Bool || If false, the client will look up a string like "window.minecart". If true, the client uses what the server provides.
 
|-
 
| Entity ID || Int || EntityHorse's entityId. Only sent when window type is equal to 11 (AnimalChest).
 
|}
 
 
 
See [[Inventory#Windows|inventory windows]] for further information.
 
 
 
== Status ==
 
 
 
=== Clientbound ===
 
 
 
==== ? ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=1 | 0x00
 
| || String ||
 
|}
 
 
 
 
 
==== ? ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=1 | 0x01
 
| || Long ||
 
|}
 
 
 
=== Serverbound ===
 
 
 
==== ? ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=1 | 0x00 || || ||
 
|}
 
 
 
 
 
==== ? ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=1 | 0x01
 
| || Long ||
 
|}
 
 
 
== Login ==
 
 
 
=== Clientbound ===
 
 
 
==== ? ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=1 | 0x00
 
| || String ||
 
|}
 
 
 
 
 
==== ? ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=5 | 0x01
 
| || String ||
 
|-
 
| Length || Short ||
 
|-
 
| || Byte array ||
 
|-
 
| Length || Short ||
 
|-
 
| || Byte array ||
 
|-
 
|}
 
 
 
 
 
==== ? ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=2 | 0x02
 
| UUID || String ||
 
|-
 
| Name || String ||
 
|}
 
 
 
 
 
=== Serverbound ===
 
 
 
==== ? ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=1 | 0x00
 
| Name || String ||
 
|}
 
 
 
==== ? ====
 
{| class="wikitable"
 
! Packet ID !! Field Name !! Field Type !! Notes
 
|-
 
| rowspan=4 | 0x01
 
| Length || Short ||
 
|-
 
| || Byte array ||
 
|-
 
| Length || Short ||
 
|-
 
| || Byte array ||
 
|-
 
|}
 
 
 
== Plugin Channels ==
 
 
 
=== MC|RPack ===
 
{| class="wikitable"
 
! Field Name !! Field Type !! Example !! Notes
 
|-
 
| Resource pack URL || UTF8 string || http://example.com/pack.zip ||
 
|}
 

Latest revision as of 16:42, 29 June 2024

There are currently no pre-release versions available to document on this page. For the latest stable Minecraft release, see the Protocol page. For previous pre-release pages, see the Protocol version numbers page.

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.