Protocol updates, new packets
This commit is contained in:
parent
b64a22a8fc
commit
863d51c56a
4 changed files with 784 additions and 37 deletions
|
|
@ -124,6 +124,8 @@ mcpe_packet:
|
|||
0x7c: level_event_generic
|
||||
0x7d: lectern_update
|
||||
0x7e: video_stream_connect
|
||||
0x7f: add_ecs_entity
|
||||
0x80: remove_ecs_entity
|
||||
0x81: client_cache_status
|
||||
0x82: on_screen_texture_animation
|
||||
0x83: map_create_locked_copy
|
||||
|
|
@ -132,12 +134,21 @@ mcpe_packet:
|
|||
0x86: update_block_properties
|
||||
0x87: client_cache_blob_status
|
||||
0x88: client_cache_miss_response
|
||||
0x89: education_settings
|
||||
0x8b: multiplayer_settings
|
||||
0x8c: settings_command
|
||||
0x8d: anvil_damage
|
||||
0x8e: completed_using_item
|
||||
0x8f: network_settings
|
||||
0x90: player_auth_input
|
||||
0x91: creative_content
|
||||
0x92: player_enchant_options
|
||||
0x93: item_stack_request
|
||||
0x94: item_stack_response
|
||||
0x95: player_armor_damage
|
||||
0x97: update_player_game_type
|
||||
0x9a: position_tracking_db_request
|
||||
0x99: position_tracking_db_broadcast
|
||||
0x9c: packet_violation_warning
|
||||
0xa2: item_component
|
||||
0xa3: filter_text_packet
|
||||
|
|
@ -266,6 +277,8 @@ mcpe_packet:
|
|||
if level_event_generic: packet_level_event_generic
|
||||
if lectern_update: packet_lectern_update
|
||||
if video_stream_connect: packet_video_stream_connect
|
||||
if add_ecs_entity: packet_add_ecs_entity
|
||||
if remove_ecs_entity: packet_remove_ecs_entity
|
||||
if client_cache_status: packet_client_cache_status
|
||||
if on_screen_texture_animation: packet_on_screen_texture_animation
|
||||
if map_create_locked_copy: packet_map_create_locked_copy
|
||||
|
|
@ -274,12 +287,21 @@ mcpe_packet:
|
|||
if update_block_properties: packet_update_block_properties
|
||||
if client_cache_blob_status: packet_client_cache_blob_status
|
||||
if client_cache_miss_response: packet_client_cache_miss_response
|
||||
if education_settings: packet_education_settings
|
||||
if multiplayer_settings: packet_multiplayer_settings
|
||||
if settings_command: packet_settings_command
|
||||
if anvil_damage: packet_anvil_damage
|
||||
if completed_using_item: packet_completed_using_item
|
||||
if network_settings: packet_network_settings
|
||||
if player_auth_input: packet_player_auth_input
|
||||
if creative_content: packet_creative_content
|
||||
if player_enchant_options: packet_player_enchant_options
|
||||
if item_stack_request: packet_item_stack_request
|
||||
if item_stack_response: packet_item_stack_response
|
||||
if player_armor_damage: packet_player_armor_damage
|
||||
if update_player_game_type: packet_update_player_game_type
|
||||
if position_tracking_db_request: packet_position_tracking_db_request
|
||||
if position_tracking_db_broadcast: packet_position_tracking_db_broadcast
|
||||
if packet_violation_warning: packet_packet_violation_warning
|
||||
if item_component: packet_item_component
|
||||
if filter_text_packet: packet_filter_text_packet
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ nbt: native
|
|||
packet_login:
|
||||
!id: 0x01
|
||||
!bound: server
|
||||
# Protocol version (Big Endian!)
|
||||
protocol_version: i32
|
||||
# The combined size of the `chain` and `client_data`
|
||||
payload_size: varint
|
||||
|
|
@ -205,13 +206,7 @@ packet_start_game:
|
|||
# creative spectator.
|
||||
# This field may be set to 5 to make the client fall back to the game mode set in the WorldGameMode
|
||||
# field.
|
||||
player_gamemode: zigzag32 =>
|
||||
0: survival
|
||||
1: creative
|
||||
2: adventure
|
||||
3: survival_spectator
|
||||
4: creative_spectator
|
||||
5: fallback
|
||||
player_gamemode: GameMode
|
||||
# The spawn position of the player in the world. In servers this is often the same as the
|
||||
# world's spawn position found below.
|
||||
spawn: vec3f
|
||||
|
|
@ -229,9 +224,9 @@ packet_start_game:
|
|||
# 4 being end worlds. A value of 0 will actually make the client stop rendering chunks you
|
||||
# send beyond the world limit.
|
||||
generator: zigzag32
|
||||
# The game mode that a player gets when it first spawns in the world. It is shown in the
|
||||
# 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.
|
||||
gamemode: zigzag32
|
||||
world_gamemode: GameMode
|
||||
# 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.
|
||||
difficulty: zigzag32
|
||||
|
|
@ -1065,10 +1060,14 @@ packet_change_dimension:
|
|||
position: vec3f
|
||||
respawn: bool
|
||||
|
||||
# SetPlayerGameType is sent by the server to update the game type (game mode) of the player
|
||||
packet_set_player_game_type:
|
||||
!id: 0x3e
|
||||
!bound: both
|
||||
gamemode: zigzag32
|
||||
# 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.
|
||||
gamemode: GameMode
|
||||
|
||||
packet_player_list:
|
||||
!id: 0x3f
|
||||
|
|
@ -1658,10 +1657,15 @@ packet_show_profile:
|
|||
!bound: client
|
||||
xuid: string
|
||||
|
||||
# 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.
|
||||
packet_set_default_game_type:
|
||||
!id: 0x69
|
||||
!bound: client
|
||||
gamemode: varint
|
||||
# GameType is the new game type that is set. When sent by the client, this is the requested new default
|
||||
# game type.
|
||||
gamemode: GameMode
|
||||
|
||||
packet_remove_objective:
|
||||
!id: 0x6a
|
||||
|
|
@ -1834,6 +1838,27 @@ packet_video_stream_connect:
|
|||
resolution_x: li32
|
||||
resolution_y: li32
|
||||
|
||||
# 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.
|
||||
packet_add_ecs_entity:
|
||||
!id: 0x7f
|
||||
!bound: client
|
||||
# EntityNetworkID is the network ID of the entity that should be added.
|
||||
network_id: varint64
|
||||
|
||||
# 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
|
||||
packet_remove_ecs_entity:
|
||||
!id: 0x80
|
||||
!bound: client
|
||||
# EntityNetworkID is the network ID of the entity that should be removed.
|
||||
network_id: varint64
|
||||
|
||||
packet_client_cache_status:
|
||||
!id: 0x81
|
||||
!bound: both
|
||||
|
|
@ -1879,6 +1904,88 @@ packet_client_cache_miss_response:
|
|||
!bound: client
|
||||
blobs: Blob[]varint
|
||||
|
||||
# EducationSettings is a packet sent by the server to update Minecraft: Education Edition related settings.
|
||||
# It is unused by the normal base game.
|
||||
packet_education_settings:
|
||||
!id: 0x89
|
||||
!bound: client
|
||||
# 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.
|
||||
CodeBuilderDefaultURI: string
|
||||
# CodeBuilderTitle is the title of the code builder shown when connected to the CodeBuilderDefaultURI.
|
||||
CodeBuilderTitle: string
|
||||
# CanResizeCodeBuilder specifies if clients connected to the world should be able to resize the code
|
||||
# builder when it is opened.
|
||||
CanResizeCodeBuilder: bool
|
||||
HasOverrideURI: bool
|
||||
OverrideURI: HasOverrideURI?
|
||||
if true: string
|
||||
# HasQuiz specifies if the world has a quiz connected to it.
|
||||
HasQuiz: bool
|
||||
|
||||
# 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.
|
||||
packet_multiplayer_settings:
|
||||
!id: 0x8b
|
||||
!bound: server
|
||||
# ActionType is the action that should be done when this packet is sent. It is one of the constants that
|
||||
# may be found above.
|
||||
action_type: zigzag32 =>
|
||||
0: enable_multiplayer
|
||||
1: disable_multiplayer
|
||||
2: refresh_join_code
|
||||
|
||||
# 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.
|
||||
packet_settings_command:
|
||||
!id: 0x8c
|
||||
!bound: server
|
||||
# CommandLine is the full command line that was sent to the server as a result of the setting that the
|
||||
# client changed.
|
||||
command_line: string
|
||||
# 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.
|
||||
suppress_output: bool
|
||||
|
||||
# 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.
|
||||
packet_anvil_damage:
|
||||
!id: 0x8d
|
||||
!bound: server
|
||||
# Damage is the damage that the client requests to be dealt to the anvil.
|
||||
damage: u8
|
||||
# AnvilPosition is the position in the world that the anvil can be found at.
|
||||
position: BlockCoordinates
|
||||
|
||||
# CompletedUsingItem is sent by the server to tell the client that it should be done using the item it is
|
||||
# currently using.
|
||||
packet_completed_using_item:
|
||||
!id: 0x8e
|
||||
!bound: client
|
||||
# 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.
|
||||
used_item_id: li16
|
||||
# UseMethod is the method of the using of the item that was completed. It is one of the constants that
|
||||
# may be found above.
|
||||
use_method: li32 =>
|
||||
0: equip_armor
|
||||
1: eat
|
||||
2: attack
|
||||
3: consume
|
||||
4: throw
|
||||
5: shoot
|
||||
6: place
|
||||
7: fill_bottle
|
||||
8: fill_bucket
|
||||
9: pour_bucket
|
||||
10: use_tool
|
||||
11: interact
|
||||
12: retrieved
|
||||
13: dyed
|
||||
14: traded
|
||||
|
||||
# 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.
|
||||
|
|
@ -1890,6 +1997,90 @@ packet_network_settings:
|
|||
# When set to 0, all packets will be left uncompressed.
|
||||
compression_threshold: u16
|
||||
|
||||
|
||||
# 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.
|
||||
packet_player_auth_input:
|
||||
!id: 0x90
|
||||
!bound: server
|
||||
# Pitch that the player reports it has.
|
||||
pitch: lf32
|
||||
# Yaw that player reports it has.
|
||||
yaw: lf32
|
||||
# Position holds the position that the player reports it has.
|
||||
position: vec3f
|
||||
# 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.
|
||||
move_vector: vec2f
|
||||
# HeadYaw is the horizontal rotation of the head that the player reports it has.
|
||||
head_yaw: lf32
|
||||
# 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_data: InputFlag
|
||||
# InputMode specifies the way that the client inputs data to the screen. It is one of the constants that
|
||||
# may be found above.
|
||||
input_mode: varint =>
|
||||
0: mouse
|
||||
1: touch
|
||||
2: game_pad
|
||||
3: motion_controller
|
||||
# PlayMode specifies the way that the player is playing. The values it holds, which are rather random,
|
||||
# may be found above.
|
||||
play_mode: varint =>
|
||||
0: normal
|
||||
1: teaser
|
||||
2: screen
|
||||
3: viewer
|
||||
4: reality
|
||||
5: placement
|
||||
6: living_room
|
||||
7: exit_level
|
||||
8: exit_level_living_room
|
||||
9: num_modes
|
||||
# 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.
|
||||
gaze_direction: play_mode ?
|
||||
if reality: vec3f
|
||||
# Tick is the server tick at which the packet was sent. It is used in relation to
|
||||
# CorrectPlayerMovePrediction.
|
||||
tick: varint64
|
||||
# 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.
|
||||
delta: vec3f
|
||||
|
||||
InputFlag: [ "bitflags", {
|
||||
"type": "varint64",
|
||||
"flags": {
|
||||
"ascend": 0b1,
|
||||
"descend": 0b10,
|
||||
"north_jump": 0b100,
|
||||
"jump_down": 0b1000,
|
||||
"sprint_down": 0b10000,
|
||||
"change_height": 0b100000,
|
||||
"jumping": 0b1000000,
|
||||
"auto_jumping_in_water": 0b10000000,
|
||||
"sneaking": 0b100000000,
|
||||
"sneak_down": 0b1000000000,
|
||||
"up": 0b10000000000,
|
||||
"down": 0b100000000000,
|
||||
"left": 0b1000000000000,
|
||||
"right": 0b10000000000000,
|
||||
"up_left": 0b100000000000000,
|
||||
"up_right": 0b1000000000000000,
|
||||
"want_up": 0b10000000000000000,
|
||||
"want_down": 0b100000000000000000,
|
||||
"want_down_slow": 0b1000000000000000000,
|
||||
"want_up_slow": 0b10000000000000000000,
|
||||
"sprinting": 0b100000000000000000000,
|
||||
"ascend_scaffolding": 0b1000000000000000000000,
|
||||
"descend_scaffolding": 0b10000000000000000000000,
|
||||
"sneak_toggle_down": 0b100000000000000000000000,
|
||||
"persist_sneak": 0b1000000000000000000000000,
|
||||
}
|
||||
}]
|
||||
|
||||
packet_creative_content:
|
||||
!id: 0x91
|
||||
!bound: client
|
||||
|
|
@ -1910,25 +2101,123 @@ packet_item_stack_response:
|
|||
!bound: client
|
||||
responses: ItemStackResponses
|
||||
|
||||
# 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.
|
||||
packet_player_armor_damage:
|
||||
!id: 0x95
|
||||
!bound: client
|
||||
# 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.
|
||||
type: ArmorDamageType
|
||||
helmet_damage: type.head ?
|
||||
if true: zigzag32
|
||||
chestplate_damage: type.chest ?
|
||||
if true: zigzag32
|
||||
leggings_damage: type.legs ?
|
||||
if true: zigzag32
|
||||
boots_damage: types.feet ?
|
||||
if true: zigzag32
|
||||
|
||||
ArmorDamageType: [ "bitflags",
|
||||
{
|
||||
"type": "u8",
|
||||
"flags": {
|
||||
"head": 0b1,
|
||||
"chest": 0b10,
|
||||
"legs": 0b100,
|
||||
"feet": 0b1000
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
# UpdatePlayerGameType is sent by the server to change the game mode of a player. It is functionally
|
||||
# identical to the SetPlayerGameType packet.
|
||||
packet_update_player_game_type:
|
||||
!id: 0x97
|
||||
!bound: server
|
||||
# GameType is the new game type of the player. It is one of the constants that can be found in
|
||||
# set_player_game_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.
|
||||
gamemode: GameMode
|
||||
# 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.
|
||||
player_unique_id: zigzag64
|
||||
|
||||
|
||||
# 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.
|
||||
packet_position_tracking_db_request:
|
||||
!id: 0x9a
|
||||
!bound: server
|
||||
# RequestAction is the action that should be performed upon the receiving of the packet. It is one of the
|
||||
# constants found above.
|
||||
action: u8 =>
|
||||
0: query
|
||||
# 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.
|
||||
tracking_id: zigzag32
|
||||
|
||||
# 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.
|
||||
packet_position_tracking_db_broadcast:
|
||||
!id: 0x99
|
||||
!bound: client
|
||||
# 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.
|
||||
broadcast_action: u8 =>
|
||||
0: update
|
||||
1: destory
|
||||
2: not_found
|
||||
# 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.
|
||||
tracking_id: zigzag32
|
||||
nbt: nbt
|
||||
|
||||
# PacketViolationWarning is sent by the client when it receives an invalid packet from the server. It holds
|
||||
# some information on the error that occurred.
|
||||
packet_packet_violation_warning:
|
||||
!id: 0x9c
|
||||
!bound: server
|
||||
violation_type: zigzag32
|
||||
severity: zigzag32
|
||||
violation_type: zigzag32 =>
|
||||
0: malformed
|
||||
# Severity specifies the severity of the packet violation. The action the client takes after this
|
||||
# violation depends on the severity sent.
|
||||
severity: zigzag32 =>
|
||||
0: warning
|
||||
1: final_warning
|
||||
2: terminating
|
||||
# PacketID is the ID of the invalid packet that was received.
|
||||
packet_id: zigzag32
|
||||
# ViolationContext holds a description on the violation of the packet.
|
||||
reason: string
|
||||
|
||||
# ItemComponent is sent by the server to attach client-side components to a custom item.
|
||||
packet_item_component:
|
||||
!id: 0xa2
|
||||
!bound: client
|
||||
# `entries` holds a list of all custom items with their respective components set.
|
||||
entries: ItemComponentList
|
||||
|
||||
# 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.
|
||||
packet_filter_text_packet:
|
||||
!id: 0xa3
|
||||
!bound: client
|
||||
# Text is either the text from the client or the safer version of the text sent by the server.
|
||||
text: string
|
||||
# FromServer indicates if the packet was sent by the server or not.
|
||||
from_server: bool
|
||||
|
|
|
|||
|
|
@ -35,6 +35,14 @@ Experiment:
|
|||
|
||||
Experiments: Experiment[]li32
|
||||
|
||||
GameMode: zigzag32 =>
|
||||
0: survival
|
||||
1: creative
|
||||
2: adventure
|
||||
3: survival_spectator
|
||||
4: creative_spectator
|
||||
5: fallback
|
||||
|
||||
GameRule:
|
||||
name: string
|
||||
type: varint =>
|
||||
|
|
@ -638,7 +646,9 @@ ItemStackResponses: []varint
|
|||
custom_name: string
|
||||
|
||||
ItemComponentList: []varint
|
||||
# Name is the name of the item, which is a name like 'minecraft:stick'.
|
||||
name: string
|
||||
# Data is a map containing the components and properties of the item.
|
||||
nbt: nbt
|
||||
|
||||
CommandOrigin:
|
||||
|
|
|
|||
|
|
@ -141,6 +141,20 @@
|
|||
"type": "Experiment"
|
||||
}
|
||||
],
|
||||
"GameMode": [
|
||||
"mapper",
|
||||
{
|
||||
"type": "zigzag32",
|
||||
"mappings": {
|
||||
"0": "survival",
|
||||
"1": "creative",
|
||||
"2": "adventure",
|
||||
"3": "survival_spectator",
|
||||
"4": "creative_spectator",
|
||||
"5": "fallback"
|
||||
}
|
||||
}
|
||||
],
|
||||
"GameRule": [
|
||||
"container",
|
||||
[
|
||||
|
|
@ -2654,6 +2668,8 @@
|
|||
"124": "level_event_generic",
|
||||
"125": "lectern_update",
|
||||
"126": "video_stream_connect",
|
||||
"127": "add_ecs_entity",
|
||||
"128": "remove_ecs_entity",
|
||||
"129": "client_cache_status",
|
||||
"130": "on_screen_texture_animation",
|
||||
"131": "map_create_locked_copy",
|
||||
|
|
@ -2662,12 +2678,21 @@
|
|||
"134": "update_block_properties",
|
||||
"135": "client_cache_blob_status",
|
||||
"136": "client_cache_miss_response",
|
||||
"137": "education_settings",
|
||||
"139": "multiplayer_settings",
|
||||
"140": "settings_command",
|
||||
"141": "anvil_damage",
|
||||
"142": "completed_using_item",
|
||||
"143": "network_settings",
|
||||
"144": "player_auth_input",
|
||||
"145": "creative_content",
|
||||
"146": "player_enchant_options",
|
||||
"147": "item_stack_request",
|
||||
"148": "item_stack_response",
|
||||
"149": "player_armor_damage",
|
||||
"151": "update_player_game_type",
|
||||
"153": "position_tracking_db_broadcast",
|
||||
"154": "position_tracking_db_request",
|
||||
"156": "packet_violation_warning",
|
||||
"162": "item_component",
|
||||
"163": "filter_text_packet"
|
||||
|
|
@ -2805,6 +2830,8 @@
|
|||
"level_event_generic": "packet_level_event_generic",
|
||||
"lectern_update": "packet_lectern_update",
|
||||
"video_stream_connect": "packet_video_stream_connect",
|
||||
"add_ecs_entity": "packet_add_ecs_entity",
|
||||
"remove_ecs_entity": "packet_remove_ecs_entity",
|
||||
"client_cache_status": "packet_client_cache_status",
|
||||
"on_screen_texture_animation": "packet_on_screen_texture_animation",
|
||||
"map_create_locked_copy": "packet_map_create_locked_copy",
|
||||
|
|
@ -2813,12 +2840,21 @@
|
|||
"update_block_properties": "packet_update_block_properties",
|
||||
"client_cache_blob_status": "packet_client_cache_blob_status",
|
||||
"client_cache_miss_response": "packet_client_cache_miss_response",
|
||||
"education_settings": "packet_education_settings",
|
||||
"multiplayer_settings": "packet_multiplayer_settings",
|
||||
"settings_command": "packet_settings_command",
|
||||
"anvil_damage": "packet_anvil_damage",
|
||||
"completed_using_item": "packet_completed_using_item",
|
||||
"network_settings": "packet_network_settings",
|
||||
"player_auth_input": "packet_player_auth_input",
|
||||
"creative_content": "packet_creative_content",
|
||||
"player_enchant_options": "packet_player_enchant_options",
|
||||
"item_stack_request": "packet_item_stack_request",
|
||||
"item_stack_response": "packet_item_stack_response",
|
||||
"player_armor_damage": "packet_player_armor_damage",
|
||||
"update_player_game_type": "packet_update_player_game_type",
|
||||
"position_tracking_db_request": "packet_position_tracking_db_request",
|
||||
"position_tracking_db_broadcast": "packet_position_tracking_db_broadcast",
|
||||
"packet_violation_warning": "packet_packet_violation_warning",
|
||||
"item_component": "packet_item_component",
|
||||
"filter_text_packet": "packet_filter_text_packet"
|
||||
|
|
@ -3177,20 +3213,7 @@
|
|||
},
|
||||
{
|
||||
"name": "player_gamemode",
|
||||
"type": [
|
||||
"mapper",
|
||||
{
|
||||
"type": "zigzag32",
|
||||
"mappings": {
|
||||
"0": "survival",
|
||||
"1": "creative",
|
||||
"2": "adventure",
|
||||
"3": "survival_spectator",
|
||||
"4": "creative_spectator",
|
||||
"5": "fallback"
|
||||
}
|
||||
}
|
||||
]
|
||||
"type": "GameMode"
|
||||
},
|
||||
{
|
||||
"name": "spawn",
|
||||
|
|
@ -3221,8 +3244,8 @@
|
|||
"type": "zigzag32"
|
||||
},
|
||||
{
|
||||
"name": "gamemode",
|
||||
"type": "zigzag32"
|
||||
"name": "world_gamemode",
|
||||
"type": "GameMode"
|
||||
},
|
||||
{
|
||||
"name": "difficulty",
|
||||
|
|
@ -3729,7 +3752,7 @@
|
|||
"type": "varint"
|
||||
},
|
||||
{
|
||||
"anon": true,
|
||||
"name": "teleport",
|
||||
"type": [
|
||||
"switch",
|
||||
{
|
||||
|
|
@ -3739,7 +3762,7 @@
|
|||
"container",
|
||||
[
|
||||
{
|
||||
"name": "teleport_cause",
|
||||
"name": "cause",
|
||||
"type": [
|
||||
"mapper",
|
||||
{
|
||||
|
|
@ -4746,7 +4769,7 @@
|
|||
[
|
||||
{
|
||||
"name": "gamemode",
|
||||
"type": "zigzag32"
|
||||
"type": "GameMode"
|
||||
}
|
||||
]
|
||||
],
|
||||
|
|
@ -4792,7 +4815,7 @@
|
|||
"7": "boss_killed",
|
||||
"8": "agent_command",
|
||||
"9": "agent_created",
|
||||
"10": "pattern_removed",
|
||||
"10": "banner_pattern_removed",
|
||||
"11": "commaned_executed",
|
||||
"12": "fish_bucketed",
|
||||
"13": "mob_born",
|
||||
|
|
@ -5835,7 +5858,7 @@
|
|||
[
|
||||
{
|
||||
"name": "gamemode",
|
||||
"type": "varint"
|
||||
"type": "GameMode"
|
||||
}
|
||||
]
|
||||
],
|
||||
|
|
@ -6218,6 +6241,24 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"packet_add_ecs_entity": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "network_id",
|
||||
"type": "varint64"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_remove_ecs_entity": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "network_id",
|
||||
"type": "varint64"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_client_cache_status": [
|
||||
"container",
|
||||
[
|
||||
|
|
@ -6292,6 +6333,124 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"packet_education_settings": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "CodeBuilderDefaultURI",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "CodeBuilderTitle",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "CanResizeCodeBuilder",
|
||||
"type": "bool"
|
||||
},
|
||||
{
|
||||
"name": "HasOverrideURI",
|
||||
"type": "bool"
|
||||
},
|
||||
{
|
||||
"name": "OverrideURI",
|
||||
"type": [
|
||||
"switch",
|
||||
{
|
||||
"compareTo": "HasOverrideURI",
|
||||
"fields": {
|
||||
"true": "string"
|
||||
},
|
||||
"default": "void"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "HasQuiz",
|
||||
"type": "bool"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_multiplayer_settings": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "action_type",
|
||||
"type": [
|
||||
"mapper",
|
||||
{
|
||||
"type": "zigzag32",
|
||||
"mappings": {
|
||||
"0": "enable_multiplayer",
|
||||
"1": "disable_multiplayer",
|
||||
"2": "refresh_join_code"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_settings_command": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "command_line",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "suppress_output",
|
||||
"type": "bool"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_anvil_damage": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "damage",
|
||||
"type": "u8"
|
||||
},
|
||||
{
|
||||
"name": "position",
|
||||
"type": "BlockCoordinates"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_completed_using_item": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "used_item_id",
|
||||
"type": "li16"
|
||||
},
|
||||
{
|
||||
"name": "use_method",
|
||||
"type": [
|
||||
"mapper",
|
||||
{
|
||||
"type": "li32",
|
||||
"mappings": {
|
||||
"0": "equip_armor",
|
||||
"1": "eat",
|
||||
"2": "attack",
|
||||
"3": "consume",
|
||||
"4": "throw",
|
||||
"5": "shoot",
|
||||
"6": "place",
|
||||
"7": "fill_bottle",
|
||||
"8": "fill_bucket",
|
||||
"9": "pour_bucket",
|
||||
"10": "use_tool",
|
||||
"11": "interact",
|
||||
"12": "retrieved",
|
||||
"13": "dyed",
|
||||
"14": "traded"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_network_settings": [
|
||||
"container",
|
||||
[
|
||||
|
|
@ -6301,6 +6460,92 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"packet_player_auth_input": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "pitch",
|
||||
"type": "lf32"
|
||||
},
|
||||
{
|
||||
"name": "yaw",
|
||||
"type": "lf32"
|
||||
},
|
||||
{
|
||||
"name": "position",
|
||||
"type": "vec3f"
|
||||
},
|
||||
{
|
||||
"name": "move_vector",
|
||||
"type": "vec2f"
|
||||
},
|
||||
{
|
||||
"name": "head_yaw",
|
||||
"type": "lf32"
|
||||
},
|
||||
{
|
||||
"name": "input_data",
|
||||
"type": "InputFlag"
|
||||
},
|
||||
{
|
||||
"name": "input_mode",
|
||||
"type": [
|
||||
"mapper",
|
||||
{
|
||||
"type": "varint",
|
||||
"mappings": {
|
||||
"0": "mouse",
|
||||
"1": "touch",
|
||||
"2": "game_pad",
|
||||
"3": "motion_controller"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "play_mode",
|
||||
"type": [
|
||||
"mapper",
|
||||
{
|
||||
"type": "varint",
|
||||
"mappings": {
|
||||
"0": "normal",
|
||||
"1": "teaser",
|
||||
"2": "screen",
|
||||
"3": "viewer",
|
||||
"4": "reality",
|
||||
"5": "placement",
|
||||
"6": "living_room",
|
||||
"7": "exit_level",
|
||||
"8": "exit_level_living_room",
|
||||
"9": "num_modes"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "gaze_direction",
|
||||
"type": [
|
||||
"switch",
|
||||
{
|
||||
"compareTo": "play_mode",
|
||||
"fields": {
|
||||
"reality": "vec3f"
|
||||
},
|
||||
"default": "void"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "tick",
|
||||
"type": "varint64"
|
||||
},
|
||||
{
|
||||
"name": "delta",
|
||||
"type": "vec3f"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_creative_content": [
|
||||
"container",
|
||||
[
|
||||
|
|
@ -6337,20 +6582,156 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"packet_player_armor_damage": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "type",
|
||||
"type": "ArmorDamageType"
|
||||
},
|
||||
{
|
||||
"name": "helmet_damage",
|
||||
"type": [
|
||||
"switch",
|
||||
{
|
||||
"compareTo": "type.head",
|
||||
"fields": {
|
||||
"true": "zigzag32"
|
||||
},
|
||||
"default": "void"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "chestplate_damage",
|
||||
"type": [
|
||||
"switch",
|
||||
{
|
||||
"compareTo": "type.chest",
|
||||
"fields": {
|
||||
"true": "zigzag32"
|
||||
},
|
||||
"default": "void"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "leggings_damage",
|
||||
"type": [
|
||||
"switch",
|
||||
{
|
||||
"compareTo": "type.legs",
|
||||
"fields": {
|
||||
"true": "zigzag32"
|
||||
},
|
||||
"default": "void"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "boots_damage",
|
||||
"type": [
|
||||
"switch",
|
||||
{
|
||||
"compareTo": "types.feet",
|
||||
"fields": {
|
||||
"true": "zigzag32"
|
||||
},
|
||||
"default": "void"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_update_player_game_type": [
|
||||
"container",
|
||||
[]
|
||||
[
|
||||
{
|
||||
"name": "gamemode",
|
||||
"type": "GameMode"
|
||||
},
|
||||
{
|
||||
"name": "player_unique_id",
|
||||
"type": "zigzag64"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_position_tracking_db_request": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "action",
|
||||
"type": [
|
||||
"mapper",
|
||||
{
|
||||
"type": "u8",
|
||||
"mappings": {
|
||||
"0": "query"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "tracking_id",
|
||||
"type": "zigzag32"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_position_tracking_db_broadcast": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "broadcast_action",
|
||||
"type": [
|
||||
"mapper",
|
||||
{
|
||||
"type": "u8",
|
||||
"mappings": {
|
||||
"0": "update",
|
||||
"1": "destory",
|
||||
"2": "not_found"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "tracking_id",
|
||||
"type": "zigzag32"
|
||||
},
|
||||
{
|
||||
"name": "nbt",
|
||||
"type": "nbt"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_packet_violation_warning": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "violation_type",
|
||||
"type": "zigzag32"
|
||||
"type": [
|
||||
"mapper",
|
||||
{
|
||||
"type": "zigzag32",
|
||||
"mappings": {
|
||||
"0": "malformed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "severity",
|
||||
"type": "zigzag32"
|
||||
"type": [
|
||||
"mapper",
|
||||
{
|
||||
"type": "zigzag32",
|
||||
"mappings": {
|
||||
"0": "warning",
|
||||
"1": "final_warning",
|
||||
"2": "terminating"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packet_id",
|
||||
|
|
@ -6469,6 +6850,51 @@
|
|||
"force_move": 256
|
||||
}
|
||||
}
|
||||
],
|
||||
"InputFlag": [
|
||||
"bitflags",
|
||||
{
|
||||
"type": "varint64",
|
||||
"flags": {
|
||||
"ascend": 1,
|
||||
"descend": 2,
|
||||
"north_jump": 4,
|
||||
"jump_down": 8,
|
||||
"sprint_down": 16,
|
||||
"change_height": 32,
|
||||
"jumping": 64,
|
||||
"auto_jumping_in_water": 128,
|
||||
"sneaking": 256,
|
||||
"sneak_down": 512,
|
||||
"up": 1024,
|
||||
"down": 2048,
|
||||
"left": 4096,
|
||||
"right": 8192,
|
||||
"up_left": 16384,
|
||||
"up_right": 32768,
|
||||
"want_up": 65536,
|
||||
"want_down": 131072,
|
||||
"want_down_slow": 262144,
|
||||
"want_up_slow": 524288,
|
||||
"sprinting": 1048576,
|
||||
"ascend_scaffolding": 2097152,
|
||||
"descend_scaffolding": 4194304,
|
||||
"sneak_toggle_down": 8388608,
|
||||
"persist_sneak": 16777216
|
||||
}
|
||||
}
|
||||
],
|
||||
"ArmorDamageType": [
|
||||
"bitflags",
|
||||
{
|
||||
"type": "u8",
|
||||
"flags": {
|
||||
"head": 1,
|
||||
"chest": 2,
|
||||
"legs": 4,
|
||||
"feet": 8
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue