Table of Contents

KeyName
TypeBehaviourPackInfos
TypeTexturePackInfos
TypeResourcePackIdVersions
TypeResourcePackIds
TypeExperiment
TypeExperiments
TypeGameMode
TypeGameRule
TypeGameRules
TypeBlob
TypeBlockPalette
TypeItemstates
TypeItem
Typevec3i
Typevec3u
Typevec3f
Typevec2f
TypeMetadataDictionary
TypeLink
TypeLinks
TypeEntityAttributes
TypeRotation
TypeBlockCoordinates
TypePlayerAttributes
TypeTransaction
TypeItemStack
TypeItemStacks
TypeRecipeIngredient
TypePotionTypeRecipes
TypePotionContainerChangeRecipes
TypeRecipes
TypeSkinImage
TypeSkin
TypePlayerRecords
TypeScoreEntries
TypeScoreboardIdentityEntries
TypeEnchant
TypeEnchantOptions
TypeStackRequestSlotInfo
TypeItemStackRequests
TypeItemStackResponses
TypeItemComponentList
TypeCommandOrigin
TypeWindowID
TypeWindowIDVarint
TypeWindowType
TypeLegacyEntityType
0x1packet_login
TypeLoginTokens
0x2packet_play_status
0x3packet_server_to_client_handshake
0x4packet_client_to_server_handshake
0x5packet_disconnect
0x6packet_resource_packs_info
0x7packet_resource_pack_stack
0x8packet_resource_pack_client_response
0x9packet_text
0xapacket_set_time
0xbpacket_start_game
0xcpacket_add_player
0xdpacket_add_entity
0xepacket_remove_entity
0xfpacket_add_item_entity
0x11packet_take_item_entity
0x12packet_move_entity
0x13packet_move_player
0x14packet_rider_jump
0x15packet_update_block
0x16packet_add_painting
0x17packet_tick_sync
0x18packet_level_sound_event_old
0x19packet_level_event
0x1apacket_block_event
0x1bpacket_entity_event
0x1cpacket_mob_effect
0x1dpacket_update_attributes
0x1epacket_inventory_transaction
0x1fpacket_mob_equipment
0x20packet_mob_armor_equipment
0x21packet_interact
0x22packet_block_pick_request
0x23packet_entity_pick_request
0x24packet_player_action
0x26packet_hurt_armor
0x27packet_set_entity_data
0x28packet_set_entity_motion
0x29packet_set_entity_link
0x2apacket_set_health
0x2bpacket_set_spawn_position
0x2cpacket_animate
0x2dpacket_respawn
0x2epacket_container_open
0x2fpacket_container_close
0x30packet_player_hotbar
0x31packet_inventory_content
0x32packet_inventory_slot
0x33packet_container_set_data
0x34packet_crafting_data
0x35packet_crafting_event
0x36packet_gui_data_pick_item
0x37packet_adventure_settings
0x38packet_block_entity_data
0x39packet_player_input
0x3apacket_level_chunk
0x3bpacket_set_commands_enabled
0x3cpacket_set_difficulty
0x3dpacket_change_dimension
0x3epacket_set_player_game_type
0x3fpacket_player_list
0x40packet_simple_event
0x41packet_event
0x42packet_spawn_experience_orb
0x43packet_clientbound_map_item_data
0x44packet_map_info_request
0x45packet_request_chunk_radius
0x46packet_chunk_radius_update
0x47packet_item_frame_drop_item
0x48packet_game_rules_changed
0x49packet_camera
0x4apacket_boss_event
0x4bpacket_show_credits
0x4cpacket_available_commands
0x4dpacket_command_request
0x4epacket_command_block_update
0x4fpacket_command_output
0x50packet_update_trade
0x51packet_update_equipment
0x52packet_resource_pack_data_info
0x53packet_resource_pack_chunk_data
0x54packet_resource_pack_chunk_request
0x55packet_transfer
0x56packet_play_sound
0x57packet_stop_sound
0x58packet_set_title
0x59packet_add_behavior_tree
0x5apacket_structure_block_update
0x5bpacket_show_store_offer
0x5cpacket_purchase_receipt
0x5dpacket_player_skin
0x5epacket_sub_client_login
0x5fpacket_initiate_web_socket_connection
0x60packet_set_last_hurt_by
0x61packet_book_edit
0x62packet_npc_request
0x63packet_photo_transfer
0x64packet_modal_form_request
0x65packet_modal_form_response
0x66packet_server_settings_request
0x67packet_server_settings_response
0x68packet_show_profile
0x69packet_set_default_game_type
0x6apacket_remove_objective
0x6bpacket_set_display_objective
0x6cpacket_set_score
0x6dpacket_lab_table
0x6epacket_update_block_synced
0x6fpacket_move_entity_delta
0x70packet_set_scoreboard_identity
0x71packet_set_local_player_as_initialized
0x72packet_update_soft_enum
0x73packet_network_stack_latency
0x75packet_script_custom_event
0x76packet_spawn_particle_effect
0x77packet_available_entity_identifiers
0x78packet_level_sound_event_v2
0x79packet_network_chunk_publisher_update
0x7apacket_biome_definition_list
0x7bpacket_level_sound_event
0x7cpacket_level_event_generic
0x7dpacket_lectern_update
0x7epacket_video_stream_connect
0x7fpacket_add_ecs_entity
0x80packet_remove_ecs_entity
0x81packet_client_cache_status
0x82packet_on_screen_texture_animation
0x83packet_map_create_locked_copy
0x84packet_structure_template_data_export_request
0x85packet_structure_template_data_export_response
0x86packet_update_block_properties
0x87packet_client_cache_blob_status
0x88packet_client_cache_miss_response
0x89packet_education_settings
0x8apacket_emote
0x8bpacket_multiplayer_settings
0x8cpacket_settings_command
0x8dpacket_anvil_damage
0x8epacket_completed_using_item
0x8fpacket_network_settings
0x90packet_player_auth_input
0x91packet_creative_content
0x92packet_player_enchant_options
0x93packet_item_stack_request
0x94packet_item_stack_response
0x95packet_player_armor_damage
0x97packet_update_player_game_type
0x98packet_emote_list
0x9apacket_position_tracking_db_request
0x99packet_position_tracking_db_broadcast
0x9cpacket_packet_violation_warning
0x9dpacket_motion_prediction_hints
0x9epacket_animate_entity
0x9fpacket_camera_shake
0xa0packet_player_fog
0xa1packet_correct_player_move_prediction
0xa2packet_item_component
0xa3packet_filter_text_packet


Type
BehaviourPackInfos
Datatype

Field NameField TypeNotes
BehaviourPackInfos lengthli16
BehaviourPackInfos
array
uuidstring
versionstring
sizelu64
content keystring
sub pack namestring
content identitystring
has scriptsbool



Type
TexturePackInfos
Datatype

Field NameField TypeNotes
TexturePackInfos lengthli16
TexturePackInfos
array
uuidstring
versionstring
sizelu64
content keystring
sub pack namestring
content identitystring
has scriptsbool
rtx enabledbool



Type
ResourcePackIdVersions
Datatype

Field NameField TypeNotes
ResourcePackIdVersions lengthvarint
ResourcePackIdVersions
array
uuidstring
versionstring
namestring



Type
Experiment
Datatype

Field NameField TypeNotes
namestring
enabledbool



Type
GameMode
Datatype

Field NameField TypeNotes
GameModezigzag32 enum
0survival
1creative
2adventure
3survival spectator
4creative spectator
5fallback



Type
GameRule
Datatype

Field NameField TypeNotes
namestring
typevarint enum
1bool
2int
3float
value

if type
is boolbool
is intzigzag32
is floatlf32



Type
Blob
Datatype

Field NameField TypeNotes
hashlu64
payloadByteArray



Type
BlockPalette
Datatype

Field NameField TypeNotes
BlockPalette lengthvarint
BlockPalette
array
namestring
statenbt



Type
Itemstates
Datatype

Field NameField TypeNotes
Itemstates lengthvarint
Itemstates
array
namestring
runtime idli16
component basedbool



Type
Item
Datatype

Field NameField TypeNotes
network idzigzag32
🔁

if network id
is 0void
default
auxiliary valuezigzag32
has nbtlu16 enum
65535true
0false
nbt

if has nbt
is true
versionu8
nbtnbt
defaultvoid
can place on lengthzigzag32
can place on
array
string
can destroy lengthzigzag32
can destroy
array
string
🔁

if network id
is 355
blocking tickzigzag64



Type
vec3i
Datatype

Field NameField TypeNotes
xzigzag32
yzigzag32
zzigzag32



Type
vec3u
Datatype

Field NameField TypeNotes
xvarint
yvarint
zvarint



Type
vec3f
Datatype

Field NameField TypeNotes
xlf32
ylf32
zlf32



Type
vec2f
Datatype

Field NameField TypeNotes
xlf32
zlf32



Type
MetadataDictionary
Datatype

Field NameField TypeNotes
MetadataDictionary lengthvarint
MetadataDictionary
array
keyvarint enum
0index
1health
2variant
3color
4nametag
5owner eid
6target eid
7air
8potion color
9potion ambient
10jump duration
11hurt time
12hurt direction
13paddle time left
14paddle time right
15experience value
16minecart display block
17minecart display offset
18minecart has display
20old swell
21swell dir
22charge amount
23enderman held runtime id
24entity age
26player flags
27player index
28player bed position
29fireball power x
30fireball power y
31fireball power z
32aux power
33fish x
34fish z
35fish angle
36potion aux value
37lead holder eid
38scale
39interactive tag
40npc skin id
41url tag
42max airdata max air
43mark variant
44container type
45container base size
46container extra slots per strength
47block target
48wither invulnerable ticks
49wither target 1
50wither target 2
51wither target 3
52aerial attack
53boundingbox width
54boundingbox height
55fuse length
56rider seat position
57rider rotation locked
58rider max rotation
59rider min rotation
60area effect cloud radius
61area effect cloud waiting
62area effect cloud particle id
63shulker peek id
64shulker attach face
65shulker attached
66shulker attach pos
67trading player eid
68trading career
69has command block
70command block command
71command block last output
72command block track output
73controlling rider seat number
74strength
75max strength
76spell casting color
77limited life
78armor stand pose index
79ender crystal time offset
80always show nametag
81color 2
82name author
83score tag
84balloon attached entity
85pufferfish size
86bubble time
87agent
88sitting amount
89sitting amount previous
90eating counter
91flags extended
92laying amount
93laying amount previous
94duration
95spawn time
96change rate
97change on pickup
98pickup count
99interact text
100trade tier
101max trade tier
102trade experience
103skin id
104spawning frames
105command block tick delay
106command block execute on first tick
107ambient sound interval
108ambient sound interval range
109ambient sound event name
110fall damage multiplier
111name raw text
112can ride target
113low tier cured discount
114high tier cured discount
115nearby cured discount
116nearby cured discount timestamp
117hitbox
118is buoyant
119buoyancy data
typevarint enum
0byte
1short
2int
3float
4string
5compound
6vec3i
7long
8vec3f
value

if type
is bytei8
is shortli16
is intzigzag32
is floatlf32
is stringstring
is compoundnbt
is vec3ivec3i
is longzigzag64
is vec3fvec3f




Field NameField TypeNotes
ridden entity idzigzag64
rider entity idzigzag64
typeu8
immediatebool
rider initiatedbool



Type
EntityAttributes
Datatype

Field NameField TypeNotes
EntityAttributes lengthvarint
EntityAttributes
array
namestring
minlf32
valuelf32
maxlf32



Type
Rotation
Datatype

Field NameField TypeNotes
yawbyterot
pitchbyterot
head yawbyterot



Type
BlockCoordinates
Datatype

Field NameField TypeNotes
xzigzag32
yvarint
zzigzag32



Type
PlayerAttributes
Datatype

Field NameField TypeNotes
PlayerAttributes lengthvarint
PlayerAttributes
array
minlf32
maxlf32
currentlf32
defaultlf32
namestring



Type
Transaction
Datatype

Field NameField TypeNotes
legacy request idzigzag32
legacy transactions

if legacy request id
is 0void
default lengthvarint
default
array
container idu8
changed slots lengthvarint
changed slots
array
slot idu8
transaction typevarint enum
0normal
1inventory mismatch
2item use
3item use on entity
4item release
network idsbool
inventory actions lengthvarint
inventory actions
array
source typevarint enum
0container
1global
2world interaction
3creative
100craft slot
99999craft
🔁

if source type
is container or creative
inventory idvarint
is world interaction
flagsvarint
is craft or craft slot
actionvarint
defaultvoid
slotvarint
old itemItem
new itemItem
new item stack id

if ../network ids
is truezigzag32
defaultvoid
transaction data

if transaction type
is normal or inventory mismatchvoid
is item use
action typevarint enum
0click block
1click air
2break block
block positionBlockCoordinates
facevarint
hotbar slotvarint
held itemItem
player posvec3f
click posvec3f
block runtime idvarint
is item use on entity
entity runtime idvarint64
action typevarint enum
0interact
1attack
hotbar slotzigzag32
held itemItem
player posvec3f
click posvec3f
is item release
action typevarint enum
0release
1consume
hotbar slotzigzag32
held itemItem
head posvec3f



Type
ItemStack
Datatype

Field NameField TypeNotes
runtime idzigzag32
itemItem



Type
RecipeIngredient
Datatype

Field NameField TypeNotes
network idzigzag32
🔁

if network id
is 0void
default
network datazigzag32
countzigzag32



Type
PotionTypeRecipes
Datatype

Field NameField TypeNotes
PotionTypeRecipes lengthvarint
PotionTypeRecipes
array
input item idzigzag32
input item metazigzag32
ingredient idzigzag32
ingredient metazigzag32
output item idzigzag32
output item metazigzag32



Type
PotionContainerChangeRecipes
Datatype

Field NameField TypeNotes
PotionContainerChangeRecipes lengthvarint
PotionContainerChangeRecipes
array
input item idzigzag32
ingredient idzigzag32
output item idzigzag32



Type
Recipes
Datatype

Field NameField TypeNotes
Recipes lengthvarint
Recipes
array
typezigzag32 enum
0shapeless
1shaped
2furnace
3furnace with metadata
4multi
5shulker box
6shapeless chemistry
7shaped chemistry
recipe

if type
is shapeless or shulker box or shapeless chemistry
recipe idstring
input lengthvarint
input
array
RecipeIngredient
output lengthvarint
output
array
Item
uuiduuid
blockstring
priorityzigzag32
network idzigzag32
is shaped or shaped chemistry
recipe idstring
widthzigzag32
heightzigzag32
Length for input below is width from above
input
array
Length for __496 below is height from above
__496
array
RecipeIngredient
output lengthvarint
output
array
Item
uuiduuid
blockstring
priorityzigzag32
network idzigzag32
is furnace
input idzigzag32
outputItem
blockstring
is furnace with metadata
input idzigzag32
input metazigzag32
outputItem
blockstring
is multi
uuiduuid
network idzigzag32



Type
SkinImage
Datatype

Field NameField TypeNotes
widthli32
heightli32
datastring



Type
Skin
Datatype

Field NameField TypeNotes
skin idstring
skin resource packstring
skin dataSkinImage
animations lengthli32
animations
array
skin imageSkinImage
animation typeli32
animation frameslf32
expression typelf32
cape dataSkinImage
geometry datastring
animation datastring
premiumstring
personabool
cape on classicbool
cape idstring
full skin idstring
arm sizestring
skin colorstring
personal pieces lengthli32
personal pieces
array
piece idstring
piece typestring
pack idstring
is default piecebool
product idstring
piece tint colors lengthli32
piece tint colors
array
piece typestring
colors lengthli32
colors
array
string



Type
PlayerRecords
Datatype

Field NameField TypeNotes
typeu8 enum
0add
1remove
records countvarint
Length for records below is records count from above
records
array
🔁

if type
is add
uuiduuid
entity unique idzigzag64
usernamestring
xbox user idstring
platform chat idstring
build platformli32
skin dataSkin
is teacherbool
is hostbool
is remove
uuiduuid
Length for verified below is records count from above
verified
array
bool



Type
ScoreEntries
Datatype

Field NameField TypeNotes
typeu8 enum
0change
1remove
entries lengthvarint
entries
array
scoreboard idzigzag64
objective namestring
scoreli32
🔁

if type
is remove
entry typei8 enum
1player
2entity
3fake player
entity unique id

if entry type
is player or entityzigzag64
custom name

if entry type
is fake playerstring



Type
ScoreboardIdentityEntries
Datatype

Field NameField TypeNotes
typei8 enum
0TYPE REGISTER IDENTITY
1TYPE CLEAR IDENTITY
entries lengthvarint
entries
array
scoreboard idzigzag64
entity unique id

if type
is TYPE REGISTER IDENTITYzigzag64
defaultvoid



Type
Enchant
Datatype

Field NameField TypeNotes
idu8
levelu8



Type
EnchantOptions
Datatype

Field NameField TypeNotes
EnchantOptions lengthvarint
EnchantOptions
array
costvarint
slot flagsli32
equip enchants lengthvarint
equip enchants
array
Enchant
held enchants lengthvarint
held enchants
array
Enchant
self enchants lengthvarint
self enchants
array
Enchant
namestring
option idzigzag32



Type
StackRequestSlotInfo
Datatype

Field NameField TypeNotes
container idu8
slot idu8
stack idzigzag32



Type
ItemStackRequests
Datatype

Field NameField TypeNotes
ItemStackRequests lengthvarint
ItemStackRequests
array
request idzigzag32
actions lengthvarint
actions
array
type idu8 enum
0take
1place
2swap
3drop
4destroy
5consume
6create
7lab table combine
8beacon payment
9craft recipe
10craft recipe auto
11craft creative
12optional
13non implemented
14results deprecated
🔁

if type id
is take or place
countu8
sourceStackRequestSlotInfo
destinationStackRequestSlotInfo
is swap
sourceStackRequestSlotInfo
destinationStackRequestSlotInfo
is drop
countu8
sourceStackRequestSlotInfo
randomlybool
is destroy or consume
countu8
sourceStackRequestSlotInfo
is create
result slot idu8
is beacon payment
primary effectzigzag32
secondary effectzigzag32
is craft recipe or craft recipe auto
recipe network idvarint
is craft creative
creative item network idvarint
is optional
recipe network idvarint
filtered string indexli32
is non implementedvoid
is results deprecated
result items lengthvarint
result items
array
Item
times craftedu8
custom names lengthvarint
custom names
array
string



Type
ItemStackResponses
Datatype

Field NameField TypeNotes
ItemStackResponses lengthvarint
ItemStackResponses
array
resultu8
request idvarint
containers lengthvarint
containers
array
container idu8
slots lengthvarint
slots
array
slotu8
hotbar slotu8
countu8
item stack idvarint
custom namestring



Type
ItemComponentList
Datatype

Field NameField TypeNotes
ItemComponentList lengthvarint
ItemComponentList
array
namestring
nbtnbt



Type
CommandOrigin
Datatype

Field NameField TypeNotes
typevarint enum
0player
1block
2minecart block
3dev console
4test
5automation player
6client automation
7dedicated server
8entity
9virtual
10game argument
11entity server
uuiduuid
request idstring
player entity id

if type
is dev console or test
player entity idzigzag64



Type
WindowID
Datatype

Field NameField TypeNotes
WindowIDi8 enum
-100drop contents
-24beacon
-23trading output
-22trading use inputs
-21trading input 2
-20trading input 1
-17enchant output
-16enchant material
-15enchant input
-13anvil output
-12anvil result
-11anvil material
-10container input
-5crafting use ingredient
-4crafting result
-3crafting remove ingredient
-2crafting add ingredient
-1none
0inventory
1first
100last
119offhand
120armor
121creative
122hotbar
123fixed inventory
124ui



Type
WindowIDVarint
Datatype

Field NameField TypeNotes
WindowIDVarintvarint enum
-100drop contents
-24beacon
-23trading output
-22trading use inputs
-21trading input 2
-20trading input 1
-17enchant output
-16enchant material
-15enchant input
-13anvil output
-12anvil result
-11anvil material
-10container input
-5crafting use ingredient
-4crafting result
-3crafting remove ingredient
-2crafting add ingredient
-1none
0inventory
1first
100last
119offhand
120armor
121creative
122hotbar
123fixed inventory
124ui



Type
WindowType
Datatype

Field NameField TypeNotes
WindowTypeu8 enum
0container
1workbench
2furnace
3enchantment
4brewing stand
5anvil
6dispenser
7dropper
8hopper
9cauldron
10minecart chest
11minecart hopper
12horse
13beacon
14structure editor
15trading
16command block
17jukebox
18armor
19hand
20compound creator
21element constructor
22material reducer
23lab table
24loom
25lectern
26grindstone
27blast furnace
28smoker
29stonecutter
30cartography
31hud
32jigsaw editor
33smithing table



Type
LegacyEntityType
Datatype

Field NameField TypeNotes
LegacyEntityTypeli32 enum
10chicken
11cow
12pig
13sheep
14wolf
15villager
16mooshroom
17squid
18rabbit
19bat
20iron golem
21snow golem
22ocelot
23horse
24donkey
25mule
26skeleton horse
27zombie horse
28polar bear
29llama
30parrot
31dolphin
32zombie
33creeper
34skeleton
35spider
36zombie pigman
37slime
38enderman
39silverfish
40cave spider
41ghast
42magma cube
43blaze
44zombie villager
45witch
46stray
47husk
48wither skeleton
49guardian
50elder guardian
51npc
52wither
53ender dragon
54shulker
55endermite
56agent
57vindicator
58phantom
61armor stand
62tripod camera
63player
64item
65tnt
66falling block
67moving block
68xp bottle
69xp orb
70eye of ender signal
71ender crystal
72fireworks rocket
73thrown trident
74turtle
75cat
76shulker bullet
77fishing hook
78chalkboard
79dragon fireball
80arrow
81snowball
82egg
83painting
84minecart
85fireball
86splash potion
87ender pearl
88leash knot
89wither skull
90boat
91wither skull dangerous
93lightning bolt
94small fireball
95area effect cloud
96hopper minecart
97tnt minecart
98chest minecart
100command block minecart
101lingering potion
102llama spit
103evocation fang
104evocation illager
105vex
106ice bomb
107balloon
108pufferfish
109salmon
110drowned
111tropicalfish
112cod
113panda



1
packet login
Serverbound

Login Sequence

The login process is as follows: C→S: Login S→C: Server To Client Handshake C→S: Client To Server Handshake S→C: Play Status (Login success) To spawn, the following packets should be sent, in order, after the ones above: S→C: Resource Packs Info C→S: Resource Pack Client Response S→C: Resource Pack Stack C→S: Resource Pack Client Response S→C: Start Game S→C: Creative Content S→C: Biome Definition List S→C: Chunks S→C: Play Status (Player spawn) If there are no resource packs being sent, a Resource Pack Stack can be sent directly after Resource Packs Info to avoid the client responses.

Field NameField TypeNotes
protocol versioni32

Protocol version (Big Endian!)

tokens["encapsulated", { "lengthType": "varint", "type": "LoginTokens" }]



Type
LoginTokens
Datatype

Field NameField TypeNotes
identityLittleString

JSON array of JWT data: contains the display name, UUID and XUID It should be signed by the Mojang public key

clientLittleString

Skin related data




2
packet play status
Clientbound

Field NameField TypeNotes
statusi32 enum
0login success

Sent after Login has been successfully decoded and the player has logged in

1failed client

Displays "Could not connect: Outdated client!"

2failed spawn

Displays "Could not connect: Outdated server!"

3player spawn

Sent after world data to spawn the player

4failed invalid tenant

Displays "Unable to connect to world. Your school does not have access to this server."

5failed vanilla edu

Displays "The server is not running Minecraft: Education Edition. Failed to connect."

6failed edu vanilla

Displays "The server is running an incompatible edition of Minecraft. Failed to connect."

7failed server full

Displays "Wow this server is popular! Check back later to see if space opens up. Server Full"




3
packet server to client handshake
Clientbound

Field NameField TypeNotes
tokenstring

Contains the salt to complete the Diffie-Hellman key exchange




4
packet client to server handshake
Serverbound

Sent by the client in response to a Server To Client Handshake packet sent by the server. It is the first encrypted packet in the login handshake and serves as a confirmation that encryption is correctly initialized client side. It has no fields.

Field NameField TypeNotes



5
packet disconnect
Clientbound

Sent by the server to disconnect a client.

Field NameField TypeNotes
hide disconnect reasonbool

Specifies if the disconnection screen should be hidden when the client is disconnected, meaning it will be sent directly to the main menu.

messagestring

An optional message to show when disconnected.




6
packet resource packs info
Clientbound

Field NameField TypeNotes
must acceptbool

If the resource pack requires the client accept it.

has scriptsbool

If scripting is enabled.

behaviour packsBehaviourPackInfos

A list of behaviour packs that the client needs to download before joining the server. All of these behaviour packs will be applied together.

texture packsTexturePackInfos

A list of resource packs that the client needs to download before joining the server. The order of these resource packs is not relevant in this packet. It is however important in the Resource Pack Stack packet.




7
packet resource pack stack
Clientbound

Field NameField TypeNotes
must acceptbool

If the resource pack must be accepted for the player to join the server.

behavior packsResourcePackIdVersions

[inline]

resource packsResourcePackIdVersions

[inline]

game versionstring
experimentsExperiments
experiments previously usedbool



8
packet resource pack client response
Serverbound

Field NameField TypeNotes
response statusu8 enum
0none
1refused
2send packs
3have all packs
4completed
resourcepackidsResourcePackIds

All of the pack IDs.




9
packet text
Bidirectional

Sent by the client to the server to send chat messages, and by the server to the client to forward or send messages, which may be chat, popups, tips etc.

Field NameField TypeNotes
typeu8 enum
0raw

TextType is the type of the text sent. When a client sends this to the server, it should always be TextTypeChat. If the server sends it, it may be one of the other text types above.

1chat
2translation
3popup
4jukebox popup
5tip
6system
7whisper
8announcement
9json whisper
10json
needs translationbool

NeedsTranslation specifies if any of the messages need to be translated. It seems that where % is found in translatable text types, these are translated regardless of this bool. Translatable text types include TextTypeTip, TextTypePopup and TextTypeJukeboxPopup.

🔁

if type
is chat or whisper or announcement
source namestring
messagestring
is raw or tip or system or json whisper or json
messagestring
is translation or popup or jukebox popup
messagestring
parameters lengthvarint
parameters
array
string
xuidstring

The XUID of the player who sent this message.

platform chat idstring

PlatformChatID is an identifier only set for particular platforms when chatting (presumably only for Nintendo Switch). It is otherwise an empty string, and is used to decide which players are able to chat with each other.




10
packet set time
Clientbound

For additional information and examples of all the chat types above, see here: https://imgur.com/a/KhcFscg Sent by the server to update the current time client-side. The client actually advances time client-side by itself, so this packet does not need to be sent each tick. It is merely a means of synchronizing time between server and client.

Field NameField TypeNotes
timezigzag32

Time is the current time. The time is not limited to 24000 (time of day), but continues progressing after that.




11
packet start game
Clientbound

Sent by the server to send information about the world the player will be spawned in.

Field NameField TypeNotes
entity idzigzag64

The unique ID of the player. The unique ID is a value that remains consistent across different sessions of the same world, but most unofficial servers simply fill the runtime ID of the entity out for this field.

runtime entity idvarint64

The runtime ID of the player. The runtime ID is unique for each world session, and entities are generally identified in packets using this runtime ID.

player gamemodeGameMode

PlayerGameMode is the game mode the player currently has. It is a value from 0-4, with 0 being survival mode, 1 being creative mode, 2 being adventure mode, 3 being survival spectator and 4 being creative spectator. This field may be set to 5 to make the client fall back to the game mode set in the WorldGameMode field.

spawnvec3f

The spawn position of the player in the world. In servers this is often the same as the world's spawn position found below.

rotationvec2f

The pitch and yaw of the player

seedzigzag32

The seed used to generate the world. Unlike in Java edition, the seed is a 32bit Integer here.

biome typeli16
biome namestring
dimensionzigzag32

Dimension is the ID of the dimension that the player spawns in. It is a value from 0-2, with 0 being the overworld, 1 being the nether and 2 being the end.

generatorzigzag32

Generator is the generator used for the world. It is a value from 0-4, with 0 being old limited worlds, 1 being infinite worlds, 2 being flat worlds, 3 being nether worlds and 4 being end worlds. A value of 0 will actually make the client stop rendering chunks you send beyond the world limit.

world gamemodeGameMode

The world game mode that a player gets when it first spawns in the world. It is shown in the settings and is used if the Player Gamemode is set to 5.

difficultyzigzag32

Difficulty is the difficulty of the world. It is a value from 0-3, with 0 being peaceful, 1 being easy, 2 being normal and 3 being hard.

spawn positionBlockCoordinates

The block on which the world spawn of the world. This coordinate has no effect on the place that the client spawns, but it does have an effect on the direction that a compass poInts.

achievements disabledbool

Defines if achievements are disabled in the world. The client crashes if this value is set to true while the player's or the world's game mode is creative, and it's recommended to simply always set this to false as a server.

day cycle stop timezigzag32

The time at which the day cycle was locked if the day cycle is disabled using the respective game rule. The client will maIntain this time as Boolean as the day cycle is disabled.

edu offerzigzag32

Some Minecraft: Education Edition field that specifies what 'region' the world was from, with 0 being None, 1 being RestOfWorld, and 2 being China. The actual use of this field is unknown.

edu features enabledbool

Specifies if the world has education edition features enabled, such as the blocks or entities specific to education edition.

edu product uuidstring
rain levellf32

The level specifying the Intensity of the rain falling. When set to 0, no rain falls at all.

lightning levellf32
has confirmed platform locked contentbool

The level specifying the Intensity of the thunder. This may actually be set independently from the rain level, meaning dark clouds can be produced without rain.

is multiplayerbool

Specifies if the world is a multi-player game. This should always be set to true for servers.

broadcast to lanbool

Specifies if LAN broadcast was Intended to be enabled for the world.

xbox live broadcast modevarint

The mode used to broadcast the joined game across XBOX Live.

platform broadcast modevarint

The mode used to broadcast the joined game across the platform.

enable commandsbool

If commands are enabled for the player. It is recommended to always set this to true on the server, as setting it to false means the player cannot, under any circumstance, use a command.

is texturepacks requiredbool

Specifies if the texture pack the world might hold is required, meaning the client was forced to download it before joining.

gamerulesGameRules

Defines game rules currently active with their respective values. The value of these game rules may be either 'bool', 'Int32' or 'Float32'. Some game rules are server side only, and don't necessarily need to be sent to the client.

experimentsExperiments
experiments previously usedbool
bonus chestbool

Specifies if the world had the bonus map setting enabled when generating it. It does not have any effect client-side.

map enabledbool

Specifies if the world has the start with map setting enabled, meaning each joining player obtains a map. This should always be set to false, because the client obtains a map all on its own accord if this is set to true.

permission levelzigzag32

The permission level of the player. It is a value from 0-3, with 0 being visitor, 1 being member, 2 being operator and 3 being custom.

server chunk tick rangeli32

The radius around the player in which chunks are ticked. Most servers set this value to a fixed number, as it does not necessarily affect anything client-side.

has locked behavior packbool

Specifies if the texture pack of the world is locked, meaning it cannot be disabled from the world. This is typically set for worlds on the marketplace that have a dedicated texture pack.

has locked resource packbool

Specifies if the texture pack of the world is locked, meaning it cannot be disabled from the world. This is typically set for worlds on the marketplace that have a dedicated texture pack.

is from locked world templatebool

Specifies if the world from the server was from a locked world template. For servers this should always be set to false.

msa gamertags onlybool
is from world templatebool

Specifies if the world from the server was from a locked world template. For servers this should always be set to false.

is world template option lockedbool

Specifies if the world was a template that locks all settings that change properties above in the settings GUI. It is recommended to set this to true for servers that do not allow things such as setting game rules through the GUI.

only spawn v1 villagersbool

A hack that Mojang put in place to preserve backwards compatibility with old villagers. The his never actually read though, so it has no functionality.

game versionstring

The version of the game from which Vanilla features will be used. The exact function of this field isn't clear.

limited world widthli32
limited world lengthli32
is new netherbool
experimental gameplay overridebool
level idstring

A base64 encoded world ID that is used to identify the world.

world namestring

The name of the world that the player is joining. Note that this field shows up above the player list for the rest of the game session, and cannot be changed. Setting the server name to this field is recommended.

premium world template idstring

A UUID specific to the premium world template that might have been used to generate the world. Servers should always fill out an empty String for this.

is trialbool

Specifies if the world was a trial world, meaning features are limited and there is a time limit on the world.

movement authorityzigzag32 enum
0client

Specifies if the client or server is authoritative over the movement of the player, meaning it controls the movement of it.

1server
2server v2 rewind

PlayerAuthInputPacket + a bunch of junk that solves a nonexisting problem

current tickli64

The total time in ticks that has elapsed since the start of the world.

enchantment seedzigzag32

The seed used to seed the random used to produce enchantments in the enchantment table. Note that the exact correct random implementation must be used to produce the correct results both client- and server-side.

block paletteBlockPalette
itemstatesItemstates

A list of all items with their legacy IDs which are available in the game. Failing to send any of the items that are in the game will crash mobile clients.

multiplayer correlation idstring

A unique ID specifying the multi-player session of the player. A random UUID should be filled out for this field.

server authoritative inventorybool



12
packet add player
Clientbound

Field NameField TypeNotes
uuiduuid

UUID is the UUID of the player. It is the same UUID that the client sent in the Login packet at the start of the session. A player with this UUID must exist in the player list (built up using the Player List packet) for it to show up in-game.

usernamestring

Username is the name of the player. This username is the username that will be set as the initial name tag of the player.

entity id selfzigzag64

The unique ID of the player. The unique ID is a value that remains consistent across different sessions of the same world, but most unoffical servers simply fill the runtime ID of the player out for this field.

runtime entity idvarint

The runtime ID of the player. The runtime ID is unique for each world session, and entities are generally identified in packets using this runtime ID.

platform chat idstring

An identifier only set for particular platforms when chatting (presumably only for Nintendo Switch). It is otherwise an empty string, and is used to decide which players are able to chat with each other.

xlf32
ylf32
zlf32
speed xlf32
speed ylf32
speed zlf32
pitchlf32
yawlf32
head yawlf32
held itemItem
metadataMetadataDictionary
flagsvarint
command permissionvarint
action permissionsvarint
permission levelvarint
custom stored permissionsvarint
user idli64
linksLinks
device idstring
device osli32



13
packet add entity
Clientbound

Field NameField TypeNotes
entity id selfzigzag64
runtime entity idvarint
entity typestring
xlf32
ylf32
zlf32
speed xlf32
speed ylf32
speed zlf32
pitchlf32
yawlf32
head yawlf32
attributesEntityAttributes
metadataMetadataDictionary
linksLinks



14
packet remove entity
Clientbound

Field NameField TypeNotes
entity id selfzigzag64



15
packet add item entity
Clientbound

Field NameField TypeNotes
entity id selfzigzag64
runtime entity idvarint
itemItem
xlf32
ylf32
zlf32
speed xlf32
speed ylf32
speed zlf32
metadataMetadataDictionary
is from fishingbool



17
packet take item entity
Clientbound

Field NameField TypeNotes
runtime entity idvarint
targetvarint



18
packet move entity
Bidirectional

Field NameField TypeNotes
runtime entity idvarint
flagsu8
positionvec3f
rotationRotation



19
packet move player
Bidirectional

MovePlayer is sent by players to send their movement to the server, and by the server to update the movement of player entities to other players.

Field NameField TypeNotes
runtime idvarint

EntityRuntimeID is the runtime ID of the player. The runtime ID is unique for each world session, and entities are generally identified in packets using this runtime ID.

positionvec3f

Position is the position to spawn the player on. If the player is on a distance that the viewer cannot see it, the player will still show up if the viewer moves closer.

pitchlf32

Pitch is the vertical rotation of the player. Facing straight forward yields a pitch of 0. Pitch is measured in degrees.

yawlf32

Yaw is the horizontal rotation of the player. Yaw is also measured in degrees

head yawlf32

HeadYaw is the same as Yaw, except that it applies specifically to the head of the player. A different value for HeadYaw than Yaw means that the player will have its head turned

modeu8 enum
0normal

Mode is the mode of the movement. It specifies the way the player's movement should be shown to other players. It is one of the constants below.

1reset
2teleport
3rotation
on groundbool

OnGround specifies if the player is considered on the ground. Note that proxies or hacked clients could fake this to always be true, so it should not be taken for granted.

ridden runtime idvarint

RiddenEntityRuntimeID is the runtime ID of the entity that the player might currently be riding. If not riding, this should be left 0.

teleport

if mode
is teleport
causeli32 enum
0unknown

TeleportCause is written only if Mode is MoveModeTeleport. It specifies the cause of the teleportation, which is one of the constants above.

1projectile
2chorus fruit
3command
4behavior
source entity typeLegacyEntityType

TeleportSourceEntityType is the entity type that caused the teleportation, for example an ender pearl. TODO: is this still a integer and not a string?

tickvarint64



20
packet rider jump
Bidirectional

Field NameField TypeNotes
jump strengthzigzag32



21
packet update block
Clientbound

Field NameField TypeNotes
coordinatesBlockCoordinates
block runtime idvarint
block priorityvarint
storagevarint



22
packet add painting
Clientbound

Field NameField TypeNotes
entity id selfzigzag64
runtime entity idvarint
coordinatesBlockCoordinates
directionzigzag32
titlestring



23
packet tick sync
Bidirectional

TickSync is sent by the client and the server to maintain a synchronized, server-authoritative tick between the client and the server. The client sends this packet first, and the server should reply with another one of these packets, including the response time.

Field NameField TypeNotes
request timeli64

ClientRequestTimestamp is the timestamp on which the client sent this packet to the server. The server should fill out that same value when replying. The ClientRequestTimestamp is always 0

response timeli64

ServerReceptionTimestamp is the timestamp on which the server received the packet sent by the client. When the packet is sent by the client, this value is 0. ServerReceptionTimestamp is generally the current tick of the server. It isn't an actual timestamp, as the field implies




24
packet level sound event old
Bidirectional

Field NameField TypeNotes
sound idu8
positionvec3f
block idzigzag32
entity typezigzag32
is baby mobbool
is globalbool



25
packet level event
Clientbound

Field NameField TypeNotes
eventzigzag32 enum
1000sound click
1001sound click fail
1002sound shoot
1003sound door
1004sound fizz
1005sound ignite
1007sound ghast
1008sound ghast shoot
1009sound blaze shoot
1010sound door bump
1012sound door crash
1018sound enderman teleport
1020sound anvil break
1021sound anvil use
1022sound anvil fall
1030sound pop
1032sound portal
1040sound itemframe add item
1041sound itemframe remove
1042sound itemframe place
1043sound itemframe remove item
1044sound itemframe rotate item
1050sound camera
1051sound orb
1052sound totem
1060sound armor stand break
1061sound armor stand hit
1062sound armor stand fall
1063sound armor stand place
2000particle shoot
2001particle destroy
2002particle splash
2003particle eye despawn
2004particle spawn
2006guardian curse
2008particle block force field
2009particle projectile hit
2013particle enderman teleport
2014particle punch block
3001start rain
3002start thunder
3003stop rain
3004stop thunder
3005pause game
3006pause game no screen
3007set game speed
3500redstone trigger
3501cauldron explode
3502cauldron dye armor
3503cauldron clean armor
3504cauldron fill potion
3505cauldron take potion
3506cauldron fill water
3507cauldron take water
3508cauldron add dye
3509cauldron clean banner
3600block start break
3601block stop break
4000set data
9800players sleeping
16384add particle mask
positionvec3f
datazigzag32



26
packet block event
Clientbound

Field NameField TypeNotes
positionBlockCoordinates

Position is the position of the block that an event occurred at.

typezigzag32 enum
0sound

EventType is the type of the block event. The event type decides the way the event data that follows is used

1change state
datazigzag32

EventData holds event type specific data. For chests for example, opening the chest means the data must be 1




27
packet entity event
Bidirectional

Field NameField TypeNotes
runtime entity idvarint
event idu8 enum
1jump
2hurt animation
3death animation
4arm swing
5stop attack
6tame fail
7tame success
8shake wet
9use item
10eat grass animation
11fish hook bubble
12fish hook position
13fish hook hook
14fish hook tease
15squid ink cloud
16zombie villager cure
18respawn
19iron golem offer flower
20iron golem withdraw flower
21love particles
22villager angry
23villager happy
24witch spell particles
25firework particles
26in love particles
27silverfish spawn animation
28guardian attack
29witch drink potion
30witch throw potion
31minecart tnt prime fuse
32creeper prime fuse
33air supply expired
34player add xp levels
35elder guardian curse
36agent arm swing
37ender dragon death
38dust particles
39arrow shake
57eating item
60baby animal feed
61death smoke cloud
62complete trade
63remove leash
65consume totem
66player check treasure hunter achievement
67entity spawn
68dragon puke
69item entity merge
70start swim
71balloon pop
72treasure hunt
73agent summon
74charged crossbow
75fall
datazigzag32



28
packet mob effect
Clientbound

Field NameField TypeNotes
runtime entity idvarint
event idu8
effect idzigzag32
amplifierzigzag32
particlesbool
durationzigzag32



29
packet update attributes
Clientbound

Field NameField TypeNotes
runtime entity idvarint64
attributesPlayerAttributes
tickvarint64



30
packet inventory transaction
Bidirectional

Field NameField TypeNotes
transactionTransaction



31
packet mob equipment
Bidirectional

Field NameField TypeNotes
runtime entity idvarint
itemItem
slotu8
selected slotu8
windows idWindowID



32
packet mob armor equipment
Bidirectional

Field NameField TypeNotes
runtime entity idvarint
helmetItem
chestplateItem
leggingsItem
bootsItem



33
packet interact
Bidirectional

Interact is sent by the client when it interacts with another entity in some way. It used to be used for normal entity and block interaction, but this is no longer the case now.

Field NameField TypeNotes
action idu8 enum
3leave vehicle

Action type is the ID of the action that was executed by the player. It is one of the constants that may be found above.

4mouse over entity
6open inventory
target runtime entity idvarint

TargetEntityRuntimeID is the runtime ID of the entity that the player interacted with. This is empty for the InteractActionOpenInventory action type.

position

if action id
is mouse over entity or leave vehiclevec3f

Position associated with the ActionType above. For the InteractActionMouseOverEntity, this is the position relative to the entity moused over over which the player hovered with its mouse/touch. For the InteractActionLeaveVehicle, this is the position that the player spawns at after leaving the vehicle.




34
packet block pick request
Serverbound

Field NameField TypeNotes
xzigzag32
yzigzag32
zzigzag32
add user databool
selected slotu8



35
packet entity pick request
Serverbound

Field NameField TypeNotes
runtime entity idlu64
selected slotu8



36
packet player action
Serverbound

PlayerAction is sent by the client when it executes any action, for example starting to sprint, swim, starting the breaking of a block, dropping an item, etc.

Field NameField TypeNotes
runtime entity idvarint

EntityRuntimeID is the runtime ID of the player. The runtime ID is unique for each world session, and entities are generally identified in packets using this runtime ID.

actionzigzag32 enum
0start break

ActionType is the ID of the action that was executed by the player. It is one of the constants that may be found above.

1abort break
2stop break
3get updated block
4drop item
5start sleeping
6stop sleeping
7respawn
8jump
9start sprint
10stop sprint
11start sneak
12stop sneak
13creative player destroy block
14dimension change ack

sent when spawning in a different dimension to tell the server we spawned

15start glide
16stop glide
17build denied
18continue break
19change skin
20set enchatnment seed

no longer used

21swimming
22stop swimming
23start spin attack
24stop spin attack
25ineract block
positionBlockCoordinates

BlockPosition is the position of the target block, if the action with the ActionType set concerned a block. If that is not the case, the block position will be zero.

facezigzag32

BlockFace is the face of the target block that was touched. If the action with the ActionType set concerned a block. If not, the face is always 0.




38
packet hurt armor
Clientbound

Field NameField TypeNotes
healthzigzag32



39
packet set entity data
Bidirectional

Field NameField TypeNotes
runtime entity idvarint
metadataMetadataDictionary
tickvarint64



40
packet set entity motion
Bidirectional

Field NameField TypeNotes
runtime entity idvarint
velocityvec3f




SetActorLink is sent by the server to initiate an entity link client-side, meaning one entity will start riding another.

Field NameField TypeNotes
linkLink



42
packet set health
Clientbound

Field NameField TypeNotes
healthzigzag32



43
packet set spawn position
Clientbound

Field NameField TypeNotes
spawn typezigzag32 enum
0player
1world
player positionBlockCoordinates
dimensionzigzag32
world positionBlockCoordinates



44
packet animate
Bidirectional

Field NameField TypeNotes
action idzigzag32 enum
0none
1swing arm
2unknown
3wake up
4critical hit
5magic critical hit
128row right
129row left
runtime entity idvarint64
🔁

if action id
is row right or row left
boat rowing timelf32



45
packet respawn
Bidirectional

Field NameField TypeNotes
xlf32
ylf32
zlf32
stateu8
runtime entity idvarint



46
packet container open
Clientbound

ContainerOpen is sent by the server to open a container client-side. This container must be physically present in the world, for the packet to have any effect. Unlike Java Edition, Bedrock Edition requires that chests for example must be present and in range to open its inventory.

Field NameField TypeNotes
window idWindowID

WindowID is the ID representing the window that is being opened. It may be used later to close the container using a ContainerClose packet.

window typeWindowType

ContainerType is the type ID of the container that is being opened when opening the container at the position of the packet. It depends on the block/entity, and could, for example, be the window type of a chest or a hopper, but also a horse inventory.

coordinatesBlockCoordinates

ContainerPosition is the position of the container opened. The position must point to a block entity that actually has a container. If that is not the case, the window will not be opened and the packet will be ignored, if a valid ContainerEntityUniqueID has not also been provided.

runtime entity idzigzag64

ContainerEntityUniqueID is the unique ID of the entity container that was opened. It is only used if the ContainerType is one that points to an entity, for example a horse.




47
packet container close
Bidirectional

ContainerClose is sent by the server to close a container the player currently has opened, which was opened using the ContainerOpen packet, or by the client to tell the server it closed a particular container, such as the crafting grid.

Field NameField TypeNotes
window idWindowID

WindowID is the ID representing the window of the container that should be closed. It must be equal to the one sent in the ContainerOpen packet to close the designated window.

serverbool

ServerSide determines whether or not the container was force-closed by the server. If this value is not set correctly, the client may ignore the packet and respond with a PacketViolationWarning.




48
packet player hotbar
Bidirectional

PlayerHotBar is sent by the server to the client. It used to be used to link hot bar slots of the player to actual slots in the inventory, but as of 1.2, this was changed and hot bar slots are no longer a free floating part of the inventory. Since 1.2, the packet has been re-purposed, but its new functionality is not clear.

Field NameField TypeNotes
selected slotvarint
window idWindowID
select slotbool



49
packet inventory content
Bidirectional

InventoryContent is sent by the server to update the full content of a particular inventory. It is usually sent for the main inventory of the player, but also works for other inventories that are currently opened by the player.

Field NameField TypeNotes
inventory idWindowIDVarint

WindowID is the ID that identifies one of the windows that the client currently has opened, or one of the consistent windows such as the main inventory.

inputItemStacks

Content is the new content of the inventory. The length of this slice must be equal to the full size of the inventory window updated.




50
packet inventory slot
Bidirectional

InventorySlot is sent by the server to update a single slot in one of the inventory windows that the client currently has opened. Usually this is the main inventory, but it may also be the off hand or, for example, a chest inventory.

Field NameField TypeNotes
window idWindowIDVarint

WindowID is the ID of the window that the packet modifies. It must point to one of the windows that the client currently has opened.

slotvarint

Slot is the index of the slot that the packet modifies. The new item will be set to the slot at this index.

itemItemStack

NewItem is the item to be put in the slot at Slot. It will overwrite any item that may currently be present in that slot.




51
packet container set data
Clientbound

ContainerSetData is sent by the server to update specific data of a single container, meaning a block such as a furnace or a brewing stand. This data is usually used by the client to display certain features client-side.

Field NameField TypeNotes
window idWindowID

WindowID is the ID of the window that should have its data set. The player must have a window open with the window ID passed, or nothing will happen.

propertyzigzag32

Key is the key of the property. It is one of the constants that can be found above. Multiple properties share the same key, but the functionality depends on the type of the container that the data is set to.

valuezigzag32

Value is the value of the property. Its use differs per property.




52
packet crafting data
Clientbound

Field NameField TypeNotes
recipesRecipes
potion type recipesPotionTypeRecipes
potion container recipesPotionContainerChangeRecipes
is cleanbool



53
packet crafting event
Bidirectional

CraftingEvent is sent by the client when it crafts a particular item. Note that this packet may be fully ignored, as the InventoryTransaction packet provides all the information required.

Field NameField TypeNotes
window idWindowID

WindowID is the ID representing the window that the player crafted in.

recipe typezigzag32 enum
0inventory

CraftingType is a type that indicates the way the crafting was done, for example if a crafting table was used.

1crafting
2workbench
recipe iduuid

RecipeUUID is the UUID of the recipe that was crafted. It points to the UUID of the recipe that was sent earlier in the CraftingData packet.

input lengthvarint

Input is a list of items that the player put into the recipe so that it could create the Output items. These items are consumed in the process.

input
array
Item
result lengthvarint

Output is a list of items that were obtained as a result of crafting the recipe.

result
array
Item



54
packet gui data pick item
Clientbound

Field NameField TypeNotes



55
packet adventure settings
Bidirectional

AdventureSettings is sent by the server to update game-play related features, in particular permissions to access these features for the client. It includes allowing the player to fly, build and mine, and attack entities. Most of these flags should be checked server-side instead of using this packet only. The client may also send this packet to the server when it updates one of these settings through the in-game settings interface. The server should verify if the player actually has permission to update those settings.

Field NameField TypeNotes
flagsAdventureFlags

Flags is a set of flags that specify certain properties of the player, such as whether or not it can fly and/or move through blocks. It is one of the AdventureFlag constants above.

command permissionvarint enum
0normal

CommandPermissionLevel is a permission level that specifies the kind of commands that the player is allowed to use.

1operator
2host
3automation
4admin
action permissionsActionPermissions

ActionPermissions is, much like Flags, a set of flags that specify actions that the player is allowed to undertake, such as whether it is allowed to edit blocks, open doors etc. It is a combination of the ActionPermission constants above.

permission levelvarint enum
0visitor

PermissionLevel is the permission level of the player as it shows up in the player list built up using the PlayerList packet. It is one of the PermissionLevel constants above.

1member
2operator
3custom
custom stored permissionsvarint

Custom permissions

user idli64

PlayerUniqueID is a unique identifier of the player. It appears it is not required to fill this field out with a correct value. Simply writing 0 seems to work.




56
packet block entity data
Bidirectional

Field NameField TypeNotes
positionBlockCoordinates
nbtnbt



57
packet player input
Serverbound

Field NameField TypeNotes
motion xlf32
motion zlf32
jumpingbool
sneakingbool



58
packet level chunk
Clientbound

LevelChunk is sent by the server to provide the client with a chunk of a world data (16xYx16 blocks). Typically a certain amount of chunks is sent to the client before sending it the spawn PlayStatus packet, so that the client spawns in a loaded world.

Field NameField TypeNotes
xzigzag32

ChunkX is the X coordinate of the chunk sent. (To translate a block's X to a chunk's X: x >> 4)

zzigzag32

ChunkZ is the Z coordinate of the chunk sent. (To translate a block's Z to a chunk's Z: z >> 4)

sub chunk countvarint

SubChunkCount is the amount of sub chunks that are part of the chunk sent. Depending on if the cache is enabled, a list of blob hashes will be sent, or, if disabled, the sub chunk data.

cache enabledbool

CacheEnabled specifies if the client blob cache should be enabled. This system is based on hashes of blobs which are consistent and saved by the client in combination with that blob, so that the server does not have to send the same chunk multiple times. If the client does not yet have a blob with the hash sent, it will send a ClientCacheBlobStatus packet containing the hashes is does not have the data of.

blobs

if cache enabled
is true
hashes lengthvarint

BlobHashes is a list of all blob hashes used in the chunk. It is composed of SubChunkCount + 1 hashes, with the first SubChunkCount hashes being those of the sub chunks and the last one that of the biome of the chunk. If CacheEnabled is set to false, BlobHashes can be left empty.

hashes
array
lu64
payloadByteArray

RawPayload is a serialised string of chunk data. The data held depends on if CacheEnabled is set to true. If set to false, the payload is composed of multiple sub-chunks, each of which carry a version which indicates the way they are serialised, followed by biomes, border blocks and tile entities. If CacheEnabled is true, the payload consists out of the border blocks and tile entities only.




59
packet set commands enabled
Clientbound

Field NameField TypeNotes
enabledbool



60
packet set difficulty
Clientbound

Field NameField TypeNotes
difficultyvarint



61
packet change dimension
Clientbound

Field NameField TypeNotes
dimensionzigzag32
positionvec3f
respawnbool



62
packet set player game type
Bidirectional

SetPlayerGameType is sent by the server to update the game type (game mode) of the player

Field NameField TypeNotes
gamemodeGameMode

The new gamemode for the player. Some of these game types require additional flags to be set in an AdventureSettings packet for the game mode to obtain its full functionality.




63
packet player list
Clientbound

Field NameField TypeNotes
recordsPlayerRecords



64
packet simple event
Clientbound

Field NameField TypeNotes
event typelu16



65
packet event
Clientbound

Event is sent by the server to send an event with additional data. It is typically sent to the client for telemetry reasons, much like the SimpleEvent packet.

Field NameField TypeNotes
runtime idvarint64
event typezigzag32 enum
0achievement awarded
1entity interact
2portal built
3portal used
4mob killed
5cauldron used
6player death
7boss killed
8agent command
9agent created
10banner pattern removed
11commaned executed
12fish bucketed
13mob born
14pet died
15cauldron block used
16composter block used
17bell block used
use player idu8
event datarestBuffer



66
packet spawn experience orb
Clientbound

Field NameField TypeNotes
positionvec3f
countzigzag32



67
packet clientbound map item data
Clientbound

Field NameField TypeNotes
mapinfoMapInfo



68
packet map info request
Bidirectional

Field NameField TypeNotes
map idzigzag64



69
packet request chunk radius
Bidirectional

Field NameField TypeNotes
chunk radiuszigzag32



70
packet chunk radius update
Clientbound

Field NameField TypeNotes
chunk radiuszigzag32



71
packet item frame drop item
Bidirectional

Field NameField TypeNotes
coordinatesBlockCoordinates



72
packet game rules changed
Clientbound

Field NameField TypeNotes
rulesGameRules



73
packet camera
Clientbound

Camera is sent by the server to use an Education Edition camera on a player. It produces an image client-side.

Field NameField TypeNotes
camera entity unique idzigzag64

CameraEntityUniqueID is the unique ID of the camera entity from which the picture was taken.

target player unique idzigzag64

TargetPlayerUniqueID is the unique ID of the target player. The unique ID is a value that remains consistent across different sessions of the same world, but most servers simply fill the runtime ID of the player out for this field.




74
packet boss event
Bidirectional

Field NameField TypeNotes
boss entity idzigzag64
typevarint enum
0show bar

S2C: Shows the boss-bar to the player.

1register player

C2S: Registers a player to a boss fight.

2hide bar

S2C: Removes the boss-bar from the client.

3unregister player

C2S: Unregisters a player from a boss fight.

4set bar progress

S2C: Sets the bar percentage.

5set bar title

S2C: Sets title of the bar.

6update properties

S2C: darkens the sky

7texture

S2C: Not implemented :( Intended to alter bar appearance, but these currently produce no effect on client-side whatsoever.

🔁

if type
is register player or unregister player
player idzigzag64
is show
titlestring
bar progresslf32
is update properties
darkness factorli16
is texture
colorvarint
overlayvarint
is set bar progress
bar progresslf32
is set bar title
titlestring



75
packet show credits
Clientbound

Field NameField TypeNotes
runtime entity idvarint
statuszigzag32



76
packet available commands
Clientbound

This packet sends a list of commands to the client. Commands can have arguments, and some of those arguments can have 'enum' values, which are a list of possible values for the argument. The serialization is rather complex and involves palettes like chunks.

Field NameField TypeNotes
values lenvarint

The length of the enums for all the command parameters in this packet

_enum_type["enum_size_based_on_values_len"]

Not read from stream: instead calculated from the values_len field If the valueslen < 0xff => byte If the valueslen < 0xffff => short If the values_len < 0xffffff => int

Length for enum values below is values len from above

Here all the enum values for all of the possible commands are stored to one array palette

enum values
array
string
suffixes lengthvarint

Integer parameters may sometimes have a prefix, such as the XP command: /xp [player: target] <- here, the xp command gives experience points /xp L [player: target] <- here, the xp command gives experience levels This is the palette of suffixes

suffixes
array
string
enums lengthvarint

The list of enum objects

enums
array
namestring

The name of the enum

values lengthvarint

The values in the enum

values
array
🔁

if ../ enum type
is byteu8

The indexes to value in the palette

is shortlu16
is intlu32
command data lengthvarint
command data
array
namestring
descriptionstring
flagsu8
permission levelu8
aliasli32
overloads lengthvarint

The list of overload parameters for this command

overloads
array
__2287 lengthvarint

Each of the parameters gets an array of posible overloads

__2287
array
parameter namestring

The name of the parameter shown to the user (the amount in /xp <amount: int>)

value typelu16 enum
1int
2float
3value
4wildcard int
5operator
6target
14file path
29string
37position
41message
43raw text
46json
53command
enum typelu16 enum
16valid

In MC, this + prior field are combined to one 32bit bitfield

32enum
256suffixed
1024soft enum
optionalbool

Is this parameter required?

optionsCommandFlags

Additinal options for this command (thanks macroshaft…)

dynamic enums lengthvarint

There are two types of enums: static enums which cannot be changed after sending AvaliableCommands, (unless you resend the whole packet) and 'soft' or 'dynamic' enums like below which is an array that can be updated with the UpdateSoftEnum packet

dynamic enums
array
namestring
values lengthvarint
values
array
string
enum constraints lengthvarint
enum constraints
array
value indexli32
enum indexli32
constraints lengthvarint
constraints
array
constraintu8 enum
0cheats enabled



77
packet command request
Serverbound

ParamOptionCollapseEnum specifies if the enum (only if the Type is actually an enum type. If not, setting this to true has no effect) should be collapsed. This means that the options of the enum are never shown in the actual usage of the command, but only as auto-completion, like it automatically does with enums that have a big amount of options. To illustrate, it can make <$Name: bool>. enumsizebasedonvalues_len: native CommandRequest is sent by the client to request the execution of a server-side command. Although some servers support sending commands using the Text packet, this packet is guaranteed to have the correct result.

Field NameField TypeNotes
commandstring

CommandLine is the raw entered command line. The client does no parsing of the command line by itself (unlike it did in the early stages), but lets the server do that.

originCommandOrigin

Origin holds information about the command sender that will be returnd back in the command response

internalbool

Internal specifies if the command request internal. Setting it to false seems to work and the usage of this field is not known.




78
packet command block update
Serverbound

CommandBlockUpdate is sent by the client to update a command block at a specific position. The command block may be either a physical block or an entity.

Field NameField TypeNotes
is blockbool

Block specifies if the command block updated was an actual physical block. If false, the command block is in a minecart and has an entity runtime ID instead.

🔁

if is block
is true
positionBlockCoordinates

Position is the position of the command block updated. It is only set if Block is set to true. Nothing happens if no command block is set at this position. Position is the position of the command block updated. It is only set if Block is set to true. Nothing happens if no command block is set at this position.

modevarint enum
0impulse

Mode is the mode of the command block. It is either CommandBlockImpulse, CommandBlockChain or CommandBlockRepeat. It is only set if Block is set to true.

1repeat
2chain
needs redstonebool

NeedsRedstone specifies if the command block needs to be powered by redstone to be activated. If false, the command block is always active. The field is only set if Block is set to true.

conditionalbool

Conditional specifies the behaviour of the command block if the command block before it (the opposite side of the direction the arrow if facing) fails to execute. If set to false, it will activate at all times, whereas if set to true, it will activate only if the previous command block executed successfully. The field is only set if Block is set to true.

is false
minecart entity runtime idvarint64
commandstring

Command is the command currently entered in the command block. This is the command that is executed when the command block is activated.

last outputstring

LastOutput is the output of the last command executed by the command block. It may be left empty to show simply no output at all, in combination with setting ShouldTrackOutput to false.

namestring

Name is the name of the command block updated. If not empty, it will show this name hovering above the command block when hovering over the block with the cursor.

should track outputbool

ShouldTrackOutput specifies if the command block tracks output. If set to false, the output box won't be shown within the command block.

tick delayli32

TickDelay is the delay in ticks between executions of a command block, if it is a repeating command block.

execute on first tickbool

ExecuteOnFirstTick specifies if the command block should execute on the first tick, AKA as soon as the command block is enabled.




79
packet command output
Clientbound

Field NameField TypeNotes
originCommandOrigin

CommandOrigin is the data specifying the origin of the command. In other words, the source that the command request was from, such as the player itself or a websocket server. The client forwards the messages in this packet to the right origin, depending on what is sent here.

output typei8

OutputType specifies the type of output that is sent. The OutputType sent by vanilla games appears to be 3, which seems to work.

success countvarint

SuccessCount is the amount of times that a command was executed successfully as a result of the command that was requested. For servers, this is usually a rather meaningless fields, but for vanilla, this is applicable for commands created with Functions.

output lengthvarint

OutputMessages is a list of all output messages that should be sent to the player. Whether they are shown or not, depends on the type of the messages.

output
array
successbool

Success indicates if the output message was one of a successful command execution. If set to true, the output message is by default coloured white, whereas if set to false, the message is by default coloured red.

message idstring

Message is the message that is sent to the client in the chat window. It may either be simply a message or a translated built-in string like 'commands.tp.success.coordinates', combined with specific parameters below.

parameters lengthvarint

Parameters is a list of parameters that serve to supply the message sent with additional information, such as the position that a player was teleported to or the effect that was applied to an entity. These parameters only apply for the Minecraft built-in command output.

parameters
array
string



80
packet update trade
Clientbound

UpdateTrade is sent by the server to update the trades offered by a villager to a player. It is sent at the moment that a player interacts with a villager.

Field NameField TypeNotes
window idWindowID

WindowID is the ID that identifies the trading window that the client currently has opened.

window typeWindowType

WindowType is an identifier specifying the type of the window opened. In vanilla, it appears this is always filled out with 15.

sizevarint

Size is the amount of trading options that the villager has.

trade tiervarint

TradeTier is the tier of the villager that the player is trading with. The tier starts at 0 with a first two offers being available, after which two additional offers are unlocked each time the tier becomes one higher.

villager unique idvarint64

VillagerUniqueID is the unique ID of the villager entity that the player is trading with. The TradeTier sent above applies to this villager.

entity unique idvarint64

EntityUniqueID is the unique ID of the entity (usually a player) for which the trades are updated. The updated trades may apply only to this entity.

display namestring

DisplayName is the name displayed at the top of the trading UI. It is usually used to represent the profession of the villager in the UI.

new trading uibool

NewTradeUI specifies if the villager should be using the new trade UI (The one added in 1.11.) rather than the old one. This should usually be set to true.

economic tradesbool

Trading based on Minecraft economy - specifies if the prices of the villager's offers are modified by an increase in demand for the item. (A mechanic added in 1.11.) Buying more of the same item will increase the price of that particular item. https://minecraft.gamepedia.com/Trading#Economics

offersnbt

NBT serialised compound of offers that the villager has.




81
packet update equipment
Clientbound

UpdateEquip is sent by the server to the client upon opening a horse inventory. It is used to set the content of the inventory and specify additional properties, such as the items that are allowed to be put in slots of the inventory.

Field NameField TypeNotes
window idWindowID

WindowID is the identifier associated with the window that the UpdateEquip packet concerns. It is the ID sent for the horse inventory that was opened before this packet was sent.

window typeWindowType

WindowType is the type of the window that was opened. Generally, this is the type of a horse inventory, as the packet is specifically made for that.

sizeu8

Size is the size of the horse inventory that should be opened. A bigger size does, in fact, change the amount of slots displayed.

entity idzigzag64

EntityUniqueID is the unique ID of the entity whose equipment was 'updated' to the player. It is typically the horse entity that had its inventory opened.

inventorynbt

inventory is a network NBT serialised compound holding the content of the inventory of the entity (the equipment) and additional data such as the allowed items for a particular slot, used to make sure only saddles can be put in the saddle slot etc.




82
packet resource pack data info
Clientbound

Field NameField TypeNotes
package idstring
max chunk sizelu32
chunk countlu32
compressed package sizelu64
hashByteArray
is premiumbool
pack typeu8



83
packet resource pack chunk data
Clientbound

Field NameField TypeNotes
package idstring
chunk indexlu32
progresslu64
payloadByteArray



84
packet resource pack chunk request
Serverbound

Field NameField TypeNotes
package idstring
chunk indexlu32



85
packet transfer
Clientbound

Field NameField TypeNotes
server addressstring
portlu16



86
packet play sound
Clientbound

Field NameField TypeNotes
namestring
coordinatesBlockCoordinates
volumelf32
pitchlf32



87
packet stop sound
Clientbound

Field NameField TypeNotes
namestring
stop allbool



88
packet set title
Clientbound

Field NameField TypeNotes
typezigzag32
textstring
fade in timezigzag32
stay timezigzag32
fade out timezigzag32



89
packet add behavior tree
Clientbound

Field NameField TypeNotes
behaviortreestring



90
packet structure block update
Clientbound

Field NameField TypeNotes



91
packet show store offer
Clientbound

Field NameField TypeNotes
unknown0string
unknown1bool



92
packet purchase receipt
Serverbound

Field NameField TypeNotes



93
packet player skin
Bidirectional

Field NameField TypeNotes
uuiduuid
skinSkin
skin namestring
old skin namestring
is verifiedbool



94
packet sub client login
Clientbound

Field NameField TypeNotes



95
packet initiate web socket connection
Clientbound

Field NameField TypeNotes
serverstring



96
packet set last hurt by
Clientbound

Field NameField TypeNotes
unknownvarint



97
packet book edit
Clientbound

Field NameField TypeNotes
typeu8 enum
0replace page
1add page
2delete page
3swap pages
4sign
slotu8
🔁

if type
is replace page or add page
page numberu8
textstring
photo namestring
is delete page
page numberu8
is swap pages
page1u8
page2u8
is sign
titlestring
authorstring
xuidstring



98
packet npc request
Bidirectional

Field NameField TypeNotes
runtime entity idvarint
unknown0u8
unknown1string
unknown2u8



99
packet photo transfer
Serverbound

Field NameField TypeNotes
file namestring
image datastring
unknown2string



100
packet modal form request
Clientbound

Field NameField TypeNotes
form idvarint
datastring



101
packet modal form response
Serverbound

Field NameField TypeNotes
form idvarint
datastring



102
packet server settings request
Serverbound

Field NameField TypeNotes



103
packet server settings response
Clientbound

Field NameField TypeNotes
form idvarint
datastring



104
packet show profile
Clientbound

Field NameField TypeNotes
xuidstring



105
packet set default game type
Clientbound

SetDefaultGameType is sent by the client when it toggles the default game type in the settings UI, and is sent by the server when it actually changes the default game type, resulting in the toggle being changed in the settings UI.

Field NameField TypeNotes
gamemodeGameMode

GameType is the new game type that is set. When sent by the client, this is the requested new default game type.




106
packet remove objective
Clientbound

Field NameField TypeNotes
objective namestring



107
packet set display objective
Clientbound

Field NameField TypeNotes
display slotstring
objective namestring
display namestring
criteria namestring
sort orderzigzag32



108
packet set score
Clientbound

Field NameField TypeNotes
entriesScoreEntries



109
packet lab table
Bidirectional

LabTable is sent by the client to let the server know it started a chemical reaction in Education Edition, and is sent by the server to other clients to show the effects. The packet is only functional if Education features are enabled.

Field NameField TypeNotes
action typeu8 enum
0combine

ActionType is the type of the action that was executed. It is one of the constants above. Typically, only LabTableActionCombine is sent by the client, whereas LabTableActionReact is sent by the server.

1react
positionvec3i

Position is the position at which the lab table used was located.

reaction typeu8

ReactionType is the type of the reaction that took place as a result of the items put into the lab table. The reaction type can be either that of an item or a particle, depending on whatever the result was of the reaction.




110
packet update block synced
Clientbound

Field NameField TypeNotes
coordinatesBlockCoordinates
block runtime idvarint
block priorityvarint
data layer idvarint
unknown0varint
unknown1varint



111
packet move entity delta
Clientbound

MoveActorDelta is sent by the server to move an entity. The packet is specifically optimised to save as much space as possible, by only writing non-zero fields. As of 1.16.100, this packet no longer actually contains any deltas.

Field NameField TypeNotes
runtime entity idvarint64

EntityRuntimeID is the runtime ID of the entity that is being moved. The packet works provided a non-player entity with this runtime ID is present.

flagsDeltaMoveFlags

Flags is a list of flags that specify what data is in the packet.

x

if flags.has x
is truelf32
y

if flags.has y
is truelf32
z

if flags.has z
is truelf32
rot x

if flags.has rot x
is trueu8
rot y

if flags.has rot y
is trueu8
rot z

if flags.has rot z
is trueu8



112
packet set scoreboard identity
Clientbound

Field NameField TypeNotes
entriesScoreboardIdentityEntries



113
packet set local player as initialized
Serverbound

SetLocalPlayerAsInitialised is sent by the client in response to a PlayStatus packet with the status set to spawn. The packet marks the moment at which the client is fully initialised and can receive any packet without discarding it.

Field NameField TypeNotes
runtime entity idvarint64

EntityRuntimeID is the entity runtime ID the player was assigned earlier in the login sequence in the StartGame packet.




114
packet update soft enum
Clientbound

Field NameField TypeNotes



115
packet network stack latency
Bidirectional

Field NameField TypeNotes
timestamplu64
unknown flagu8



117
packet script custom event
Bidirectional

Field NameField TypeNotes
event namestring
event datastring



118
packet spawn particle effect
Clientbound

Field NameField TypeNotes
dimension idu8
entity idzigzag64
positionvec3f
particle namestring



119
packet available entity identifiers
Clientbound

Field NameField TypeNotes
nbtnbt



120
packet level sound event v2
Bidirectional

Field NameField TypeNotes
sound idu8
positionvec3f
block idzigzag32
entity typestring
is baby mobbool
is globalbool



121
packet network chunk publisher update
Clientbound

Field NameField TypeNotes
coordinatesBlockCoordinates
radiusvarint



122
packet biome definition list
Clientbound

Field NameField TypeNotes
nbtnbt



123
packet level sound event
Bidirectional

Field NameField TypeNotes
sound idvarint
positionvec3f
block idzigzag32
entity typestring
is baby mobbool
is globalbool



124
packet level event generic
Clientbound

LevelEventGeneric is sent by the server to send a 'generic' level event to the client. This packet sends an NBT serialised object and may for that reason be used for any event holding additional data.

Field NameField TypeNotes
event idvarint

EventID is a unique identifier that identifies the event called. The data that follows has fields in the NBT depending on what event it is.

nbtnbtLoop

SerialisedEventData is a network little endian serialised object of event data, with fields that vary depending on EventID. Unlike many other NBT structures, this data is not actually in a compound but just loosely floating NBT tags. To decode using the nbt package, you would need to append 0x0a00 at the start (compound id and name length) and add 0x00 at the end, to manually wrap it in a compound. Likewise, you would have to remove these bytes when encoding.




125
packet lectern update
Clientbound

LecternUpdate is sent by the client to update the server on which page was opened in a book on a lectern, or if the book should be removed from it.

Field NameField TypeNotes
pageu8

Page is the page number in the book that was opened by the player on the lectern.

page countu8

PageCount is the number of pages that the book opened in the lectern has.

positionvec3i

Position is the position of the lectern that was updated. If no lectern is at the block position, the packet should be ignored.

drop bookbool

DropBook specifies if the book currently set on display in the lectern should be dropped server-side.




126
packet video stream connect
Clientbound

Field NameField TypeNotes
server uristring
frame send frequencylf32
actionu8
resolution xli32
resolution yli32



127
packet add ecs entity
Clientbound

This is NOT a Minecraft entity, but an entity in the Entity Component System (ECS) for the game engine Minecrat Bedrock uses. Internally, all 'Minecraft entities' are known as Actors including in packet names and fields. However, these are irrelevant internal details so we don't do the renames in these protocol definitions, for simplicity we just use Entity. AddEntity is sent by the server to the client. Its function is not entirely clear: It does not add an entity in the sense of an in-game entity, but has to do with the ECS that Minecraft uses.

Field NameField TypeNotes
network idvarint64

EntityNetworkID is the network ID of the entity that should be added.




128
packet remove ecs entity
Clientbound

RemoveEntity is sent by the server to the client. Its function is not entirely clear: It does not remove an entity in the sense of an in-game entity, but has to do with the ECS that Minecraft uses

Field NameField TypeNotes
network idvarint64

EntityNetworkID is the network ID of the entity that should be removed.




129
packet client cache status
Bidirectional

Field NameField TypeNotes
enabledbool



130
packet on screen texture animation
Clientbound

Field NameField TypeNotes



131
packet map create locked copy
Clientbound

Field NameField TypeNotes



132
packet structure template data export request
Clientbound

Field NameField TypeNotes



133
packet structure template data export response
Clientbound

Field NameField TypeNotes



134
packet update block properties
Clientbound

Field NameField TypeNotes
nbtnbt



135
packet client cache blob status
Clientbound

ClientCacheBlobStatus is part of the blob cache protocol. It is sent by the client to let the server know what blobs it needs and which blobs it already has, in an ACK type system.

Field NameField TypeNotes
missesvarint

The number of MISSes in this packet

havesvarint

The number of HITs in this packet

Length for missing below is misses from above

A list of blob hashes that the client does not have a blob available for. The server should send the blobs matching these hashes as soon as possible.

missing
array
lu64
Length for have below is haves from above

A list of hashes that the client does have a cached blob for. Server doesn't need to send.

have
array
lu64



136
packet client cache miss response
Clientbound

ClientCacheMissResponse is part of the blob cache protocol. It is sent by the server in response to a ClientCacheBlobStatus packet and contains the blob data of all blobs that the client acknowledged not to have yet.

Field NameField TypeNotes
blobs lengthvarint
blobs
array
Blob



137
packet education settings
Clientbound

EducationSettings is a packet sent by the server to update Minecraft: Education Edition related settings. It is unused by the normal base game.

Field NameField TypeNotes
CodeBuilderDefaultURIstring

CodeBuilderDefaultURI is the default URI that the code builder is ran on. Using this, a Code Builder program can make code directly affect the server.

CodeBuilderTitlestring

CodeBuilderTitle is the title of the code builder shown when connected to the CodeBuilderDefaultURI.

CanResizeCodeBuilderbool

CanResizeCodeBuilder specifies if clients connected to the world should be able to resize the code builder when it is opened.

HasOverrideURIbool
OverrideURI

if HasOverrideURI
is truestring
HasQuizbool

HasQuiz specifies if the world has a quiz connected to it.




138
packet emote
Bidirectional

Emote is sent by both the server and the client. When the client sends an emote, it sends this packet to the server, after which the server will broadcast the packet to other players online.

Field NameField TypeNotes
entity idvarint64

EntityRuntimeID is the entity that sent the emote. When a player sends this packet, it has this field set as its own entity runtime ID.

emote idstring

EmoteID is the ID of the emote to send.

flagsu8

Flags is a combination of flags that change the way the Emote packet operates. When the server sends this packet to other players, EmoteFlagServerSide must be present.




139
packet multiplayer settings
Serverbound

MultiPlayerSettings is sent by the client to update multi-player related settings server-side and sent back to online players by the server. The MultiPlayerSettings packet is a Minecraft: Education Edition packet. It has no functionality for the base game.

Field NameField TypeNotes
action typezigzag32 enum
0enable multiplayer

ActionType is the action that should be done when this packet is sent. It is one of the constants that may be found above.

1disable multiplayer
2refresh join code



140
packet settings command
Serverbound

SettingsCommand is sent by the client when it changes a setting in the settings that results in the issuing of a command to the server, such as when Show Coordinates is enabled.

Field NameField TypeNotes
command linestring

CommandLine is the full command line that was sent to the server as a result of the setting that the client changed.

suppress outputbool

SuppressOutput specifies if the client requests the suppressing of the output of the command that was executed. Generally this is set to true, as the client won't need a message to confirm the output of the change.




141
packet anvil damage
Serverbound

AnvilDamage is sent by the client to request the dealing damage to an anvil. This packet is completely pointless and the server should never listen to it.

Field NameField TypeNotes
damageu8

Damage is the damage that the client requests to be dealt to the anvil.

positionBlockCoordinates

AnvilPosition is the position in the world that the anvil can be found at.




142
packet completed using item
Clientbound

CompletedUsingItem is sent by the server to tell the client that it should be done using the item it is currently using.

Field NameField TypeNotes
used item idli16

UsedItemID is the item ID of the item that the client completed using. This should typically be the ID of the item held in the hand.

use methodli32 enum
0equip armor

UseMethod is the method of the using of the item that was completed. It is one of the constants that may be found above.

1eat
2attack
3consume
4throw
5shoot
6place
7fill bottle
8fill bucket
9pour bucket
10use tool
11interact
12retrieved
13dyed
14traded



143
packet network settings
Bidirectional

NetworkSettings is sent by the server to update a variety of network settings. These settings modify the way packets are sent over the network stack.

Field NameField TypeNotes
compression thresholdu16

CompressionThreshold is the minimum size of a packet that is compressed when sent. If the size of a packet is under this value, it is not compressed. When set to 0, all packets will be left uncompressed.




144
packet player auth input
Serverbound

PlayerAuthInput is sent by the client to allow for server authoritative movement. It is used to synchronise the player input with the position server-side. The client sends this packet when the ServerAuthoritativeMovementMode field in the StartGame packet is set to true, instead of the MovePlayer packet. The client will send this packet once every tick.

Field NameField TypeNotes
pitchlf32

Pitch that the player reports it has.

yawlf32

Yaw that player reports it has.

positionvec3f

Position holds the position that the player reports it has.

move vectorvec2f

MoveVector is a Vec2 that specifies the direction in which the player moved, as a combination of X/Z values which are created using the WASD/controller stick state.

head yawlf32

HeadYaw is the horizontal rotation of the head that the player reports it has.

input dataInputFlag

InputData is a combination of bit flags that together specify the way the player moved last tick. It is a combination of the flags above.

input modevarint enum
0mouse

InputMode specifies the way that the client inputs data to the screen. It is one of the constants that may be found above.

1touch
2game pad
3motion controller
play modevarint enum
0normal

PlayMode specifies the way that the player is playing. The values it holds, which are rather random, may be found above.

1teaser
2screen
3viewer
4reality
5placement
6living room
7exit level
8exit level living room
9num modes
gaze direction

if play mode
is realityvec3f

GazeDirection is the direction in which the player is gazing, when the PlayMode is PlayModeReality: In other words, when the player is playing in virtual reality.

tickvarint64

Tick is the server tick at which the packet was sent. It is used in relation to CorrectPlayerMovePrediction.

deltavec3f

Delta was the delta between the old and the new position. There isn't any practical use for this field as it can be calculated by the server itself.




145
packet creative content
Clientbound

Field NameField TypeNotes
itemsItemStacks



146
packet player enchant options
Clientbound

Field NameField TypeNotes
enchant optionsEnchantOptions



147
packet item stack request
Serverbound

Field NameField TypeNotes
requestsItemStackRequests



148
packet item stack response
Clientbound

Field NameField TypeNotes
responsesItemStackResponses



149
packet player armor damage
Clientbound

PlayerArmourDamage is sent by the server to damage the armour of a player. It is a very efficient packet, but generally it's much easier to just send a slot update for the damaged armour.

Field NameField TypeNotes
typeArmorDamageType

Bitset holds a bitset of 4 bits that indicate which pieces of armour need to have damage dealt to them. The first bit, when toggled, is for a helmet, the second for the chestplate, the third for the leggings and the fourth for boots.

helmet damage

if type.head
is truezigzag32
chestplate damage

if type.chest
is truezigzag32
leggings damage

if type.legs
is truezigzag32
boots damage

if types.feet
is truezigzag32



151
packet update player game type
Serverbound

UpdatePlayerGameType is sent by the server to change the game mode of a player. It is functionally identical to the SetPlayerGameType packet.

Field NameField TypeNotes
gamemodeGameMode

GameType is the new game type of the player. It is one of the constants that can be found in setplayergame_type.go. Some of these game types require additional flags to be set in an AdventureSettings packet for the game mode to obtain its full functionality.

player unique idzigzag64

PlayerUniqueID is the entity unique ID of the player that should have its game mode updated. If this packet is sent to other clients with the player unique ID of another player, nothing happens.




152
packet emote list
Serverbound

EmoteList is sent by the client every time it joins the server and when it equips new emotes. It may be used by the server to find out which emotes the client has available. If the player has no emotes equipped, this packet is not sent. Under certain circumstances, this packet is also sent from the server to the client, but I was unable to find when this is done.

Field NameField TypeNotes
player idvarint64

PlayerRuntimeID is the runtime ID of the player that owns the emote pieces below. If sent by the client, this player runtime ID is always that of the player itself.

emote pieces lengthvarint

EmotePieces is a list of emote pieces that the player with the runtime ID above has.

emote pieces
array
uuid



154
packet position tracking db request
Serverbound

PositionTrackingDBClientRequest is a packet sent by the client to request the position and dimension of a 'tracking ID'. These IDs are tracked in a database by the server. In 1.16, this is used for lodestones. The client will send this request to find the position a lodestone compass needs to point to. If found, it will point to the lodestone. If not, it will start spinning around. A PositionTrackingDBServerBroadcast packet should be sent in response to this packet.

Field NameField TypeNotes
actionu8 enum
0query

RequestAction is the action that should be performed upon the receiving of the packet. It is one of the constants found above.

tracking idzigzag32

TrackingID is a unique ID used to identify the request. The server responds with a PositionTrackingDBServerBroadcast packet holding the same ID, so that the client can find out what that packet was in response to.




153
packet position tracking db broadcast
Clientbound

PositionTrackingDBServerBroadcast is sent by the server in response to the PositionTrackingDBClientRequest packet. This packet is, as of 1.16, currently only used for lodestones. The server maintains a database with tracking IDs and their position and dimension. The client will request these tracking IDs, (NBT tag set on the lodestone compass with the tracking ID?) and the server will respond with the status of those tracking IDs. What is actually done with the data sent depends on what the client chooses to do with it. For the lodestone compass, it is used to make the compass point towards lodestones and to make it spin if the lodestone at a position is no longer there.

Field NameField TypeNotes
broadcast actionu8 enum
0update

BroadcastAction specifies the status of the position tracking DB response. It is one of the constants above, specifying the result of the request with the ID below. The Update action is sent for setting the position of a lodestone compass, the Destroy and NotFound to indicate that there is not (no longer) a lodestone at that position.

1destory
2not found
tracking idzigzag32

TrackingID is the ID of the PositionTrackingDBClientRequest packet that this packet was in response to. The tracking ID is also present as the 'id' field in the SerialisedData field.

nbtnbt



156
packet packet violation warning
Serverbound

PacketViolationWarning is sent by the client when it receives an invalid packet from the server. It holds some information on the error that occurred.

Field NameField TypeNotes
violation typezigzag32 enum
0malformed
severityzigzag32 enum
0warning

Severity specifies the severity of the packet violation. The action the client takes after this violation depends on the severity sent.

1final warning
2terminating
packet idzigzag32

PacketID is the ID of the invalid packet that was received.

reasonstring

ViolationContext holds a description on the violation of the packet.




157
packet motion prediction hints
Clientbound

MotionPredictionHints is sent by the server to the client. There is a predictive movement component for entities. This packet fills the "history" of that component and entity movement is computed based on the points. Vanilla sends this packet instead of the SetActorMotion packet when 'spatial optimisations' are enabled.

Field NameField TypeNotes
entity runtime idvarint64

EntityRuntimeID is the runtime ID of the entity whose velocity is sent to the client.

velocityvec3f

Velocity is the server-calculated velocity of the entity at the point of sending the packet.

on groundbool

OnGround specifies if the server currently thinks the entity is on the ground.




158
packet animate entity
Clientbound

AnimateEntity is sent by the server to animate an entity client-side. It may be used to play a single animation, or to activate a controller which can start a sequence of animations based on different conditions specified in an animation controller. Much of the documentation of this packet can be found at https://minecraft.gamepedia.com/BedrockEditionbetaanimationdocumentation.

Field NameField TypeNotes
animationstring

Animation is the name of a single animation to start playing.

next statestring

NextState is the first state to start with. These states are declared in animation controllers (which, in themselves, are animations too). These states in turn may have animations and transitions to move to a next state.

stop conditionstring

StopCondition is a MoLang expression that specifies when the animation should be stopped.

controllerstring

Controller is the animation controller that is used to manage animations. These controllers decide when to play which animation.

blend out timelf32

BlendOutTime does not currently seem to be used.

runtime entity ids lengthvarint

EntityRuntimeIDs is list of runtime IDs of entities that the animation should be applied to.

runtime entity ids
array
varint64



159
packet camera shake
Clientbound

CameraShake is sent by the server to make the camera shake client-side. This feature was added for map- making partners.

Field NameField TypeNotes
intensitylf32

Intensity is the intensity of the shaking. The client limits this value to 4, so anything higher may not work.

durationlf32

Duration is the number of seconds the camera will shake for.

typeu8

Type is the type of shake, and is one of the constants listed above. The different type affects how the shake looks in game.




160
packet player fog
Clientbound

PlayerFog is sent by the server to render the different fogs in the Stack. The types of fog are controlled by resource packs to change how they are rendered, and the ability to create custom fog.

Field NameField TypeNotes
stack lengthvarint

Stack is a list of fog identifiers to be sent to the client. Examples of fog identifiers are "minecraft:fogocean" and "minecraft:foghell".

stack
array
string



161
packet correct player move prediction
Clientbound

CorrectPlayerMovePrediction is sent by the server if and only if StartGame.ServerAuthoritativeMovementMode is set to AuthoritativeMovementModeServerWithRewind. The packet is used to correct movement at a specific point in time.

Field NameField TypeNotes
positionvec3f

Position is the position that the player is supposed to be at at the tick written in the field below. The client will change its current position based on movement after that tick starting from the Position.

deltavec3f

Delta is the change in position compared to what the client sent as its position at that specific tick.

on groundbool

OnGround specifies if the player was on the ground at the time of the tick below.

tickvarint64

Tick is the tick of the movement which was corrected by this packet.




162
packet item component
Clientbound

ItemComponent is sent by the server to attach client-side components to a custom item.

Field NameField TypeNotes
entriesItemComponentList

entries holds a list of all custom items with their respective components set.




163
packet filter text packet
Clientbound

FilterText is sent by the both the client and the server. The client sends the packet to the server to allow the server to filter the text server-side. The server then responds with the same packet and the safer version of the text.

Field NameField TypeNotes
textstring

Text is either the text from the client or the safer version of the text sent by the server.

from serverbool

FromServer indicates if the packet was sent by the server or not.