!version: 1.21.1 !StartDocs: true ^types: varint: native varlong: native optvarint: varint pstring: native buffer: native u8: native u16: native u32: native u64: native i8: native i16: native i32: native i64: native bool: native f32: native f64: native UUID: native option: native entityMetadataLoop: native topBitSetTerminatedArray: native bitfield: native bitflags: native container: native switch: native void: native array: native restBuffer: native anonymousNbt: native anonOptionalNbt: native registryEntryHolder: native registryEntryHolderSet: native ByteArray: ["buffer", { "countType": "varint" }] string: ["pstring", { "countType": "varint" }] vec2f: x: f32 y: f32 vec3f: x: f32 y: f32 z: f32 vec4f: x: f32 y: f32 z: f32 w: f32 vec3f64: x: f64 y: f64 z: f64 vec3i16: x: i16 y: i16 z: i16 IDSet: ["registryEntryHolderSet", { "base": { name: "name", type: "string" }, "otherwise": { name: "ids", type: "varint" } }] ContainerID: u8 SlotComponentType: varint => - custom_data - max_stack_size - max_damage - damage - unbreakable - custom_name - item_name - lore - rarity - enchantments - can_place_on - can_break - attribute_modifiers - custom_model_data - hide_additional_tooltip - hide_tooltip - repair_cost - creative_slot_lock - enchantment_glint_override - intangible_projectile - food - fire_resistant - tool - stored_enchantments - dyed_color - map_color - map_id - map_decorations - map_post_processing - charged_projectiles - bundle_contents - potion_contents - suspicious_stew_effects - writable_book_content - written_book_content - trim - debug_stick_state - entity_data - bucket_entity_data - block_entity_data - instrument - ominous_bottle_amplifier - jukebox_playable - recipes - lodestone_tracker - firework_explosion - fireworks - profile - note_block_sound - banner_patterns - base_color - pot_decorations - container - block_state - bees - lock - container_loot SlotComponent: type: SlotComponentType ## Ref: client/net/minecraft/core/component/DataComponents.java data: type ? ## TODO: look into how nbt works here if custom_data: anonymousNbt if max_stack_size: varint if max_damage: varint if damage: varint if unbreakable: bool if custom_name: anonymousNbt if item_name: anonymousNbt if lore: anonOptionalNbt[]varint if rarity: varint => - common - uncommon - rare - epic if enchantments: enchantments: []varint id: varint level: varint showTooltip: bool if can_place_on or can_break: predicates: ItemBlockPredicate[]varint showTooltip: bool if attribute_modifiers: attributes: []varint typeId: varint name: string value: f64 operation: varint => - add - multiply_base - multiply_total slot: varint => - any - main_hand - off_hand - hand - feet - legs - chest - head - armor - body showTooltip: bool if custom_model_data: varint if hide_additional_tooltip: void if hide_tooltip: void if repair_cost: varint if creative_slot_lock: void if enchantment_glint_override: bool if intangible_projectile: anonymousNbt if food: nutrition: varint # How much saturation will be given after consuming the item. saturationModifier: f32 # Whether the item can always be eaten, even at full hunger. canAlwaysEat: bool secondsToEat: f32 usingConvertsTo: Slot effects: []varint effect: varint probability: f32 if fire_resistant: void if tool: rules: []varint blocks: IDSet # The speed at which the tool breaks this rules' blocks. speed?: f32 # Whether items should drop only if this is the correct tool. correctDropForBlocks?: bool # The mining speed in case none of the previous rule were matched. defaultMiningSpeed: f32 damagePerBlock: varint if stored_enchantments: enchantments: []varint # The ID of the enchantment in the enchantment registry. id: varint level: varint # Whether the list of enchantments should be shown on the item's tooltip. showInTooltip: bool if dyed_color: color: i32 showTooltip: bool if map_color: i32 if map_id: varint if map_decorations: anonymousNbt if map_post_processing: varint if charged_projectiles: projectiles: Slot[]varint if bundle_contents: contents: Slot[]varint if potion_contents: # True if this potion has an ID in the potion registry--it has the default effects associated with the potion type. potionId?: varint # The RGB components of the color, encoded as an integer. customColor?: i32 customEffects: ItemPotionEffect[]varint customName?: string if suspicious_stew_effects: effects: []varint # The ID of the effect in the potion effect type registry. effect: varint # The duration of the effect. duration: varint if writable_book_content: # Max 100 pages pages: ItemBookPage[]varint if written_book_content: rawTitle: string filteredTitle?: string author: string generation: varint pages: ItemWrittenBookPage[]varint resolved: bool if trim: material: ["registryEntryHolder", { "baseName": "materialId", "otherwise": { "name": "data", "type": "ArmorTrimMaterial" } }] pattern: ["registryEntryHolder", { "baseName": "patternId", "otherwise": { "name": "data", "type": "ArmorTrimPattern" } }] showInTooltip: bool if debug_stick_state: anonymousNbt if entity_data: anonymousNbt if bucket_entity_data: anonymousNbt if block_entity_data: anonymousNbt if instrument: ["registryEntryHolder", { "baseName": "instrumentId", "otherwise": { "name": "data", "type": "InstrumentData" } }] if ominous_bottle_amplifier: varint if jukebox_playable: hasHolder: bool song: hasHolder ? if true: ["registryEntryHolder", { "baseName": "songId", "otherwise": { "name": "data", "type": "JukeboxSongData" } }] if false: string showInTooltip: bool if recipes: anonymousNbt if lodestone_tracker: # Specified if this lodestone points to a position; otherwise it spins randomly. globalPosition?: dimension: string # The position the compass points to. Only present if Has Global Position is true. position: position # Whether the component is removed when the associated lodestone is broken. tracked: bool if firework_explosion: ItemFireworkExplosion if fireworks: flightDuration: varint explosions: ItemFireworkExplosion[]varint if profile: # If the profile has a name, max 16 characters. name?: string uuid?: UUID properties: []varint # Max 64 characters name: string value: string # Max 1024 characters signature?: string if note_block_sound: string if banner_patterns: layers: BannerPatternLayer[]varint if base_color: varint if pot_decorations: # The ID of the items in the item registry. decorations: varint[]varint if container: contents: Slot[]varint if block_state: properties: []varint property: string value: string if bees: bees: []varint # Custom data for the entity, always a Compound Tag. Same structure as the minecraft:custom_data component. nbtData: anonymousNbt ticksInHive: varint minTicksInHive: varint if lock: anonymousNbt if container_loot: anonymousNbt ItemSoundEvent: soundName: string fixedRange?: f32 ItemSoundHolder: ["registryEntryHolder", { "baseName": "soundId", "otherwise": { name: "data", type: "ItemSoundEvent" } }] ItemFireworkExplosion: shape: varint => - small_ball - large_ball - star - creeper - burst # The RGB components of the color, encoded as an integer. colors: i32[]varint # The RGB components of the color, encoded as an integer. fadeColors: i32[]varint # Whether the firework has a trail. hasTrail: bool # Whether the firework has a twinkle effect. hasTwinkle: bool ItemEffectDetail: amplifier: varint duration: varint ambient: bool showParticles: bool showIcon: bool hiddenEffect?: ItemEffectDetail ItemPotionEffect: id: varint details: ItemEffectDetail ItemBlockProperty: name: string isExactMatch: bool value: isExactMatch ? if true: exactValue: string if false: minValue: string maxValue: string ItemBlockPredicate: blockSet?: ["registryEntryHolderSet", { "base": { name: "name", type: "string" }, "otherwise": { name: "blockIds", type: "varint" } }] properties?: ItemBlockProperty[]varint nbt: anonOptionalNbt ItemBookPage: # The raw text of the page. TextComponent, max 1024 characters. content: string filteredContent?: string ItemWrittenBookPage: content: anonymousNbt filteredContent: anonOptionalNbt ArmorTrimMaterial: assetName: string ingredientId: varint overrideArmorAssets: []varint key: string value: string description: anonymousNbt ArmorTrimPattern: assetId: string templateItemId: varint description: anonymousNbt decal: bool InstrumentData: soundEvent: ItemSoundHolder useDuration: f32 range: f32 description: anonymousNbt JukeboxSongData: soundEvent: ItemSoundHolder description: anonymousNbt lengthInSeconds: f32 comparatorOutput: varint BannerPattern: assetId: string translationKey: string BannerPatternLayer: pattern: ["registryEntryHolder", { "baseName": "patternId", "otherwise": { "name": "data", "type": "BannerPattern" } }] colorId: varint Slot: itemCount: varint _: itemCount ? if 0: void default: itemId: varint # https://wiki.vg/Slot_Data#Structured_components addedComponentCount: varint removedComponentCount: varint components: SlotComponent[]$addedComponentCount removeComponents: []$removedComponentCount type: SlotComponentType Particle: # See client/net/minecraft/core/particles/ParticleTypes.java type: varint => - angry_villager - block - block_marker - bubble - cloud - crit - damage_indicator - dragon_breath - dripping_lava - falling_lava - landing_lava - dripping_water - falling_water - dust - dust_color_transition - effect - elder_guardian - enchanted_hit - enchant - end_rod - entity_effect - explosion_emitter - explosion - gust - small_gust - gust_emitter_large - gust_emitter_small - sonic_boom - falling_dust - firework - fishing - flame - infested - cherry_leaves - sculk_soul - sculk_charge - sculk_charge_pop - soul_fire_flame - soul - flash - happy_villager - composter - heart - instant_effect - item - vibration - item_slime - item_cobweb - item_snowball - large_smoke - lava - mycelium - note - poof - portal - rain - smoke - white_smoke - sneeze - spit - squid_ink - sweep_attack - totem_of_undying - underwater - splash - witch - bubble_pop - current_down - bubble_column_up - nautilus - dolphin - campfire_cosy_smoke - campfire_signal_smoke - dripping_honey - falling_honey - landing_honey - falling_nectar - falling_spore_blossom - ash - crimson_spore - warped_spore - spore_blossom_air - dripping_obsidian_tear - falling_obsidian_tear - landing_obsidian_tear - reverse_portal - white_ash - small_flame - snowflake - dripping_dripstone_lava - falling_dripstone_lava - dripping_dripstone_water - falling_dripstone_water - glow_squid_ink - glow - wax_on - wax_off - electric_spark - scrape - shriek - egg_crack - dust_plume - trial_spawner_detected_player - trial_spawner_detected_player_ominous - vault_connection - dust_pillar - ominous_spawning - raid_omen - trial_omen ## ## Tips for reviewing particle data (as of 1.20.5) ## Inside the registry code, each particle can have an associated "options" type and ## each options type can add additional data to be encoded. ## For example, this line ## public static final ParticleType BLOCK = register("block", false, BlockParticleOption::codec, BlockParticleOption::streamCodec); ## will read the stream codec from BlockParticleOption.java's streamCodec member; then we see ## return ByteBufCodecs.idMapper(Block.BLOCK_STATE_REGISTRY).map(var1 -> new BlockParticleOption(var0, var1), var0x -> var0x.state); ## this encodes with the ByteBufCodecs.idMapper function. Inside this function we find ## public void encode(ByteBuf var1x, T var2) { ## int var3 = var1.applyAsInt(var2); ## VarInt.write(var1x, var3); ## } ## which as we can see writes the varint to the buffer. ## If you want to see all the serializers try regexp searching "StreamCodec.*Particle" data: type ? if block or block_marker or falling_dust or dust_pillar: varint if dust: red: f32 green: f32 blue: f32 scale: f32 if dust_color_transition: fromRed: f32 fromGreen: f32 fromBlue: f32 scale: f32 toRed: f32 toGreen: f32 toBlue: f32 if entity_effect: i32 if item: Slot if sculk_charge: f32 if shriek: varint if vibration: positionType: varint => - block - entity position: positionType ? if block: position if entity: entityId: varint entityEyeHeight: f32 ticks: varint ingredient: Slot[]varint position: [ "bitfield", [ { "name": "x", "size": 26, "signed": true }, { "name": "z", "size": 26, "signed": true }, { "name": "y", "size": 12, "signed": true } ] ] soundSource: varint => 0: master 1: music 2: record 3: weather 4: block 5: hostile 6: neutral 7: player 8: ambient 9: voice packedChunkPos: z: i32 x: i32 previousMessages: []varint id: varint signature: id ? if 0: [ "buffer", { "count": 256 } ] default: void entityMetadataEntry: key: u8 type: varint => - byte - int - long - float - string - component - optional_component - item_stack - boolean - rotations - block_pos - optional_block_pos - direction - optional_uuid - block_state - optional_block_state - compound_tag - particle - particles - villager_data - optional_unsigned_int - pose - cat_variant - wolf_variant - frog_variant - optional_global_pos - painting_variant - sniffer_state - armadillo_state - vector3 - quaternion value: type ? if byte: i8 if int: varint if long: varlong if float: f32 if string: string if component: anonymousNbt if optional_component: ["option", "anonymousNbt"] if item_stack: Slot if boolean: bool if rotations: pitch: f32 yaw: f32 roll: f32 if block_pos: position if optional_block_pos: ["option", "position"] if direction: varint if optional_uuid: ["option", "UUID"] if block_state: varint if optional_block_state: optvarint if compound_tag: anonymousNbt if particle: Particle if particles: Particle[]varint if villager_data: villagerType: varint villagerProfession: varint level: varint if optional_unsigned_int: optvarint if pose: varint if cat_variant: varint if wolf_variant: ["registryEntryHolder", { "baseName": "variantId", "otherwise": { name: "variantData", type: "EntityMetadataWolfVariant" } }] if frog_variant: varint if optional_global_pos: ["option", "string"] if painting_variant: ["registryEntryHolder", { "baseName": "variantId", "otherwise": { name: "variantData", type: "EntityMetadataPaintingVariant" } }] if sniffer_state: varint if armadillo_state: varint if vector3: vec3f if quaternion: vec4f EntityMetadataPaintingVariant: width: i32 height: i32 assetId: string title?: anonymousNbt author?: anonymousNbt EntityMetadataWolfVariant: wildTexture: string tameTexture: string angryTexture: string biome: IDSet entityMetadata: ["entityMetadataLoop", { "endVal": 255, "type": "entityMetadataEntry" }] minecraft_simple_recipe_format: category: varint minecraft_smelting_format: group: string category: varint ingredient: ingredient result: Slot experience: f32 cookTime: varint tags: []varint tagName: string entries: varint[]varint chunkBlockEntity: _: [ "bitfield", [ { "name": "x", "size": 4, "signed": false }, { "name": "z", "size": 4, "signed": false } ] ] y: i16 type: varint nbtData: anonOptionalNbt chat_session?: uuid: UUID publicKey: expireTime: i64 keyBytes: [ "buffer", { "countType": "varint" } ] keySignature: [ "buffer", { "countType": "varint" } ] game_profile: name: string properties: []varint name: string value: string signature?: string command_node: flags: [ "bitfield", [ { "name": "unused", "size": 3, "signed": false }, { "name": "has_custom_suggestions", "size": 1, "signed": false }, { "name": "has_redirect_node", "size": 1, "signed": false }, { "name": "has_command", "size": 1, "signed": false }, { "name": "command_node_type", "size": 2, "signed": false } ] ] children: varint[]varint redirectNode: flags/has_redirect_node ? if 1: varint default: void extraNodeData: flags/command_node_type ? if 0: void if 1: name: string if 2: name: string parser: varint => - brigadier:bool - brigadier:float - brigadier:double - brigadier:integer - brigadier:long - brigadier:string - minecraft:entity - minecraft:game_profile - minecraft:block_pos - minecraft:column_pos - minecraft:vec3 - minecraft:vec2 - minecraft:block_state - minecraft:block_predicate - minecraft:item_stack - minecraft:item_predicate - minecraft:color - minecraft:component - minecraft:style - minecraft:message - minecraft:nbt - minecraft:nbt_tag - minecraft:nbt_path - minecraft:objective - minecraft:objective_criteria - minecraft:operation - minecraft:particle - minecraft:angle - minecraft:rotation - minecraft:scoreboard_slot - minecraft:score_holder - minecraft:swizzle - minecraft:team - minecraft:item_slot - minecraft:item_slots # 1.20.5 - minecraft:resource_location - minecraft:function - minecraft:entity_anchor - minecraft:int_range - minecraft:float_range - minecraft:dimension - minecraft:gamemode - minecraft:time - minecraft:resource_or_tag - minecraft:resource_or_tag_key - minecraft:resource - minecraft:resource_key - minecraft:template_mirror - minecraft:template_rotation - minecraft:heightmap - minecraft:loot_table # 1.20.5 - minecraft:loot_predicate # 1.20.5 - minecraft:loot_modifier # 1.20.5 - minecraft:uuid properties: parser ? if brigadier:bool: void if brigadier:float: flags: [ "bitfield", [ { "name": "unused", "size": 6, "signed": false }, { "name": "max_present", "size": 1, "signed": false }, { "name": "min_present", "size": 1, "signed": false } ] ] min: flags/min_present ? if 1: f32 default: void max: flags/max_present ? if 1: f32 default: void if brigadier:double: flags: [ "bitfield", [ { "name": "unused", "size": 6, "signed": false }, { "name": "max_present", "size": 1, "signed": false }, { "name": "min_present", "size": 1, "signed": false } ] ] min: flags/min_present ? if 1: f64 default: void max: flags/max_present ? if 1: f64 default: void if brigadier:integer: flags: [ "bitfield", [ { "name": "unused", "size": 6, "signed": false }, { "name": "max_present", "size": 1, "signed": false }, { "name": "min_present", "size": 1, "signed": false } ] ] min: flags/min_present ? if 1: i32 default: void max: flags/max_present ? if 1: i32 default: void if brigadier:long: flags: [ "bitfield", [ { "name": "unused", "size": 6, "signed": false }, { "name": "max_present", "size": 1, "signed": false }, { "name": "min_present", "size": 1, "signed": false } ] ] min: flags/min_present ? if 1: i64 default: void max: flags/max_present ? if 1: i64 default: void if brigadier:string: varint => 0: SINGLE_WORD 1: QUOTABLE_PHRASE 2: GREEDY_PHRASE if minecraft:entity: [ "bitfield", [ { "name": "unused", "size": 6, "signed": false }, { "name": "onlyAllowPlayers", "size": 1, "signed": false }, { "name": "onlyAllowEntities", "size": 1, "signed": false } ] ] if minecraft:game_profile: void if minecraft:block_pos: void if minecraft:column_pos: void if minecraft:vec3: void if minecraft:vec2: void if minecraft:block_state: void if minecraft:block_predicate: void if minecraft:item_stack: void if minecraft:item_predicate: void if minecraft:color: void if minecraft:component: void if minecraft:message: void if minecraft:nbt: void if minecraft:nbt_path: void if minecraft:objective: void if minecraft:objective_criteria: void if minecraft:operation: void if minecraft:particle: void if minecraft:angle: void if minecraft:rotation: void if minecraft:scoreboard_slot: void if minecraft:score_holder: [ "bitfield", [ { "name": "unused", "size": 7, "signed": false }, { "name": "allowMultiple", "size": 1, "signed": false } ] ] if minecraft:swizzle: void if minecraft:team: void if minecraft:item_slot: void if minecraft:resource_location: void if minecraft:function: void if minecraft:entity_anchor: void if minecraft:int_range: void if minecraft:float_range: void if minecraft:dimension: void if minecraft:gamemode: void if minecraft:time: min: i32 if minecraft:resource_or_tag: registry: string if minecraft:resource_or_tag_key: registry: string if minecraft:resource: registry: string if minecraft:resource_key: registry: string if minecraft:template_mirror: void if minecraft:template_rotation: void if minecraft:heightmap: void if minecraft:uuid: void suggestionType: ../flags/has_custom_suggestions ? if 1: string default: void # # Shared Packets # These are packets that are shared between multiple states. # They are defined here to avoid duplication. # ===== # MC: ServerboundClientInformationPacket packet_common_settings: locale: string viewDistance: i8 chatFlags: varint chatColors: bool skinParts: u8 mainHand: varint enableTextFiltering: bool enableServerListing: bool # MC: ClientboundCookieRequestPacket packet_common_cookie_request: cookie: string # MC: ClientboundStoreCookiePacket packet_common_store_cookie: key: string value: ByteArray # MC: ClientboundTransferPacket packet_common_transfer: host: string port: varint # MC: ServerboundCookieResponsePacket packet_common_cookie_response: key: string value?: ByteArray # MC: ServerboundSelectKnownPacks # MC: ClientboundSelectKnownPacks packet_common_select_known_packs: packs: []varint namespace: string id: string version: string # MC: ClientboundResourcePackPopPacket packet_common_remove_resource_pack: uuid?: UUID # MC: ClientboundResourcePackPushPacket packet_common_add_resource_pack: uuid: UUID url: string hash: string forced: bool promptMessage?: anonymousNbt # MC: ClientboundCustomReportDetailsPacket packet_common_custom_report_details: # 1.21.1 details: []varint key: string value: string ServerLinkType: varint => - bug_report - community_guidelines - support - status - feedback - community - website - forums - news - announcements # MC: ClientboundServerLinksPacket # This packet contains a list of links that the Notchian client will display in the menu # available from the pause menu. Link labels can be built-in or custom (i.e., any text). packet_common_server_links: links: []varint hasKnownType: bool knownType: hasKnownType ? if true: ServerLinkType unknownType: hasKnownType ? if false: anonymousNbt link: string ^handshaking.toClient.types: packet: name: varint => params: ["switch",{"compareTo":"name","fields":{}}] ^handshaking.toServer.types: packet_set_protocol: protocolVersion: varint serverHost: string serverPort: u16 nextState: varint packet_legacy_server_list_ping: payload: u8 packet: name: varint => 0x00: set_protocol 0xfe: legacy_server_list_ping params: name ? if set_protocol: packet_set_protocol if legacy_server_list_ping: packet_legacy_server_list_ping ^status.toClient.types: # MC: ClientboundStatusResponsePacket packet_server_info: response: string # MC: ClientboundPongResponsePacket packet_ping: time: i64 packet: name: varint => 0x00: server_info 0x01: ping params: name ? if server_info: packet_server_info if ping: packet_ping ^status.toServer.types: # MC: ServerboundStatusRequestPacket packet_ping_start: # Empty # MC: ServerboundPingRequestPacket packet_ping: time: i64 packet: name: varint => 0x00: ping_start 0x01: ping params: name ? if ping_start: packet_ping_start if ping: packet_ping ^login.toClient.types: # MC: ClientboundLoginDisconnectPacket packet_disconnect: reason: string # MC: ClientboundHelloPacket packet_encryption_begin: serverId: string publicKey: [ "buffer", { "countType": "varint" } ] verifyToken: [ "buffer", { "countType": "varint" } ] shouldAuthenticate: bool # MC: ClientboundGameProfilePacket packet_success: uuid: UUID username: string properties: []varint name: string value: string signature?: string strictErrorHandling: bool # MC: ClientboundLoginCompressionPacket packet_compress: threshold: varint # MC: ClientboundCustomQueryPacket packet_login_plugin_request: messageId: varint channel: string data: restBuffer ## (Cookie Request is Common) ## packet: name: varint => - disconnect - encryption_begin - success - compress - login_plugin_request - cookie_request params: name ? if disconnect: packet_disconnect if encryption_begin: packet_encryption_begin if success: packet_success if compress: packet_compress if login_plugin_request: packet_login_plugin_request if cookie_request: packet_common_cookie_request ^login.toServer.types: # MC: ServerboundHelloPacket packet_login_start: username: string playerUUID: UUID # MC: ServerboundKeyPacket packet_encryption_begin: sharedSecret: [ "buffer", { "countType": "varint" } ] verifyToken: [ "buffer", { "countType": "varint" } ] # MC: ServerboundCustomQueryAnswerPacket packet_login_plugin_response: messageId: varint data?: restBuffer # MC: ServerboundLoginAcknowledgedPacket packet_login_acknowledged: # Empty ## (Cookie Response is Common) ## packet: name: varint => - login_start - encryption_begin - login_plugin_response - login_acknowledged - cookie_response params: name ? if login_start: packet_login_start if encryption_begin: packet_encryption_begin if login_plugin_response: packet_login_plugin_response if login_acknowledged: packet_login_acknowledged if cookie_response: packet_common_cookie_response ^configuration.toClient.types: ## (Cookie Request is common) # MC: ClientboundCustomPayloadPacket packet_custom_payload: channel: string data: restBuffer # MC: ClientboundDisconnectPacket packet_disconnect: reason: anonymousNbt # MC: ClientboundFinishConfigurationPacket packet_finish_configuration: # Empty # MC: ClientboundKeepAlivePacket packet_keep_alive: keepAliveId: i64 # MC: ClientboundPingPacket packet_ping: id: i32 # MC: ClientboundResetChatPacket packet_reset_chat: # Empty # MC: ClientboundRegistryDataPacket packet_registry_data: # The server can send multiple registries id: string entries: []varint key: string value?: anonymousNbt ## (Store cookie and Transfer are Common) ## # MC: ClientboundUpdateEnabledFeaturesPacket packet_feature_flags: features: string[]varint # MC: ClientboundUpdateTagsPacket packet_tags: tags: []varint tagType: string tags: tags ## (Select known packs is common) packet: name: varint => - cookie_request - custom_payload - disconnect - finish_configuration - keep_alive - ping - reset_chat - registry_data - remove_resource_pack - add_resource_pack - store_cookie - transfer - feature_flags - tags - select_known_packs - custom_report_details - server_links params: name ? if cookie_request: packet_common_cookie_request if custom_payload: packet_custom_payload if disconnect: packet_disconnect if finish_configuration: packet_finish_configuration if keep_alive: packet_keep_alive if ping: packet_ping if reset_chat: packet_reset_chat if registry_data: packet_registry_data if remove_resource_pack: packet_common_remove_resource_pack if add_resource_pack: packet_common_add_resource_pack if store_cookie: packet_common_store_cookie if transfer: packet_common_transfer if feature_flags: packet_feature_flags if tags: packet_tags if select_known_packs: packet_common_select_known_packs if custom_report_details: packet_common_custom_report_details if server_links: packet_common_server_links ^configuration.toServer.types: ## (Settings is Common) ## ## (Cookie Response is Common) ## # MC: ServerboundCustomPayloadPacket packet_custom_payload: channel: string data: restBuffer # MC: ServerboundFinishConfigurationPacket packet_finish_configuration: # Empty # MC: ServerboundKeepAlivePacket packet_keep_alive: keepAliveId: i64 # MC: ServerboundPongPacket packet_pong: id: i32 # MC: ServerboundResourcePackPacket packet_resource_pack_receive: uuid: UUID result: varint packet: name: varint => - settings - cookie_response - custom_payload - finish_configuration - keep_alive - pong - resource_pack_receive - select_known_packs - custom_report_details - server_links params: name ? if settings: packet_common_settings if cookie_response: packet_common_cookie_response if custom_payload: packet_custom_payload if finish_configuration: packet_finish_configuration if keep_alive: packet_keep_alive if pong: packet_pong if resource_pack_receive: packet_resource_pack_receive if select_known_packs: packet_common_select_known_packs if custom_report_details: packet_common_custom_report_details if server_links: packet_common_server_links ^play.toClient.types: # World state information for spawn and respawn packets SpawnInfo: dimension: varint name: string hashedSeed: i64 gamemode: i8 => - survival - creative - adventure - spectator previousGamemode: u8 isDebug: bool isFlat: bool death?: dimensionName: string location: position portalCooldown: varint # MC: ClientboundAddEntityPacket packet_spawn_entity: entityId: varint objectUUID: UUID type: varint x: f64 y: f64 z: f64 pitch: i8 yaw: i8 headPitch: i8 objectData: varint velocity: vec3i16 # MC: ClientboundAddExperienceOrbPacket packet_spawn_entity_experience_orb: entityId: varint x: f64 y: f64 z: f64 count: i16 # MC: ClientboundAnimatePacket packet_animation: entityId: varint animation: u8 # MC: ClientboundAwardStatsPacket packet_statistics: entries: []varint categoryId: varint statisticId: varint value: varint # MC: ClientboundBlockChangedAckPacket packet_acknowledge_player_digging: sequenceId: varint # MC: ClientboundBlockDestructionPacket packet_block_break_animation: entityId: varint location: position destroyStage: i8 # MC: ClientboundBlockEntityDataPacket packet_tile_entity_data: location: position action: varint nbtData: anonOptionalNbt # MC: ClientboundBlockEventPacket packet_block_action: location: position byte1: u8 byte2: u8 blockId: varint # MC: ClientboundBlockUpdatePacket packet_block_change: location: position type: varint # MC: ClientboundBossEventPacket packet_boss_bar: entityUUID: UUID action: varint title: action ? if 0: anonymousNbt if 3: anonymousNbt default: void health: action ? if 0: f32 if 2: f32 default: void color: action ? if 0: varint if 4: varint default: void dividers: action ? if 0: varint if 4: varint default: void flags: action ? if 0: u8 if 5: u8 default: void # MC: ClientboundChangeDifficultyPacket packet_difficulty: difficulty: u8 difficultyLocked: bool # MC: ClientboundChunkBatchFinishedPacket packet_chunk_batch_finished: batchSize: varint # MC: ClientboundChunkBatchStartPacket packet_chunk_batch_start: # Empty # MC: ClientboundChunksBiomesPacket packet_chunk_biomes: biomes: []varint position: packedChunkPos data: ByteArray # MC: ClientboundClearTitlesPacket packet_clear_titles: reset: bool # MC: ClientboundCommandSuggestionsPacket packet_tab_complete: transactionId: varint start: varint length: varint matches: []varint match: string tooltip?: anonymousNbt # MC: ClientboundCommandsPacket packet_declare_commands: nodes: command_node[]varint rootIndex: varint # MC: ClientboundContainerClosePacket packet_close_window: windowId: ContainerID # MC: ClientboundContainerSetContentPacket packet_window_items: windowId: ContainerID stateId: varint items: Slot[]varint carriedItem: Slot # MC: ClientboundContainerSetDataPacket packet_craft_progress_bar: windowId: ContainerID property: i16 value: i16 # MC: ClientboundContainerSetSlotPacket packet_set_slot: windowId: ContainerID stateId: varint slot: i16 item: Slot ## (Cookie Request is Common) # MC: ClientboundCooldownPacket packet_set_cooldown: itemID: varint cooldownTicks: varint # MC: ClientboundCustomChatCompletionsPacket packet_chat_suggestions: action: varint entries: string[]varint # MC: ClientboundCustomPayloadPacket packet_custom_payload: channel: string data: restBuffer # MC: ClientboundDamageEventPacket packet_damage_event: entityId: varint sourceTypeId: varint sourceCauseId: varint sourceDirectId: varint sourcePosition?: vec3f64 # MC: ClientboundDebugSamplePacket packet_debug_sample: sample: i64[]varint type: varint # MC: ClientboundDeleteChatPacket packet_hide_message: id: varint signature: id ? if 0: [ "buffer", { "count": 256 } ] default: void # MC: ClientboundDisconnectPacket packet_kick_disconnect: reason: anonymousNbt ## client\net\minecraft\network\chat\ChatTypeDecoration.java ## via client\net\minecraft\network\chat\ChatType.java ChatTypeParameterType: varint => - content - sender - target ChatType: translationKey: string parameters: ChatTypeParameterType[]varint style: anonymousNbt ChatTypes: chat: ChatType narration: ChatType ChatTypesHolder: ["registryEntryHolder", { "baseName": "chatType", "otherwise": { name: "data", type: "ChatTypes" } }] # MC: ClientboundDisguisedChatPacket packet_profileless_chat: message: anonymousNbt type: ChatTypesHolder name: anonymousNbt target?: anonymousNbt # MC: ClientboundEntityEventPacket packet_entity_status: entityId: i32 entityStatus: i8 # MC: ClientboundExplodePacket packet_explosion: x: f64 y: f64 z: f64 radius: f32 affectedBlockOffsets: []varint x: i8 y: i8 z: i8 playerMotionX: f32 playerMotionY: f32 playerMotionZ: f32 block_interaction_type: varint small_explosion_particle: Particle large_explosion_particle: Particle sound: ItemSoundHolder # MC: ClientboundForgetLevelChunkPacket packet_unload_chunk: chunkZ: i32 chunkX: i32 # MC: ClientboundGameEventPacket packet_game_state_change: reason: u8 gameMode: f32 # MC: ClientboundHorseScreenOpenPacket packet_open_horse_window: windowId: ContainerID nbSlots: varint entityId: i32 # MC: ClientboundHurtAnimationPacket packet_hurt_animation: entityId: varint yaw: f32 # MC: ClientboundInitializeBorderPacket packet_initialize_world_border: x: f64 z: f64 oldDiameter: f64 newDiameter: f64 speed: varint portalTeleportBoundary: varint warningBlocks: varint warningTime: varint # MC: ClientboundKeepAlivePacket packet_keep_alive: keepAliveId: i64 # MC: ClientboundLevelChunkWithLightPacket packet_map_chunk: x: i32 z: i32 heightmaps: anonymousNbt chunkData: [ "buffer", { "countType": "varint" } ] blockEntities: chunkBlockEntity[]varint skyLightMask: i64[]varint blockLightMask: i64[]varint emptySkyLightMask: i64[]varint emptyBlockLightMask: i64[]varint skyLight: []varint _: u8[]varint blockLight: []varint _: u8[]varint # MC: ClientboundLevelEventPacket packet_world_event: effectId: i32 location: position data: i32 global: bool # MC: ClientboundLevelParticlesPacket packet_world_particles: longDistance: bool x: f64 y: f64 z: f64 offsetX: f32 offsetY: f32 offsetZ: f32 velocityOffset: f32 amount: i32 particle: Particle # MC: ClientboundLightUpdatePacket packet_update_light: chunkX: varint chunkZ: varint skyLightMask: i64[]varint blockLightMask: i64[]varint emptySkyLightMask: i64[]varint emptyBlockLightMask: i64[]varint skyLight: []varint _: u8[]varint blockLight: []varint _: u8[]varint # MC: ClientboundLoginPacket packet_login: entityId: i32 isHardcore: bool worldNames: string[]varint maxPlayers: varint viewDistance: varint simulationDistance: varint reducedDebugInfo: bool enableRespawnScreen: bool doLimitedCrafting: bool worldState: SpawnInfo enforcesSecureChat: bool # MC: ClientboundMapItemDataPacket packet_map: itemDamage: varint scale: i8 locked: bool icons?: []varint type: varint x: i8 z: i8 direction: u8 displayName?: anonymousNbt columns: u8 rows: columns ? if 0: void default: u8 x: columns ? if 0: void default: u8 y: columns ? if 0: void default: u8 data: columns ? if 0: void default: [ "buffer", { "countType": "varint" } ] # MC: ClientboundMerchantOffersPacket packet_trade_list: windowId: ContainerID ## https://github.com/extremeheat/extracted_minecraft_data/blob/client1.20.5/client/net/minecraft/world/item/trading/MerchantOffer.java#L210 trades: []varint inputItem1: itemId: varint itemCount: varint addedComponentCount: varint components: SlotComponent[]$addedComponentCount outputItem: Slot inputItem2?: itemId: varint itemCount: varint addedComponentCount: varint components: SlotComponent[]$addedComponentCount tradeDisabled: bool nbTradeUses: i32 maximumNbTradeUses: i32 xp: i32 specialPrice: i32 priceMultiplier: f32 demand: i32 villagerLevel: varint experience: varint isRegularVillager: bool canRestock: bool # MC: ClientboundMoveEntityPacket.Pos packet_rel_entity_move: entityId: varint dX: i16 dY: i16 dZ: i16 onGround: bool # MC: ClientboundMoveEntityPacket.PosRot packet_entity_move_look: entityId: varint dX: i16 dY: i16 dZ: i16 yaw: i8 pitch: i8 onGround: bool # MC: ClientboundMoveEntityPacket.Rot packet_entity_look: entityId: varint yaw: i8 pitch: i8 onGround: bool # MC: ClientboundMoveVehiclePacket packet_vehicle_move: x: f64 y: f64 z: f64 yaw: f32 pitch: f32 # MC: ClientboundOpenBookPacket packet_open_book: hand: varint # MC: ClientboundOpenScreenPacket packet_open_window: windowId: varint inventoryType: varint windowTitle: anonymousNbt # MC: ClientboundOpenSignEditorPacket packet_open_sign_entity: location: position isFrontText: bool # MC: ClientboundPingPacket packet_ping: id: i32 # MC: ClientboundPongResponsePacket packet_ping_response: id: i64 # MC: ClientboundPlaceGhostRecipePacket packet_craft_recipe_response: windowId: ContainerID recipe: string # MC: ClientboundPlayerAbilitiesPacket packet_abilities: flags: i8 flyingSpeed: f32 walkingSpeed: f32 # MC: ClientboundPlayerChatPacket packet_player_chat: senderUuid: UUID index: varint signature?: [ "buffer", { "count": 256 } ] plainMessage: string timestamp: i64 salt: i64 previousMessages: previousMessages unsignedChatContent?: anonymousNbt filterType: varint filterTypeMask: filterType ? if 2: i64[]varint default: void type: ChatTypesHolder networkName: anonymousNbt networkTargetName?: anonymousNbt # MC: ClientboundPlayerCombatEndPacket packet_end_combat_event: duration: varint # MC: ClientboundPlayerCombatEnterPacket packet_enter_combat_event: # Empty # MC: ClientboundPlayerCombatKillPacket packet_death_combat_event: playerId: varint message: anonymousNbt # MC: ClientboundPlayerInfoRemovePacket packet_player_remove: players: UUID[]varint # MC: ClientboundPlayerInfoUpdatePacket packet_player_info: ## ClientboundPlayerInfoUpdatePacket.java#L160 action: ["bitflags", { "type": "u8", "flags": [ "add_player", "initialize_chat", "update_game_mode", "update_listed", "update_latency", "update_display_name" ] }] data: []varint uuid: UUID player: ../action/add_player ? if true: game_profile default: void chatSession: ../action/initialize_chat ? if true: chat_session default: void gamemode: ../action/update_game_mode ? if true: varint default: void listed: ../action/update_listed ? if true: varint default: void latency: ../action/update_latency ? if true: varint default: void displayName: ../action/update_display_name ? if true: ["option", "anonymousNbt"] default: void # MC: ClientboundPlayerLookAtPacket packet_face_player: feet_eyes: varint x: f64 y: f64 z: f64 isEntity: bool entityId: isEntity ? if true: varint default: void entity_feet_eyes: isEntity ? if true: varint default: void # Relative.java PositionUpdateRelatives: ["bitflags", { "type": "u8", "flags": ["x", "y", "z", "yaw", "pitch"] }] # MC: ClientboundPlayerPositionPacket packet_position: x: f64 y: f64 z: f64 yaw: f32 pitch: f32 flags: PositionUpdateRelatives teleportId: varint # MC: ClientboundRecipePacket packet_unlock_recipes: action: varint craftingBookOpen: bool filteringCraftable: bool smeltingBookOpen: bool filteringSmeltable: bool blastFurnaceOpen: bool filteringBlastFurnace: bool smokerBookOpen: bool filteringSmoker: bool recipes1: string[]varint recipes2: action ? if 0: string[]varint default: void # MC: ClientboundRemoveEntitiesPacket packet_entity_destroy: entityIds: varint[]varint # MC: ClientboundRemoveMobEffectPacket packet_remove_entity_effect: entityId: varint effectId: varint # MC: ClientboundResetScorePacket packet_reset_score: entity_name: string objective_name?: string # MC: ClientboundRespawnPacket packet_respawn: worldState: SpawnInfo # Bit field: 0b1 - KEEP_ATTRIBUTE_MODIFIERS, 0b10 - KEEP_ENTITY_DATA copyMetadata: u8 # MC: ClientboundRotateHeadPacket packet_entity_head_rotation: entityId: varint headYaw: i8 # MC: ClientboundSectionBlocksUpdatePacket packet_multi_block_change: chunkCoordinates: [ "bitfield", [ { "name": "x", "size": 22, "signed": true }, { "name": "z", "size": 22, "signed": true }, { "name": "y", "size": 20, "signed": true } ]] records: varint[]varint # MC: ClientboundSelectAdvancementsTabPacket packet_select_advancement_tab: id?: string # MC: ClientboundServerDataPacket packet_server_data: motd: anonymousNbt iconBytes?: ByteArray # MC: ClientboundSetActionBarTextPacket packet_action_bar: text: anonymousNbt # MC: ClientboundSetBorderCenterPacket packet_world_border_center: x: f64 z: f64 # MC: ClientboundSetBorderLerpSizePacket packet_world_border_lerp_size: oldDiameter: f64 newDiameter: f64 speed: varint # MC: ClientboundSetBorderSizePacket packet_world_border_size: diameter: f64 # MC: ClientboundSetBorderWarningDelayPacket packet_world_border_warning_delay: warningTime: varint # MC: ClientboundSetBorderWarningDistancePacket packet_world_border_warning_reach: warningBlocks: varint # MC: ClientboundSetCameraPacket packet_camera: cameraId: varint # MC: ClientboundSetCarriedItemPacket packet_held_item_slot: slot: i8 # MC: ClientboundSetChunkCacheCenterPacket packet_update_view_position: chunkX: varint chunkZ: varint # MC: ClientboundSetChunkCacheRadiusPacket packet_update_view_distance: viewDistance: varint # MC: ClientboundSetDefaultSpawnPositionPacket packet_spawn_position: location: position angle: f32 # MC: ClientboundSetDisplayObjectivePacket packet_scoreboard_display_objective: position: varint name: string # MC: ClientboundSetEntityDataPacket packet_entity_metadata: entityId: varint metadata: entityMetadata # MC: ClientboundSetEntityLinkPacket packet_attach_entity: entityId: i32 vehicleId: i32 # MC: ClientboundSetEntityMotionPacket packet_entity_velocity: entityId: varint velocity: vec3i16 # MC: ClientboundSetEquipmentPacket packet_entity_equipment: entityId: varint equipments: [ "topBitSetTerminatedArray", { "type": [ "container", [ { "name": "slot", "type": "i8" }, { "name": "item", "type": "Slot" } ] ] } ] # MC: ClientboundSetExperiencePacket packet_experience: experienceBar: f32 level: varint totalExperience: varint # MC: ClientboundSetHealthPacket packet_update_health: health: f32 food: varint foodSaturation: f32 # MC: ClientboundSetObjectivePacket packet_scoreboard_objective: name: string action: i8 displayText: action ? if 0: anonymousNbt if 2: anonymousNbt default: void type: action ? if 0: varint if 2: varint default: void number_format: action ? if 0: [ "option", "varint" ] if 2: [ "option", "varint" ] default: void styling: action ? if 0: number_format ? if 1: anonymousNbt if 2: anonymousNbt default: void if 2: number_format ? if 1: anonymousNbt if 2: anonymousNbt default: void default: void # MC: ClientboundSetPassengersPacket packet_set_passengers: entityId: varint passengers: varint[]varint # MC: ClientboundSetPlayerTeamPacket packet_teams: team: string mode: i8 name: mode ? if 0: anonymousNbt if 2: anonymousNbt default: void friendlyFire: mode ? if 0: i8 if 2: i8 default: void nameTagVisibility: mode ? if 0: string if 2: string default: void collisionRule: mode ? if 0: string if 2: string default: void formatting: mode ? if 0: varint if 2: varint default: void prefix: mode ? if 0: anonymousNbt if 2: anonymousNbt default: void suffix: mode ? if 0: anonymousNbt if 2: anonymousNbt default: void players: mode ? if 0: string[]varint if 3: string[]varint if 4: string[]varint default: void # MC: ClientboundSetScorePacket packet_scoreboard_score: itemName: string scoreName: string value: varint display_name?: anonymousNbt number_format?: varint styling: number_format ? if 1: anonymousNbt if 2: anonymousNbt default: void # MC: ClientboundSetSimulationDistancePacket packet_simulation_distance: distance: varint # MC: ClientboundSetSubtitleTextPacket packet_set_title_subtitle: text: anonymousNbt # MC: ClientboundSetTimePacket packet_update_time: age: i64 time: i64 # MC: ClientboundSetTitleTextPacket packet_set_title_text: text: anonymousNbt # MC: ClientboundSetTitlesAnimationPacket packet_set_title_time: fadeIn: i32 stay: i32 fadeOut: i32 # MC: ClientboundSoundEntityPacket packet_entity_sound_effect: sound: ItemSoundHolder soundCategory: soundSource entityId: varint volume: f32 pitch: f32 seed: i64 # MC: ClientboundSoundPacket packet_sound_effect: sound: ItemSoundHolder soundCategory: soundSource x: i32 y: i32 z: i32 volume: f32 pitch: f32 seed: i64 # MC: ClientboundStartConfigurationPacket packet_start_configuration: # Empty # MC: ClientboundStopSoundPacket packet_stop_sound: flags: i8 source: flags ? if 1: varint if 3: varint default: void sound: flags ? if 2: string if 3: string default: void ## (Store Cookie is Common) # MC: ClientboundSystemChatPacket packet_system_chat: content: anonymousNbt isActionBar: bool # MC: ClientboundTabListPacket packet_playerlist_header: header: anonymousNbt footer: anonymousNbt # MC: ClientboundTagQueryPacket packet_nbt_query_response: transactionId: varint nbt: anonOptionalNbt # MC: ClientboundTakeItemEntityPacket packet_collect: collectedEntityId: varint collectorEntityId: varint pickupItemCount: varint # MC: ClientboundTeleportEntityPacket packet_entity_teleport: entityId: varint x: f64 y: f64 z: f64 yaw: i8 pitch: i8 onGround: bool # MC: ClientboundTickingStatePacket packet_set_ticking_state: tick_rate: f32 is_frozen: bool # MC: ClientboundTickingStepPacket packet_step_tick: tick_steps: varint ## (Transfer is common) # MC: ClientboundUpdateAdvancementsPacket packet_advancements: reset: bool advancementMapping: []varint key: string value: parentId?: string displayData?: title: anonymousNbt description: anonymousNbt icon: Slot frameType: varint flags: ["bitfield", [ { "name": "unused", "size": 29, "signed": false }, { "name": "hidden", "size": 1, "signed": false }, { "name": "show_toast", "size": 1, "signed": false }, { "name": "has_background_texture", "size": 1, "signed": false } ]] backgroundTexture: flags/has_background_texture ? if 1: string default: void xCord: f32 yCord: f32 requirements: []varint _: string[]varint sendsTelemtryData: bool identifiers: string[]varint progressMapping: []varint key: string value: []varint criterionIdentifier: string criterionProgress?: i64 # MC: ClientboundUpdateAttributesPacket packet_entity_update_attributes: entityId: varint properties: []varint key: varint => - generic.armor - generic.armor_toughness - generic.attack_damage - generic.attack_knockback - generic.attack_speed - player.block_break_speed - player.block_interaction_range - player.entity_interaction_range - generic.fall_damage_multiplier - generic.flying_speed - generic.follow_range - generic.gravity - generic.jump_strength - generic.knockback_resistance - generic.luck - generic.max_absorption - generic.max_health - generic.movement_speed - generic.safe_fall_distance - generic.scale - zombie.spawn_reinforcements - generic.step_height value: f64 modifiers: []varint uuid: string amount: f64 operation: i8 # MC: ClientboundUpdateMobEffectPacket packet_entity_effect: entityId: varint effectId: varint amplifier: varint duration: varint # a bitfield of 0x01 for ambient, 0x02 for show particles # flags: ["bitfield", [ # { "name": "unused", "size": 4 }, # { "name": "ambient", "size": 1 }, # { "name": "showParticles", "size": 1 }, # { "name": "showIcon", "size": 1 }, # { "name": "blend", "size": 1 } # ]] flags: u8 # MC: ClientboundUpdateRecipesPacket packet_declare_recipes: recipes: []varint name: string type: varint => - minecraft:crafting_shaped - minecraft:crafting_shapeless - minecraft:crafting_special_armordye - minecraft:crafting_special_bookcloning - minecraft:crafting_special_mapcloning - minecraft:crafting_special_mapextending - minecraft:crafting_special_firework_rocket - minecraft:crafting_special_firework_star - minecraft:crafting_special_firework_star_fade - minecraft:crafting_special_tippedarrow - minecraft:crafting_special_bannerduplicate - minecraft:crafting_special_shielddecoration - minecraft:crafting_special_shulkerboxcoloring - minecraft:crafting_special_suspiciousstew - minecraft:crafting_special_repairitem - minecraft:smelting - minecraft:blasting - minecraft:smoking - minecraft:campfire_cooking - minecraft:stonecutting - minecraft:smithing_transform - minecraft:smithing_trim - minecraft:crafting_decorated_pot data: type ? if minecraft:crafting_shapeless: group: string category: varint ingredients: ingredient[]varint result: Slot if minecraft:crafting_shaped: group: string category: varint gridWidth: varint gridHeight: varint ingredients: []$gridWidth _: ingredient[]$gridHeight result: Slot showNotification: bool if minecraft:crafting_special_armordye: minecraft_simple_recipe_format if minecraft:crafting_special_bookcloning: minecraft_simple_recipe_format if minecraft:crafting_special_mapcloning: minecraft_simple_recipe_format if minecraft:crafting_special_mapextending: minecraft_simple_recipe_format if minecraft:crafting_special_firework_rocket: minecraft_simple_recipe_format if minecraft:crafting_special_firework_star: minecraft_simple_recipe_format if minecraft:crafting_special_firework_star_fade: minecraft_simple_recipe_format if minecraft:crafting_special_repairitem: minecraft_simple_recipe_format if minecraft:crafting_special_tippedarrow: minecraft_simple_recipe_format if minecraft:crafting_special_bannerduplicate: minecraft_simple_recipe_format if minecraft:crafting_special_banneraddpattern: minecraft_simple_recipe_format if minecraft:crafting_special_shielddecoration: minecraft_simple_recipe_format if minecraft:crafting_special_shulkerboxcoloring: minecraft_simple_recipe_format if minecraft:crafting_special_suspiciousstew: minecraft_simple_recipe_format if minecraft:smelting: minecraft_smelting_format if minecraft:blasting: minecraft_smelting_format if minecraft:smoking: minecraft_smelting_format if minecraft:campfire_cooking: minecraft_smelting_format if minecraft:stonecutting: group: string ingredient: ingredient result: Slot if minecraft:smithing_transform: template: ingredient base: ingredient addition: ingredient result: Slot if minecraft:smithing_trim: template: ingredient base: ingredient addition: ingredient if minecraft:crafting_decorated_pot: minecraft_simple_recipe_format # MC: ClientboundUpdateTagsPacket packet_tags: tags: []varint tagType: string tags: tags # MC: ClientboundProjectilePowerPacket packet_set_projectile_power: id: varint accelerationPower: f64 packet: name: varint => - bundle_delimiter - spawn_entity - spawn_entity_experience_orb - animation - statistics - acknowledge_player_digging - block_break_animation - tile_entity_data - block_action - block_change - boss_bar - difficulty - chunk_batch_finished - chunk_batch_start - chunk_biomes - clear_titles - tab_complete - declare_commands - close_window - window_items - craft_progress_bar - set_slot - cookie_request - set_cooldown - chat_suggestions - custom_payload - damage_event - debug_sample - hide_message - kick_disconnect - profileless_chat - entity_status - explosion - unload_chunk - game_state_change - open_horse_window - hurt_animation - initialize_world_border - keep_alive - map_chunk - world_event - world_particles - update_light - login - map - trade_list - rel_entity_move - entity_move_look - entity_look - vehicle_move - open_book - open_window - open_sign_entity - ping - ping_response - craft_recipe_response - abilities - player_chat - end_combat_event - enter_combat_event - death_combat_event - player_remove - player_info - face_player - position - unlock_recipes - entity_destroy - remove_entity_effect - reset_score - remove_resource_pack - add_resource_pack - respawn - entity_head_rotation - multi_block_change - select_advancement_tab - server_data - action_bar - world_border_center - world_border_lerp_size - world_border_size - world_border_warning_delay - world_border_warning_reach - camera - held_item_slot - update_view_position - update_view_distance - spawn_position - scoreboard_display_objective - entity_metadata - attach_entity - entity_velocity - entity_equipment - experience - update_health - scoreboard_objective - set_passengers - teams - scoreboard_score - simulation_distance - set_title_subtitle - update_time - set_title_text - set_title_time - entity_sound_effect - sound_effect - start_configuration - stop_sound - store_cookie - system_chat - playerlist_header - nbt_query_response - collect - entity_teleport - set_ticking_state - step_tick - transfer - advancements - entity_update_attributes - entity_effect - declare_recipes - tags - set_projectile_power - custom_report_details - server_links params: name ? if bundle_delimiter: void if spawn_entity: packet_spawn_entity if spawn_entity_experience_orb: packet_spawn_entity_experience_orb if animation: packet_animation if statistics: packet_statistics if acknowledge_player_digging: packet_acknowledge_player_digging if block_break_animation: packet_block_break_animation if tile_entity_data: packet_tile_entity_data if block_action: packet_block_action if block_change: packet_block_change if boss_bar: packet_boss_bar if difficulty: packet_difficulty if chunk_batch_finished: packet_chunk_batch_finished if chunk_batch_start: packet_chunk_batch_start if chunk_biomes: packet_chunk_biomes if clear_titles: packet_clear_titles if tab_complete: packet_tab_complete if declare_commands: packet_declare_commands if close_window: packet_close_window if window_items: packet_window_items if craft_progress_bar: packet_craft_progress_bar if set_slot: packet_set_slot if cookie_request: packet_common_cookie_request if set_cooldown: packet_set_cooldown if chat_suggestions: packet_chat_suggestions if custom_payload: packet_custom_payload if damage_event: packet_damage_event if debug_sample: packet_debug_sample if hide_message: packet_hide_message if kick_disconnect: packet_kick_disconnect if profileless_chat: packet_profileless_chat if entity_status: packet_entity_status if explosion: packet_explosion if unload_chunk: packet_unload_chunk if game_state_change: packet_game_state_change if open_horse_window: packet_open_horse_window if hurt_animation: packet_hurt_animation if initialize_world_border: packet_initialize_world_border if keep_alive: packet_keep_alive if map_chunk: packet_map_chunk if world_event: packet_world_event if world_particles: packet_world_particles if update_light: packet_update_light if login: packet_login if map: packet_map if trade_list: packet_trade_list if rel_entity_move: packet_rel_entity_move if entity_move_look: packet_entity_move_look if entity_look: packet_entity_look if vehicle_move: packet_vehicle_move if open_book: packet_open_book if open_window: packet_open_window if open_sign_entity: packet_open_sign_entity if ping: packet_ping if ping_response: packet_ping_response if craft_recipe_response: packet_craft_recipe_response if abilities: packet_abilities if player_chat: packet_player_chat if end_combat_event: packet_end_combat_event if enter_combat_event: packet_enter_combat_event if death_combat_event: packet_death_combat_event if player_remove: packet_player_remove if player_info: packet_player_info if face_player: packet_face_player if position: packet_position if unlock_recipes: packet_unlock_recipes if entity_destroy: packet_entity_destroy if remove_entity_effect: packet_remove_entity_effect if reset_score: packet_reset_score if remove_resource_pack: packet_common_remove_resource_pack if add_resource_pack: packet_common_add_resource_pack if respawn: packet_respawn if entity_head_rotation: packet_entity_head_rotation if multi_block_change: packet_multi_block_change if select_advancement_tab: packet_select_advancement_tab if server_data: packet_server_data if action_bar: packet_action_bar if world_border_center: packet_world_border_center if world_border_lerp_size: packet_world_border_lerp_size if world_border_size: packet_world_border_size if world_border_warning_delay: packet_world_border_warning_delay if world_border_warning_reach: packet_world_border_warning_reach if camera: packet_camera if held_item_slot: packet_held_item_slot if update_view_position: packet_update_view_position if update_view_distance: packet_update_view_distance if spawn_position: packet_spawn_position if scoreboard_display_objective: packet_scoreboard_display_objective if entity_metadata: packet_entity_metadata if attach_entity: packet_attach_entity if entity_velocity: packet_entity_velocity if entity_equipment: packet_entity_equipment if experience: packet_experience if update_health: packet_update_health if scoreboard_objective: packet_scoreboard_objective if set_passengers: packet_set_passengers if teams: packet_teams if scoreboard_score: packet_scoreboard_score if simulation_distance: packet_simulation_distance if set_title_subtitle: packet_set_title_subtitle if update_time: packet_update_time if set_title_text: packet_set_title_text if set_title_time: packet_set_title_time if entity_sound_effect: packet_entity_sound_effect if sound_effect: packet_sound_effect if start_configuration: packet_start_configuration if stop_sound: packet_stop_sound if store_cookie: packet_common_store_cookie if system_chat: packet_system_chat if playerlist_header: packet_playerlist_header if nbt_query_response: packet_nbt_query_response if collect: packet_collect if entity_teleport: packet_entity_teleport if set_ticking_state: packet_set_ticking_state if step_tick: packet_step_tick if transfer: packet_common_transfer if advancements: packet_advancements if entity_update_attributes: packet_entity_update_attributes if entity_effect: packet_entity_effect if declare_recipes: packet_declare_recipes if tags: packet_tags if set_projectile_power: packet_set_projectile_power if custom_report_details: packet_common_custom_report_details if server_links: packet_common_server_links ^play.toServer.types: # MC: ServerboundAcceptTeleportationPacket packet_teleport_confirm: teleportId: varint # MC: ServerboundBlockEntityTagQueryPacket packet_query_block_nbt: transactionId: varint location: position # MC: ServerboundChangeDifficultyPacket packet_set_difficulty: newDifficulty: u8 # MC: ServerboundChatAckPacket packet_message_acknowledgement: count: varint # MC: ServerboundChatCommandPacket packet_chat_command: command: string # MC: ServerboundChatCommandSignedPacket packet_chat_command_signed: command: string timestamp: i64 salt: i64 argumentSignatures: []varint argumentName: string signature: [ "buffer", { "count": 256 } ] messageCount: varint acknowledged: [ "buffer", { "count": 3 } ] # MC: ServerboundChatPacket packet_chat_message: message: string timestamp: i64 salt: i64 signature?: [ "buffer", { "count": 256 } ] offset: varint acknowledged: [ "buffer", { "count": 3 } ] # MC: ServerboundChatSessionUpdatePacket packet_chat_session_update: sessionUUID: UUID expireTime: i64 publicKey: ByteArray signature: ByteArray # MC: ServerboundChunkBatchReceivedPacket packet_chunk_batch_received: chunksPerTick: f32 # MC: ServerboundClientCommandPacket packet_client_command: actionId: varint # MC: ServerboundCommandSuggestionPacket packet_tab_complete: transactionId: varint text: string # MC: ServerboundConfigurationAcknowledgedPacket packet_configuration_acknowledged: # Empty # MC: ServerboundContainerButtonClickPacket packet_enchant_item: windowId: ContainerID enchantment: varint # MC: ServerboundContainerClickPacket packet_window_click: windowId: ContainerID stateId: varint slot: i16 mouseButton: i8 mode: varint changedSlots: []varint location: i16 item: Slot cursorItem: Slot # MC: ServerboundContainerClosePacket packet_close_window: windowId: ContainerID # MC: ServerboundContainerSlotStateChangedPacket packet_set_slot_state: slot_id: varint window_id: varint state: bool # MC: ServerboundCustomPayloadPacket packet_custom_payload: channel: string data: restBuffer # MC: ServerboundDebugSampleSubscriptionPacket packet_debug_sample_subscription: type: varint # MC: ServerboundEditBookPacket packet_edit_book: hand: varint pages: string[]varint title?: string # MC: ServerboundEntityTagQuery packet_query_entity_nbt: transactionId: varint entityId: varint # MC: ServerboundInteractPacket packet_use_entity: target: varint mouse: varint x: mouse ? if 2: f32 default: void y: mouse ? if 2: f32 default: void z: mouse ? if 2: f32 default: void hand: mouse ? if 0: varint if 2: varint default: void sneaking: bool # MC: ServerboundJigsawGeneratePacket packet_generate_structure: location: position levels: varint keepJigsaws: bool # MC: ServerboundKeepAlivePacket packet_keep_alive: keepAliveId: i64 # MC: ServerboundLockDifficultyPacket packet_lock_difficulty: locked: bool # MC: ServerboundMovePlayerPacket.Pos packet_position: x: f64 y: f64 z: f64 onGround: bool # MC: ServerboundMovePlayerPacket.PosRot packet_position_look: x: f64 y: f64 z: f64 yaw: f32 pitch: f32 onGround: bool # MC: ServerboundMovePlayerPacket.Rot packet_look: yaw: f32 pitch: f32 onGround: bool # MC: ServerboundMovePlayerPacket.StatusOnly packet_flying: onGround: bool # MC: ServerboundMoveVehiclePacket packet_vehicle_move: x: f64 y: f64 z: f64 yaw: f32 pitch: f32 # MC: ServerboundPaddleBoatPacket packet_steer_boat: leftPaddle: bool rightPaddle: bool # MC: ServerboundPickItemPacket packet_pick_item: slot: varint # MC: ServerboundPingRequestPacket packet_ping_request: id: i64 # MC: ServerboundPlaceRecipePacket packet_craft_recipe_request: windowId: ContainerID recipe: string makeAll: bool # MC: ServerboundPlayerAbilitiesPacket packet_abilities: flags: i8 # MC: ServerboundPlayerActionPacket packet_block_dig: status: varint location: position face: i8 sequence: varint # MC: ServerboundPlayerCommandPacket packet_entity_action: entityId: varint actionId: varint jumpBoost: varint # MC: ServerboundPlayerInputPacket packet_steer_vehicle: sideways: f32 forward: f32 jump: u8 # MC: ServerboundPongPacket packet_pong: id: i32 # MC: ServerboundRecipeBookChangeSettingsPacket packet_recipe_book: bookId: varint bookOpen: bool filterActive: bool # MC: ServerboundRecipeBookSeenRecipePacket packet_displayed_recipe: recipeId: string # MC: ServerboundRenameItemPacket packet_name_item: name: string # MC: ServerboundResourcePackPacket packet_resource_pack_receive: uuid: UUID result: varint # MC: ServerboundSeenAdvancementsPacket packet_advancement_tab: action: varint tabId: action ? if 0: string if 1: void # MC: ServerboundSelectTradePacket packet_select_trade: slot: varint # MC: ServerboundSetBeaconPacket packet_set_beacon_effect: primary_effect?: varint secondary_effect?: varint # MC: ServerboundSetCarriedItemPacket packet_held_item_slot: slotId: i16 # MC: ServerboundSetCommandBlockPacket packet_update_command_block: location: position command: string mode: varint flags: u8 # MC: ServerboundSetCommandMinecartPacket packet_update_command_block_minecart: entityId: varint command: string track_output: bool # MC: ServerboundSetCreativeModeSlotPacket packet_set_creative_slot: slot: i16 item: Slot # MC: ServerboundSetJigsawBlockPacket packet_update_jigsaw_block: location: position name: string target: string pool: string finalState: string jointType: string selection_priority: varint placement_priority: varint # MC: ServerboundSetStructureBlockPacket packet_update_structure_block: location: position action: varint mode: varint name: string offset_x: i8 offset_y: i8 offset_z: i8 size_x: i8 size_y: i8 size_z: i8 mirror: varint rotation: varint metadata: string integrity: f32 seed: varint flags: u8 # MC: ServerboundSignUpdatePacket packet_update_sign: location: position isFrontText: bool text1: string text2: string text3: string text4: string # MC: ServerboundSwingPacket packet_arm_animation: hand: varint # MC: ServerboundTeleportToEntityPacket packet_spectate: target: UUID # MC: ServerboundUseItemOnPacket packet_block_place: hand: varint location: position direction: varint cursorX: f32 cursorY: f32 cursorZ: f32 insideBlock: bool sequence: varint # MC: ServerboundUseItemPacket packet_use_item: hand: varint sequence: varint rotation: vec2f packet: name: varint => - teleport_confirm - query_block_nbt - set_difficulty - message_acknowledgement - chat_command - chat_command_signed - chat_message - chat_session_update - chunk_batch_received - client_command - settings - tab_complete - configuration_acknowledged - enchant_item - window_click - close_window - set_slot_state - cookie_response - custom_payload - debug_sample_subscription - edit_book - query_entity_nbt - use_entity - generate_structure - keep_alive - lock_difficulty - position - position_look - look - flying - vehicle_move - steer_boat - pick_item - ping_request - craft_recipe_request - abilities - block_dig - entity_action - steer_vehicle - pong - recipe_book - displayed_recipe - name_item - resource_pack_receive - advancement_tab - select_trade - set_beacon_effect - held_item_slot - update_command_block - update_command_block_minecart - set_creative_slot - update_jigsaw_block - update_structure_block - update_sign - arm_animation - spectate - block_place - use_item params: name ? if teleport_confirm: packet_teleport_confirm if query_block_nbt: packet_query_block_nbt if set_difficulty: packet_set_difficulty if message_acknowledgement: packet_message_acknowledgement if chat_command: packet_chat_command if chat_command_signed: packet_chat_command_signed if chat_message: packet_chat_message if chat_session_update: packet_chat_session_update if chunk_batch_received: packet_chunk_batch_received if client_command: packet_client_command if settings: packet_common_settings if tab_complete: packet_tab_complete if configuration_acknowledged: packet_configuration_acknowledged if enchant_item: packet_enchant_item if window_click: packet_window_click if close_window: packet_close_window if set_slot_state: packet_set_slot_state if cookie_response: packet_common_cookie_response if custom_payload: packet_custom_payload if debug_sample_subscription: packet_debug_sample_subscription if edit_book: packet_edit_book if query_entity_nbt: packet_query_entity_nbt if use_entity: packet_use_entity if generate_structure: packet_generate_structure if keep_alive: packet_keep_alive if lock_difficulty: packet_lock_difficulty if position: packet_position if position_look: packet_position_look if look: packet_look if flying: packet_flying if vehicle_move: packet_vehicle_move if steer_boat: packet_steer_boat if pick_item: packet_pick_item if ping_request: packet_ping_request if craft_recipe_request: packet_craft_recipe_request if abilities: packet_abilities if block_dig: packet_block_dig if entity_action: packet_entity_action if steer_vehicle: packet_steer_vehicle if pong: packet_pong if recipe_book: packet_recipe_book if displayed_recipe: packet_displayed_recipe if name_item: packet_name_item if resource_pack_receive: packet_resource_pack_receive if advancement_tab: packet_advancement_tab if select_trade: packet_select_trade if set_beacon_effect: packet_set_beacon_effect if held_item_slot: packet_held_item_slot if update_command_block: packet_update_command_block if update_command_block_minecart: packet_update_command_block_minecart if set_creative_slot: packet_set_creative_slot if update_jigsaw_block: packet_update_jigsaw_block if update_structure_block: packet_update_structure_block if update_sign: packet_update_sign if arm_animation: packet_arm_animation if spectate: packet_spectate if block_place: packet_block_place if use_item: packet_use_item