minecraft-data 3.97.0 → 3.98.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/data.js +27 -0
  2. package/doc/history.md +4 -0
  3. package/index.d.ts +72 -63
  4. package/minecraft-data/.github/helper-bot/handleMcpcGeneratedArtifacts.js +109 -0
  5. package/minecraft-data/.github/helper-bot/index.js +77 -34
  6. package/minecraft-data/.github/helper-bot/package.json +11 -0
  7. package/minecraft-data/.github/workflows/handle-mcpc-generator.yml +36 -0
  8. package/minecraft-data/.github/workflows/update-helper.yml +3 -2
  9. package/minecraft-data/README.md +1 -1
  10. package/minecraft-data/data/bedrock/1.21.100/protocol.json +2 -2
  11. package/minecraft-data/data/dataPaths.json +28 -1
  12. package/minecraft-data/data/pc/1.21.6/proto.yml +3494 -0
  13. package/minecraft-data/data/pc/1.21.8/attributes.json +247 -0
  14. package/minecraft-data/data/pc/1.21.8/biomes.json +652 -0
  15. package/minecraft-data/data/pc/1.21.8/blockCollisionShapes.json +142541 -0
  16. package/minecraft-data/data/pc/1.21.8/blocks.json +41358 -0
  17. package/minecraft-data/data/pc/1.21.8/effects.json +236 -0
  18. package/minecraft-data/data/pc/1.21.8/enchantments.json +959 -0
  19. package/minecraft-data/data/pc/1.21.8/entities.json +4176 -0
  20. package/minecraft-data/data/pc/1.21.8/foods.json +402 -0
  21. package/minecraft-data/data/pc/1.21.8/instruments.json +94 -0
  22. package/minecraft-data/data/pc/1.21.8/items.json +9284 -0
  23. package/minecraft-data/data/pc/1.21.8/language.json +7394 -0
  24. package/minecraft-data/data/pc/1.21.8/materials.json +206 -0
  25. package/minecraft-data/data/pc/1.21.8/particles.json +458 -0
  26. package/minecraft-data/data/pc/1.21.8/protocol.json +10249 -0
  27. package/minecraft-data/data/pc/1.21.8/recipes.json +30473 -0
  28. package/minecraft-data/data/pc/1.21.8/sounds.json +6914 -0
  29. package/minecraft-data/data/pc/1.21.8/tints.json +465 -0
  30. package/minecraft-data/data/pc/1.21.8/version.json +6 -0
  31. package/minecraft-data/data/pc/common/protocolVersions.json +40 -0
  32. package/minecraft-data/data/pc/common/versions.json +6 -2
  33. package/minecraft-data/data/pc/latest/proto.yml +1 -1
  34. package/minecraft-data/doc/history.md +16 -0
  35. package/minecraft-data/schemas/blockMappings_schema.json +24 -34
  36. package/minecraft-data/schemas/commands_schema.json +13 -7
  37. package/minecraft-data/schemas/tints_schema.json +37 -128
  38. package/minecraft-data/tools/js/extractPcEntityMetadata.js +160 -102
  39. package/minecraft-data/tools/js/test/audit_versions.js +48 -0
  40. package/minecraft-data/tools/js/test/test.js +6 -0
  41. package/package.json +1 -1
@@ -0,0 +1,3494 @@
1
+ !version: 1.21.6
2
+ !StartDocs: true
3
+
4
+ ^types:
5
+ varint: native
6
+ varlong: native
7
+ optvarint: varint
8
+ pstring: native
9
+ buffer: native
10
+ u8: native
11
+ u16: native
12
+ u32: native
13
+ u64: native
14
+ i8: native
15
+ i16: native
16
+ i32: native
17
+ i64: native
18
+ bool: native
19
+ f32: native
20
+ f64: native
21
+ UUID: native
22
+ option: native
23
+ entityMetadataLoop: native
24
+ topBitSetTerminatedArray: native
25
+ bitfield: native
26
+ bitflags: native
27
+ container: native
28
+ switch: native
29
+ void: native
30
+ array: native
31
+ restBuffer: native
32
+ anonymousNbt: native
33
+ anonOptionalNbt: native
34
+ registryEntryHolder: native
35
+ registryEntryHolderSet: native
36
+ ByteArray: ["buffer", { "countType": "varint" }]
37
+ string: ["pstring", { "countType": "varint" }]
38
+ vec2f:
39
+ x: f32
40
+ y: f32
41
+ vec3f:
42
+ x: f32
43
+ y: f32
44
+ z: f32
45
+ vec4f:
46
+ x: f32
47
+ y: f32
48
+ z: f32
49
+ w: f32
50
+ vec3f64:
51
+ x: f64
52
+ y: f64
53
+ z: f64
54
+ vec3i:
55
+ x: varint
56
+ y: varint
57
+ z: varint
58
+ IDSet: ["registryEntryHolderSet", {
59
+ "base": { name: "name", type: "string" },
60
+ "otherwise": { name: "ids", type: "varint" }
61
+ }]
62
+ ContainerID: varint
63
+ SlotComponentType: varint =>
64
+ - custom_data
65
+ - max_stack_size
66
+ - max_damage
67
+ - damage
68
+ - unbreakable
69
+ - custom_name
70
+ - item_name
71
+ - item_model
72
+ - lore
73
+ - rarity
74
+ - enchantments
75
+ - can_place_on
76
+ - can_break
77
+ - attribute_modifiers
78
+ - custom_model_data
79
+ - tooltip_display
80
+ - repair_cost
81
+ - creative_slot_lock
82
+ - enchantment_glint_override
83
+ - intangible_projectile
84
+ - food
85
+ - consumable
86
+ - use_remainder
87
+ - use_cooldown
88
+ - damage_resistant
89
+ - tool
90
+ - weapon
91
+ - enchantable
92
+ - equippable
93
+ - repairable
94
+ - glider
95
+ - tooltip_style
96
+ - death_protection
97
+ - blocks_attacks
98
+ - stored_enchantments
99
+ - dyed_color
100
+ - map_color
101
+ - map_id
102
+ - map_decorations
103
+ - map_post_processing
104
+ - potion_duration_scale
105
+ - charged_projectiles
106
+ - bundle_contents
107
+ - potion_contents
108
+ - suspicious_stew_effects
109
+ - writable_book_content
110
+ - written_book_content
111
+ - trim
112
+ - debug_stick_state
113
+ - entity_data
114
+ - bucket_entity_data
115
+ - block_entity_data
116
+ - instrument
117
+ - provides_trim_material
118
+ - ominous_bottle_amplifier
119
+ - jukebox_playable
120
+ - provides_banner_patterns
121
+ - recipes
122
+ - lodestone_tracker
123
+ - firework_explosion
124
+ - fireworks
125
+ - profile
126
+ - note_block_sound
127
+ - banner_patterns
128
+ - base_color
129
+ - pot_decorations
130
+ - container
131
+ - block_state
132
+ - bees
133
+ - lock
134
+ - container_loot
135
+ - break_sound
136
+ - villager/variant
137
+ - wolf/variant
138
+ - wolf/sound_variant
139
+ - wolf/collar
140
+ - fox/variant
141
+ - salmon/size
142
+ - parrot/variant
143
+ - tropical_fish/pattern
144
+ - tropical_fish/base_color
145
+ - tropical_fish/pattern_color
146
+ - mooshroom/variant
147
+ - rabbit/variant
148
+ - pig/variant
149
+ - cow/variant
150
+ - chicken/variant
151
+ - frog/variant
152
+ - horse/variant
153
+ - painting/variant
154
+ - llama/variant
155
+ - axolotl/variant
156
+ - cat/variant
157
+ - cat/collar
158
+ - sheep/color
159
+ - shulker/color
160
+
161
+ # Instead of sending NBT for items over the network, Minecraft since 1.20.5 sends a
162
+ # list of components that make up the item. This saves bandwidth by not encoding tag names.
163
+ SlotComponent:
164
+ type: SlotComponentType
165
+ ## Ref: client/net/minecraft/core/component/DataComponents.java
166
+ data: type ?
167
+ ## 'Unit' MC type is functionally void
168
+ if custom_data: anonymousNbt
169
+ if max_stack_size: varint
170
+ if max_damage: varint
171
+ if damage: varint
172
+ if unbreakable: void
173
+ if custom_name: anonymousNbt
174
+ if item_name: anonymousNbt
175
+ if item_model: string
176
+ if lore: anonymousNbt[]varint
177
+ if rarity: varint =>
178
+ - common
179
+ - uncommon
180
+ - rare
181
+ - epic
182
+ if enchantments or stored_enchantments:
183
+ enchantments: []varint
184
+ id: varint
185
+ level: varint
186
+ if can_place_on or can_break:
187
+ predicates: ItemBlockPredicate[]varint
188
+ if attribute_modifiers:
189
+ attributes: []varint
190
+ typeId: varint
191
+ name: string
192
+ value: f64
193
+ operation: varint =>
194
+ - add
195
+ - multiply_base
196
+ - multiply_total
197
+ slot: varint =>
198
+ - any
199
+ - main_hand
200
+ - off_hand
201
+ - hand
202
+ - feet
203
+ - legs
204
+ - chest
205
+ - head
206
+ - armor
207
+ - body
208
+ - saddle
209
+ display:
210
+ type: varint =>
211
+ - default
212
+ - hidden
213
+ - override
214
+ component: type ?
215
+ if override: anonymousNbt
216
+ if custom_model_data:
217
+ floats: f32[]varint
218
+ flags: bool[]varint
219
+ strings: string[]varint
220
+ colors: i32[]varint
221
+ if tooltip_display:
222
+ hideTooltip: bool
223
+ hiddenComponents: varint[]varint
224
+ if repair_cost: varint
225
+ if creative_slot_lock: void
226
+ if enchantment_glint_override: bool
227
+ if intangible_projectile: void
228
+ if blocks_attacks:
229
+ blockDelaySeconds: f32
230
+ disableCooldownScale: f32
231
+ damageReductions: []varint
232
+ horizontalBlockingAngle: f32
233
+ type?: IDSet
234
+ base: f32
235
+ factor: f32
236
+ itemDamage:
237
+ threshold: f32
238
+ base: f32
239
+ factor: f32
240
+ bypassedBy?: string
241
+ blockSound?: ItemSoundHolder
242
+ disableSound?: ItemSoundHolder
243
+ if food:
244
+ nutrition: varint
245
+ # How much saturation will be given after consuming the item.
246
+ saturationModifier: f32
247
+ # Whether the item can always be eaten, even at full hunger.
248
+ canAlwaysEat: bool
249
+ if consumable:
250
+ consume_seconds: f32
251
+ animation: varint =>
252
+ - none
253
+ - eat
254
+ - drink
255
+ - block
256
+ - bow
257
+ - spear
258
+ - crossbow
259
+ - spyglass
260
+ - toot_horn
261
+ - brush
262
+ - bundle
263
+ sound: ItemSoundHolder
264
+ makes_particles: bool
265
+ effects: ItemConsumeEffect[]varint
266
+ if use_remainder: Slot
267
+ if use_cooldown:
268
+ seconds: f32
269
+ cooldownGroup?: string
270
+ if damage_resistant: string
271
+ if tool:
272
+ rules: []varint
273
+ blocks: IDSet
274
+ # The speed at which the tool breaks this rules' blocks.
275
+ speed?: f32
276
+ # Whether items should drop only if this is the correct tool.
277
+ correctDropForBlocks?: bool
278
+ # The mining speed in case none of the previous rule were matched.
279
+ defaultMiningSpeed: f32
280
+ damagePerBlock: varint
281
+ canDestroyBlocksInCreative: bool
282
+ if weapon:
283
+ itemDamagePerAttack: varint
284
+ disableBlockingForSeconds: f32
285
+ # Enchantment cost up to which the item can be enchanted
286
+ if enchantable: varint
287
+ if equippable:
288
+ slot: varint =>
289
+ - main_hand
290
+ - off_hand
291
+ - feet
292
+ - legs
293
+ - chest
294
+ - head
295
+ - body
296
+ - saddle
297
+ sound: ItemSoundHolder
298
+ model?: string
299
+ cameraOverlay?: string
300
+ allowedEntities?: IDSet
301
+ dispensable: bool
302
+ swappable: bool
303
+ damageable: bool
304
+ equipOnInteract: bool
305
+ shearable: bool
306
+ shearingSound: ItemSoundHolder
307
+ if repairable:
308
+ items: IDSet
309
+ if glider: void
310
+ if tooltip_style: string
311
+ if death_protection:
312
+ effects: ItemConsumeEffect[]varint
313
+ if dyed_color: i32
314
+ if map_color: i32
315
+ if map_id: varint
316
+ if map_decorations: anonymousNbt
317
+ if map_post_processing: varint
318
+ if potion_duration_scale: f32
319
+ if charged_projectiles:
320
+ projectiles: Slot[]varint
321
+ if bundle_contents:
322
+ contents: Slot[]varint
323
+ if potion_contents:
324
+ # True if this potion has an ID in the potion registry--it has the default effects associated with the potion type.
325
+ potionId?: varint
326
+ # The RGB components of the color, encoded as an integer.
327
+ customColor?: i32
328
+ customEffects: ItemPotionEffect[]varint
329
+ customName?: string
330
+ if suspicious_stew_effects:
331
+ effects: []varint
332
+ # The ID of the effect in the potion effect type registry.
333
+ effect: varint
334
+ # The duration of the effect.
335
+ duration: varint
336
+ if writable_book_content:
337
+ # Max 100 pages
338
+ pages: ItemBookPage[]varint
339
+ if written_book_content:
340
+ rawTitle: string
341
+ filteredTitle?: string
342
+ author: string
343
+ generation: varint
344
+ pages: ItemWrittenBookPage[]varint
345
+ resolved: bool
346
+ if trim:
347
+ material: ["registryEntryHolder", { "baseName": "materialId", "otherwise": { "name": "data", "type": "ArmorTrimMaterial" } }]
348
+ pattern: ["registryEntryHolder", { "baseName": "patternId", "otherwise": { "name": "data", "type": "ArmorTrimPattern" } }]
349
+ if debug_stick_state: anonymousNbt
350
+ if entity_data: anonymousNbt
351
+ if bucket_entity_data: anonymousNbt
352
+ if block_entity_data: anonymousNbt
353
+ if instrument:
354
+ hasHolder: bool
355
+ data: hasHolder ?
356
+ if true: ["registryEntryHolder", { "baseName": "instrumentId", "otherwise": { "name": "data", "type": "InstrumentData" } }]
357
+ if false: string
358
+ if provides_trim_material:
359
+ hasHolder: bool
360
+ material: hasHolder ?
361
+ if true: ["registryEntryHolder", { "baseName": "materialId", "otherwise": { "name": "data", "type": "ArmorTrimMaterial" } }]
362
+ if false: string
363
+ if ominous_bottle_amplifier: varint
364
+ if jukebox_playable:
365
+ hasHolder: bool
366
+ song: hasHolder ?
367
+ if true: ["registryEntryHolder", { "baseName": "songId", "otherwise": { "name": "data", "type": "JukeboxSongData" } }]
368
+ if false: string
369
+ if provides_banner_patterns: string
370
+ if recipes: anonymousNbt
371
+ if lodestone_tracker:
372
+ # Specified if this lodestone points to a position; otherwise it spins randomly.
373
+ globalPosition?:
374
+ dimension: string
375
+ # The position the compass points to. Only present if Has Global Position is true.
376
+ position: position
377
+ # Whether the component is removed when the associated lodestone is broken.
378
+ tracked: bool
379
+ if firework_explosion: ItemFireworkExplosion
380
+ if fireworks:
381
+ flightDuration: varint
382
+ explosions: ItemFireworkExplosion[]varint
383
+ if profile:
384
+ # If the profile has a name, max 16 characters.
385
+ name?: string
386
+ uuid?: UUID
387
+ properties: []varint
388
+ # Max 64 characters
389
+ name: string
390
+ value: string
391
+ # Max 1024 characters
392
+ signature?: string
393
+ if note_block_sound: string
394
+ if banner_patterns:
395
+ layers: BannerPatternLayer[]varint
396
+ if base_color: varint
397
+ if pot_decorations:
398
+ # The ID of the items in the item registry.
399
+ decorations: varint[]varint
400
+ if container:
401
+ contents: Slot[]varint
402
+ if block_state:
403
+ properties: []varint
404
+ name: string
405
+ value: string
406
+ if bees:
407
+ bees: []varint
408
+ # Custom data for the entity, always a Compound Tag. Same structure as the minecraft:custom_data component.
409
+ nbtData: anonymousNbt
410
+ ticksInHive: varint
411
+ minTicksInHive: varint
412
+ if lock: anonymousNbt
413
+ if container_loot: anonymousNbt
414
+ if break_sound: ItemSoundHolder
415
+ if villager/variant: varint
416
+ if wolf/variant: varint
417
+ if wolf/sound_variant: varint
418
+ if wolf/collar: varint
419
+ if fox/variant: varint
420
+ if salmon/size: varint
421
+ if parrot/variant: varint
422
+ if tropical_fish/pattern: varint
423
+ if tropical_fish/base_color: varint
424
+ if tropical_fish/pattern_color: varint
425
+ if mooshroom/variant: varint
426
+ if rabbit/variant: varint
427
+ if pig/variant: varint
428
+ if cow/variant: varint
429
+ if chicken/variant: ["registryEntryHolder", { "baseName": "variantId", "otherwise": { "name": "variantData", "type": "string" } }]
430
+ if frog/variant: varint
431
+ if horse/variant: varint
432
+ if painting/variant: ["registryEntryHolder", { "baseName": "variantId", "otherwise": { "name": "data", "type": "EntityMetadataPaintingVariant" } }]
433
+ if llama/variant: varint
434
+ if axolotl/variant: varint
435
+ if cat/variant: varint
436
+ if cat/collar: varint
437
+ if sheep/color: varint
438
+ if shulker/color: varint
439
+
440
+ ItemSoundEvent:
441
+ soundName: string
442
+ fixedRange?: f32
443
+ ItemSoundHolder: ["registryEntryHolder", {
444
+ "baseName": "soundId",
445
+ "otherwise": { name: "data", type: "ItemSoundEvent" }
446
+ }]
447
+
448
+ ItemFireworkExplosion:
449
+ shape: varint =>
450
+ - small_ball
451
+ - large_ball
452
+ - star
453
+ - creeper
454
+ - burst
455
+ # The RGB components of the color, encoded as an integer.
456
+ colors: i32[]varint
457
+ # The RGB components of the color, encoded as an integer.
458
+ fadeColors: i32[]varint
459
+ # Whether the firework has a trail.
460
+ hasTrail: bool
461
+ # Whether the firework has a twinkle effect.
462
+ hasTwinkle: bool
463
+
464
+ ItemEffectDetail:
465
+ amplifier: varint
466
+ duration: varint
467
+ ambient: bool
468
+ showParticles: bool
469
+ showIcon: bool
470
+ hiddenEffect?: ItemEffectDetail
471
+
472
+ ItemPotionEffect:
473
+ id: varint
474
+ details: ItemEffectDetail
475
+
476
+ ItemBlockProperty:
477
+ name: string
478
+ isExactMatch: bool
479
+ value: isExactMatch ?
480
+ if true:
481
+ exactValue: string
482
+ if false:
483
+ minValue: string
484
+ maxValue: string
485
+
486
+ ExactComponentMatcher: SlotComponent[]varint
487
+
488
+ DataComponentMatchers:
489
+ exactMatchers: ExactComponentMatcher
490
+ partialMatchers: varint[]varint
491
+
492
+ ItemBlockPredicate:
493
+ blockSet?: ["registryEntryHolderSet", {
494
+ "base": { name: "name", type: "string" },
495
+ "otherwise": { name: "blockIds", "type": "varint" }
496
+ }]
497
+ properties?: ItemBlockProperty[]varint
498
+ nbt: anonOptionalNbt
499
+ components: DataComponentMatchers
500
+
501
+ ItemBookPage:
502
+ # The raw text of the page. TextComponent, max 1024 characters.
503
+ content: string
504
+ filteredContent?: string
505
+ ItemWrittenBookPage:
506
+ content: anonymousNbt
507
+ filteredContent: anonOptionalNbt
508
+
509
+ ItemConsumeEffect: # 1.21.3
510
+ type: varint =>
511
+ - apply_effects
512
+ - remove_effects
513
+ - clear_all_effects
514
+ - teleport_randomly
515
+ - play_sound
516
+ _: type ?
517
+ if apply_effects:
518
+ effects: ItemPotionEffect[]varint
519
+ probability: f32
520
+ if remove_effects:
521
+ effects: IDSet
522
+ if clear_all_effects: void
523
+ if teleport_randomly:
524
+ diameter: f32
525
+ if play_sound:
526
+ sound: ItemSoundHolder
527
+
528
+ ArmorTrimMaterial:
529
+ assetBase: string
530
+ overrideArmorAssets: []varint
531
+ key: string
532
+ value: string
533
+ description: anonymousNbt
534
+
535
+ ArmorTrimPattern:
536
+ assetId: string
537
+ description: anonymousNbt
538
+ decal: bool
539
+
540
+ InstrumentData:
541
+ soundEvent: ItemSoundHolder
542
+ useDuration: f32
543
+ range: f32
544
+ description: anonymousNbt
545
+
546
+ JukeboxSongData:
547
+ soundEvent: ItemSoundHolder
548
+ description: anonymousNbt
549
+ lengthInSeconds: f32
550
+ comparatorOutput: varint
551
+
552
+ BannerPattern:
553
+ assetId: string
554
+ translationKey: string
555
+ BannerPatternLayer:
556
+ pattern: ["registryEntryHolder", { "baseName": "patternId", "otherwise": { "name": "data", "type": "BannerPattern" } }]
557
+ colorId: varint
558
+
559
+ # This represents a single component within an UntrustedSlot.
560
+ # The 'data' field is a varint-prefixed byte array that contains the actual component data.
561
+ # The code generator will need to know that it should read a varint for length, then the bytes.
562
+ UntrustedSlotComponent:
563
+ type: SlotComponentType
564
+ data: ByteArray
565
+
566
+ # An UntrustedSlot is structurally identical to a regular Slot,
567
+ # but it uses the special UntrustedSlotComponent type for its component list.
568
+ # It's optional because the player might be clearing the slot.
569
+ UntrustedSlot:
570
+ itemCount: varint
571
+ _: itemCount ?
572
+ if 0: void
573
+ default:
574
+ itemId: varint
575
+ addedComponentCount: varint
576
+ removedComponentCount: varint
577
+ components: UntrustedSlotComponent[]$addedComponentCount
578
+ removeComponents: []$removedComponentCount
579
+ type: SlotComponentType
580
+ if false: void
581
+
582
+ Slot:
583
+ itemCount: varint
584
+ _: itemCount ?
585
+ if 0: void
586
+ default:
587
+ itemId: varint
588
+ # https://wiki.vg/Slot_Data#Structured_components
589
+ addedComponentCount: varint
590
+ removedComponentCount: varint
591
+ components: SlotComponent[]$addedComponentCount
592
+ removeComponents: []$removedComponentCount
593
+ type: SlotComponentType
594
+
595
+ HashedSlot:
596
+ itemId: varint
597
+ itemCount: varint
598
+ components: []varint
599
+ type: SlotComponentType
600
+ hash: i32
601
+ removeComponents: []varint
602
+ type: SlotComponentType
603
+
604
+ Particle:
605
+ # See client/net/minecraft/core/particles/ParticleTypes.java
606
+ type: varint =>
607
+ - angry_villager
608
+ - block
609
+ - block_marker
610
+ - bubble
611
+ - cloud
612
+ - crit
613
+ - damage_indicator
614
+ - dragon_breath
615
+ - dripping_lava
616
+ - falling_lava
617
+ - landing_lava
618
+ - dripping_water
619
+ - falling_water
620
+ - dust
621
+ - dust_color_transition
622
+ - effect
623
+ - elder_guardian
624
+ - enchanted_hit
625
+ - enchant
626
+ - end_rod
627
+ - entity_effect
628
+ - explosion_emitter
629
+ - explosion
630
+ - gust
631
+ - small_gust
632
+ - gust_emitter_large
633
+ - gust_emitter_small
634
+ - sonic_boom
635
+ - falling_dust
636
+ - firework
637
+ - fishing
638
+ - flame
639
+ - infested
640
+ - cherry_leaves
641
+ - pale_oak_leaves
642
+ - tinted_leaves
643
+ - sculk_soul
644
+ - sculk_charge
645
+ - sculk_charge_pop
646
+ - soul_fire_flame
647
+ - soul
648
+ - flash
649
+ - happy_villager
650
+ - composter
651
+ - heart
652
+ - instant_effect
653
+ - item
654
+ - vibration
655
+ - trail
656
+ - item_slime
657
+ - item_cobweb
658
+ - item_snowball
659
+ - large_smoke
660
+ - lava
661
+ - mycelium
662
+ - note
663
+ - poof
664
+ - portal
665
+ - rain
666
+ - smoke
667
+ - white_smoke
668
+ - sneeze
669
+ - spit
670
+ - squid_ink
671
+ - sweep_attack
672
+ - totem_of_undying
673
+ - underwater
674
+ - splash
675
+ - witch
676
+ - bubble_pop
677
+ - current_down
678
+ - bubble_column_up
679
+ - nautilus
680
+ - dolphin
681
+ - campfire_cosy_smoke
682
+ - campfire_signal_smoke
683
+ - dripping_honey
684
+ - falling_honey
685
+ - landing_honey
686
+ - falling_nectar
687
+ - falling_spore_blossom
688
+ - ash
689
+ - crimson_spore
690
+ - warped_spore
691
+ - spore_blossom_air
692
+ - dripping_obsidian_tear
693
+ - falling_obsidian_tear
694
+ - landing_obsidian_tear
695
+ - reverse_portal
696
+ - white_ash
697
+ - small_flame
698
+ - snowflake
699
+ - dripping_dripstone_lava
700
+ - falling_dripstone_lava
701
+ - dripping_dripstone_water
702
+ - falling_dripstone_water
703
+ - glow_squid_ink
704
+ - glow
705
+ - wax_on
706
+ - wax_off
707
+ - electric_spark
708
+ - scrape
709
+ - shriek
710
+ - egg_crack
711
+ - dust_plume
712
+ - trial_spawner_detected_player
713
+ - trial_spawner_detected_player_ominous
714
+ - vault_connection
715
+ - dust_pillar
716
+ - ominous_spawning
717
+ - raid_omen
718
+ - trial_omen
719
+ - block_crumble
720
+ - firefly
721
+ ## ## Tips for reviewing particle data (as of 1.20.5)
722
+ ## Inside the registry code, each particle can have an associated "options" type and
723
+ ## each options type can add additional data to be encoded.
724
+ ## For example, this line
725
+ ## public static final ParticleType<BlockParticleOption> BLOCK = register("block", false, BlockParticleOption::codec, BlockParticleOption::streamCodec);
726
+ ## will read the stream codec from BlockParticleOption.java's streamCodec member; then we see
727
+ ## return ByteBufCodecs.idMapper(Block.BLOCK_STATE_REGISTRY).map(var1 -> new BlockParticleOption(var0, var1), var0x -> var0x.state);
728
+ ## this encodes with the ByteBufCodecs.idMapper function. Inside this function we find
729
+ ## public void encode(ByteBuf var1x, T var2) {
730
+ ## int var3 = var1.applyAsInt(var2);
731
+ ## VarInt.write(var1x, var3);
732
+ ## }
733
+ ## which as we can see writes the varint to the buffer.
734
+ ## If you want to see all the serializers try regexp searching "StreamCodec.*Particle"
735
+ data: type ?
736
+ if block or block_marker or falling_dust or dust_pillar or block_crumble: varint
737
+ if dust:
738
+ red: f32
739
+ green: f32
740
+ blue: f32
741
+ scale: f32
742
+ if dust_color_transition:
743
+ fromRed: f32
744
+ fromGreen: f32
745
+ fromBlue: f32
746
+ scale: f32
747
+ toRed: f32
748
+ toGreen: f32
749
+ toBlue: f32
750
+ if entity_effect: i32
751
+ if item: Slot
752
+ if sculk_charge: f32
753
+ if shriek: varint
754
+ if vibration:
755
+ positionType: varint =>
756
+ - block
757
+ - entity
758
+ position: positionType ?
759
+ if block: position
760
+ if entity:
761
+ entityId: varint
762
+ entityEyeHeight: f32
763
+ ticks: varint
764
+ if trail:
765
+ target: vec3f64
766
+ color: u8
767
+ if tinted_leaves: i32
768
+ if firefly: void
769
+ ingredient: Slot[]varint
770
+ position: [
771
+ "bitfield",
772
+ [
773
+ {
774
+ "name": "x",
775
+ "size": 26,
776
+ "signed": true
777
+ },
778
+ {
779
+ "name": "z",
780
+ "size": 26,
781
+ "signed": true
782
+ },
783
+ {
784
+ "name": "y",
785
+ "size": 12,
786
+ "signed": true
787
+ }
788
+ ]
789
+ ]
790
+ soundSource: varint =>
791
+ 0: master
792
+ 1: music
793
+ 2: record
794
+ 3: weather
795
+ 4: block
796
+ 5: hostile
797
+ 6: neutral
798
+ 7: player
799
+ 8: ambient
800
+ 9: voice
801
+ 10: ui
802
+ packedChunkPos:
803
+ z: i32
804
+ x: i32
805
+ previousMessages: []varint
806
+ id: varint
807
+ signature: id ?
808
+ if 0: [
809
+ "buffer",
810
+ {
811
+ "count": 256
812
+ }
813
+ ]
814
+ default: void
815
+ entityMetadataEntry:
816
+ key: u8
817
+ type: varint =>
818
+ - byte
819
+ - int
820
+ - long
821
+ - float
822
+ - string
823
+ - component
824
+ - optional_component
825
+ - item_stack
826
+ - boolean
827
+ - rotations
828
+ - block_pos
829
+ - optional_block_pos
830
+ - direction
831
+ - optional_uuid
832
+ - block_state
833
+ - optional_block_state
834
+ - compound_tag
835
+ - particle
836
+ - particles
837
+ - villager_data
838
+ - optional_unsigned_int
839
+ - pose
840
+ - cat_variant
841
+ - cow_variant
842
+ - wolf_variant
843
+ - wolf_sound_variant
844
+ - frog_variant
845
+ - pig_variant
846
+ - chicken_variant
847
+ - optional_global_pos
848
+ - painting_variant
849
+ - sniffer_state
850
+ - armadillo_state
851
+ - vector3
852
+ - quaternion
853
+ value: type ?
854
+ if byte: i8
855
+ if int: varint
856
+ if long: varlong
857
+ if float: f32
858
+ if string: string
859
+ if component: anonymousNbt
860
+ if optional_component: ["option", "anonymousNbt"]
861
+ if item_stack: Slot
862
+ if boolean: bool
863
+ if rotations:
864
+ pitch: f32
865
+ yaw: f32
866
+ roll: f32
867
+ if block_pos: position
868
+ if optional_block_pos: ["option", "position"]
869
+ if direction: varint
870
+ if optional_uuid: ["option", "UUID"]
871
+ if block_state: varint
872
+ if optional_block_state: optvarint
873
+ if compound_tag: anonymousNbt
874
+ if particle: Particle
875
+ if particles: Particle[]varint
876
+ if villager_data:
877
+ villagerType: varint
878
+ villagerProfession: varint
879
+ level: varint
880
+ if optional_unsigned_int: optvarint
881
+ if pose: varint
882
+ if cat_variant: varint
883
+ if cow_variant: varint
884
+ if wolf_variant: varint
885
+ if wolf_sound_variant: varint
886
+ if frog_variant: varint
887
+ if pig_variant: varint
888
+ if chicken_variant: ["registryEntryHolder", { "baseName": "variantId", "otherwise": { "name": "variantData", "type": "string" } }]
889
+ if optional_global_pos: ["option", "string"]
890
+ if painting_variant: ["registryEntryHolder", {
891
+ "baseName": "variantId",
892
+ "otherwise": { name: "variantData", type: "EntityMetadataPaintingVariant" }
893
+ }]
894
+ if sniffer_state: varint
895
+ if armadillo_state: varint
896
+ if vector3: vec3f
897
+ if quaternion: vec4f
898
+ EntityMetadataPaintingVariant:
899
+ width: i32
900
+ height: i32
901
+ assetId: string
902
+ title?: anonymousNbt
903
+ author?: anonymousNbt
904
+ entityMetadata: ["entityMetadataLoop", { "endVal": 255, "type": "entityMetadataEntry" }]
905
+ tags: []varint
906
+ tagName: string
907
+ entries: varint[]varint
908
+ chunkBlockEntity:
909
+ _: [
910
+ "bitfield",
911
+ [
912
+ {
913
+ "name": "x",
914
+ "size": 4,
915
+ "signed": false
916
+ },
917
+ {
918
+ "name": "z",
919
+ "size": 4,
920
+ "signed": false
921
+ }
922
+ ]
923
+ ]
924
+ y: i16
925
+ type: varint
926
+ nbtData: anonOptionalNbt
927
+ chat_session?:
928
+ uuid: UUID
929
+ publicKey:
930
+ expireTime: i64
931
+ keyBytes: [
932
+ "buffer",
933
+ {
934
+ "countType": "varint"
935
+ }
936
+ ]
937
+ keySignature: [
938
+ "buffer",
939
+ {
940
+ "countType": "varint"
941
+ }
942
+ ]
943
+ game_profile:
944
+ name: string
945
+ properties: []varint
946
+ name: string
947
+ value: string
948
+ signature?: string
949
+ command_node:
950
+ flags: [
951
+ "bitfield",
952
+ [
953
+ {
954
+ "name": "unused",
955
+ "size": 2,
956
+ "signed": false
957
+ },
958
+ {
959
+ "name": "allows_restricted",
960
+ "size": 1,
961
+ "signed": false
962
+ },
963
+ {
964
+ "name": "has_custom_suggestions",
965
+ "size": 1,
966
+ "signed": false
967
+ },
968
+ {
969
+ "name": "has_redirect_node",
970
+ "size": 1,
971
+ "signed": false
972
+ },
973
+ {
974
+ "name": "has_command",
975
+ "size": 1,
976
+ "signed": false
977
+ },
978
+ {
979
+ "name": "command_node_type",
980
+ "size": 2,
981
+ "signed": false
982
+ }
983
+ ]
984
+ ]
985
+ children: varint[]varint
986
+ redirectNode: flags/has_redirect_node ?
987
+ if 1: varint
988
+ default: void
989
+ extraNodeData: flags/command_node_type ?
990
+ if 0: void
991
+ if 1:
992
+ name: string
993
+ if 2:
994
+ name: string
995
+ parser: varint =>
996
+ - brigadier:bool
997
+ - brigadier:float
998
+ - brigadier:double
999
+ - brigadier:integer
1000
+ - brigadier:long
1001
+ - brigadier:string
1002
+ - minecraft:entity
1003
+ - minecraft:game_profile
1004
+ - minecraft:block_pos
1005
+ - minecraft:column_pos
1006
+ - minecraft:vec3
1007
+ - minecraft:vec2
1008
+ - minecraft:block_state
1009
+ - minecraft:block_predicate
1010
+ - minecraft:item_stack
1011
+ - minecraft:item_predicate
1012
+ - minecraft:color
1013
+ - minecraft:hex_color # 1.21.6
1014
+ - minecraft:component
1015
+ - minecraft:style
1016
+ - minecraft:message
1017
+ - minecraft:nbt
1018
+ - minecraft:nbt_tag
1019
+ - minecraft:nbt_path
1020
+ - minecraft:objective
1021
+ - minecraft:objective_criteria
1022
+ - minecraft:operation
1023
+ - minecraft:particle
1024
+ - minecraft:angle
1025
+ - minecraft:rotation
1026
+ - minecraft:scoreboard_slot
1027
+ - minecraft:score_holder
1028
+ - minecraft:swizzle
1029
+ - minecraft:team
1030
+ - minecraft:item_slot
1031
+ - minecraft:item_slots # 1.20.5
1032
+ - minecraft:resource_location
1033
+ - minecraft:function
1034
+ - minecraft:entity_anchor
1035
+ - minecraft:int_range
1036
+ - minecraft:float_range
1037
+ - minecraft:dimension
1038
+ - minecraft:gamemode
1039
+ - minecraft:time
1040
+ - minecraft:resource_or_tag
1041
+ - minecraft:resource_or_tag_key
1042
+ - minecraft:resource
1043
+ - minecraft:resource_key
1044
+ - minecraft:resource_selector
1045
+ - minecraft:template_mirror
1046
+ - minecraft:template_rotation
1047
+ - minecraft:heightmap
1048
+ - minecraft:loot_table # 1.20.5
1049
+ - minecraft:loot_predicate # 1.20.5
1050
+ - minecraft:loot_modifier # 1.20.5
1051
+ - minecraft:dialog # 1.21.6
1052
+ - minecraft:uuid
1053
+ properties: parser ?
1054
+ if brigadier:bool: void
1055
+ if brigadier:float:
1056
+ flags: [
1057
+ "bitfield",
1058
+ [
1059
+ {
1060
+ "name": "unused",
1061
+ "size": 6,
1062
+ "signed": false
1063
+ },
1064
+ {
1065
+ "name": "max_present",
1066
+ "size": 1,
1067
+ "signed": false
1068
+ },
1069
+ {
1070
+ "name": "min_present",
1071
+ "size": 1,
1072
+ "signed": false
1073
+ }
1074
+ ]
1075
+ ]
1076
+ min: flags/min_present ?
1077
+ if 1: f32
1078
+ default: void
1079
+ max: flags/max_present ?
1080
+ if 1: f32
1081
+ default: void
1082
+ if brigadier:double:
1083
+ flags: [
1084
+ "bitfield",
1085
+ [
1086
+ {
1087
+ "name": "unused",
1088
+ "size": 6,
1089
+ "signed": false
1090
+ },
1091
+ {
1092
+ "name": "max_present",
1093
+ "size": 1,
1094
+ "signed": false
1095
+ },
1096
+ {
1097
+ "name": "min_present",
1098
+ "size": 1,
1099
+ "signed": false
1100
+ }
1101
+ ]
1102
+ ]
1103
+ min: flags/min_present ?
1104
+ if 1: f64
1105
+ default: void
1106
+ max: flags/max_present ?
1107
+ if 1: f64
1108
+ default: void
1109
+ if brigadier:integer:
1110
+ flags: [
1111
+ "bitfield",
1112
+ [
1113
+ {
1114
+ "name": "unused",
1115
+ "size": 6,
1116
+ "signed": false
1117
+ },
1118
+ {
1119
+ "name": "max_present",
1120
+ "size": 1,
1121
+ "signed": false
1122
+ },
1123
+ {
1124
+ "name": "min_present",
1125
+ "size": 1,
1126
+ "signed": false
1127
+ }
1128
+ ]
1129
+ ]
1130
+ min: flags/min_present ?
1131
+ if 1: i32
1132
+ default: void
1133
+ max: flags/max_present ?
1134
+ if 1: i32
1135
+ default: void
1136
+ if brigadier:long:
1137
+ flags: [
1138
+ "bitfield",
1139
+ [
1140
+ {
1141
+ "name": "unused",
1142
+ "size": 6,
1143
+ "signed": false
1144
+ },
1145
+ {
1146
+ "name": "max_present",
1147
+ "size": 1,
1148
+ "signed": false
1149
+ },
1150
+ {
1151
+ "name": "min_present",
1152
+ "size": 1,
1153
+ "signed": false
1154
+ }
1155
+ ]
1156
+ ]
1157
+ min: flags/min_present ?
1158
+ if 1: i64
1159
+ default: void
1160
+ max: flags/max_present ?
1161
+ if 1: i64
1162
+ default: void
1163
+ if brigadier:string: varint =>
1164
+ 0: SINGLE_WORD
1165
+ 1: QUOTABLE_PHRASE
1166
+ 2: GREEDY_PHRASE
1167
+ if minecraft:entity: [
1168
+ "bitfield",
1169
+ [
1170
+ {
1171
+ "name": "unused",
1172
+ "size": 6,
1173
+ "signed": false
1174
+ },
1175
+ {
1176
+ "name": "onlyAllowPlayers",
1177
+ "size": 1,
1178
+ "signed": false
1179
+ },
1180
+ {
1181
+ "name": "onlyAllowEntities",
1182
+ "size": 1,
1183
+ "signed": false
1184
+ }
1185
+ ]
1186
+ ]
1187
+ if minecraft:game_profile: void
1188
+ if minecraft:block_pos: void
1189
+ if minecraft:column_pos: void
1190
+ if minecraft:vec3: void
1191
+ if minecraft:vec2: void
1192
+ if minecraft:block_state: void
1193
+ if minecraft:block_predicate: void
1194
+ if minecraft:item_stack: void
1195
+ if minecraft:item_predicate: void
1196
+ if minecraft:color: void
1197
+ if minecraft:hex_color: void
1198
+ if minecraft:component: void
1199
+ if minecraft:message: void
1200
+ if minecraft:nbt: void
1201
+ if minecraft:nbt_path: void
1202
+ if minecraft:objective: void
1203
+ if minecraft:objective_criteria: void
1204
+ if minecraft:operation: void
1205
+ if minecraft:particle: void
1206
+ if minecraft:angle: void
1207
+ if minecraft:rotation: void
1208
+ if minecraft:scoreboard_slot: void
1209
+ if minecraft:score_holder: [
1210
+ "bitfield",
1211
+ [
1212
+ {
1213
+ "name": "unused",
1214
+ "size": 7,
1215
+ "signed": false
1216
+ },
1217
+ {
1218
+ "name": "allowMultiple",
1219
+ "size": 1,
1220
+ "signed": false
1221
+ }
1222
+ ]
1223
+ ]
1224
+ if minecraft:swizzle: void
1225
+ if minecraft:team: void
1226
+ if minecraft:item_slot: void
1227
+ if minecraft:resource_location: void
1228
+ if minecraft:function: void
1229
+ if minecraft:entity_anchor: void
1230
+ if minecraft:int_range: void
1231
+ if minecraft:float_range: void
1232
+ if minecraft:dimension: void
1233
+ if minecraft:gamemode: void
1234
+ if minecraft:time:
1235
+ min: i32
1236
+ if minecraft:resource_or_tag or minecraft:resource_or_tag_key or minecraft:resource or minecraft:resource_key or minecraft:resource_selector:
1237
+ registry: string
1238
+ if minecraft:template_mirror: void
1239
+ if minecraft:template_rotation: void
1240
+ if minecraft:heightmap: void
1241
+ if minecraft:dialog: void
1242
+ if minecraft:uuid: void
1243
+ suggestionType: ../flags/has_custom_suggestions ?
1244
+ if 1: string
1245
+ default: void
1246
+ # # Shared Packets
1247
+ # These are packets that are shared between multiple states.
1248
+ # They are defined here to avoid duplication.
1249
+ # =====
1250
+ # MC: ServerboundClientInformationPacket
1251
+ packet_common_settings:
1252
+ locale: string
1253
+ viewDistance: i8
1254
+ chatFlags: varint
1255
+ chatColors: bool
1256
+ skinParts: u8
1257
+ mainHand: varint
1258
+ enableTextFiltering: bool
1259
+ enableServerListing: bool
1260
+ particleStatus: varint =>
1261
+ - all
1262
+ - decreased
1263
+ - minimal
1264
+ # MC: ClientboundCookieRequestPacket
1265
+ packet_common_cookie_request:
1266
+ cookie: string
1267
+ # MC: ClientboundStoreCookiePacket
1268
+ packet_common_store_cookie:
1269
+ key: string
1270
+ value: ByteArray
1271
+ # MC: ClientboundTransferPacket
1272
+ packet_common_transfer:
1273
+ host: string
1274
+ port: varint
1275
+ # MC: ServerboundCookieResponsePacket
1276
+ packet_common_cookie_response:
1277
+ key: string
1278
+ value: ByteArray
1279
+ # MC: ServerboundSelectKnownPacks
1280
+ # MC: ClientboundSelectKnownPacks
1281
+ packet_common_select_known_packs:
1282
+ packs: []varint
1283
+ namespace: string
1284
+ id: string
1285
+ version: string
1286
+ # MC: ClientboundCustomReportDetailsPacket
1287
+ packet_common_custom_report_details:
1288
+ details: []varint
1289
+ key: string
1290
+ value: string
1291
+ # MC: ClientboundResourcePackPopPacket
1292
+ packet_common_remove_resource_pack:
1293
+ uuid?: UUID
1294
+ # MC: ClientboundResourcePackPushPacket
1295
+ packet_common_add_resource_pack:
1296
+ uuid: UUID
1297
+ url: string
1298
+ hash: string
1299
+ forced: bool
1300
+ promptMessage?: anonymousNbt
1301
+
1302
+ ServerLinkType: varint =>
1303
+ - bug_report
1304
+ - community_guidelines
1305
+ - support
1306
+ - status
1307
+ - feedback
1308
+ - community
1309
+ - website
1310
+ - forums
1311
+ - news
1312
+ - announcements
1313
+ # MC: ClientboundServerLinksPacket
1314
+ # This packet contains a list of links that the Notchian client will display in the menu
1315
+ # available from the pause menu. Link labels can be built-in or custom (i.e., any text).
1316
+ packet_common_server_links:
1317
+ links: []varint
1318
+ hasKnownType: bool
1319
+ knownType: hasKnownType ?
1320
+ if true: ServerLinkType
1321
+ unknownType: hasKnownType ?
1322
+ if false: anonymousNbt
1323
+ link: string
1324
+ # MC: ClientboundClearDialogPacket
1325
+ packet_common_clear_dialog:
1326
+ # empty
1327
+ # MC: ServerboundCustomClickActionPacket
1328
+ packet_common_custom_click_action:
1329
+ id: string
1330
+ nbt?: anonymousNbt
1331
+
1332
+ ^handshaking.toClient.types:
1333
+ packet:
1334
+ name: varint =>
1335
+ params: ["switch",{"compareTo":"name","fields":{}}]
1336
+ ^handshaking.toServer.types:
1337
+ packet_set_protocol:
1338
+ protocolVersion: varint
1339
+ serverHost: string
1340
+ serverPort: u16
1341
+ nextState: varint
1342
+ packet_legacy_server_list_ping:
1343
+ payload: u8
1344
+ packet:
1345
+ name: varint =>
1346
+ 0x00: set_protocol
1347
+ 0xfe: legacy_server_list_ping
1348
+ params: name ?
1349
+ if set_protocol: packet_set_protocol
1350
+ if legacy_server_list_ping: packet_legacy_server_list_ping
1351
+ ^status.toClient.types:
1352
+ # MC: ClientboundStatusResponsePacket
1353
+ packet_server_info:
1354
+ response: string
1355
+ # MC: ClientboundPongResponsePacket
1356
+ packet_ping:
1357
+ time: i64
1358
+ packet:
1359
+ name: varint =>
1360
+ 0x00: server_info
1361
+ 0x01: ping
1362
+ params: name ?
1363
+ if server_info: packet_server_info
1364
+ if ping: packet_ping
1365
+ ^status.toServer.types:
1366
+ # MC: ServerboundStatusRequestPacket
1367
+ packet_ping_start:
1368
+ # Empty
1369
+ # MC: ServerboundPingRequestPacket
1370
+ packet_ping:
1371
+ time: i64
1372
+ packet:
1373
+ name: varint =>
1374
+ 0x00: ping_start
1375
+ 0x01: ping
1376
+ params: name ?
1377
+ if ping_start: packet_ping_start
1378
+ if ping: packet_ping
1379
+ ^login.toClient.types:
1380
+ # MC: ClientboundLoginDisconnectPacket
1381
+ packet_disconnect:
1382
+ reason: string
1383
+ # MC: ClientboundHelloPacket
1384
+ packet_encryption_begin:
1385
+ serverId: string
1386
+ publicKey: [
1387
+ "buffer",
1388
+ {
1389
+ "countType": "varint"
1390
+ }
1391
+ ]
1392
+ verifyToken: [
1393
+ "buffer",
1394
+ {
1395
+ "countType": "varint"
1396
+ }
1397
+ ]
1398
+ shouldAuthenticate: bool
1399
+ # MC: ClientboundLoginFinishedPacket
1400
+ packet_success:
1401
+ uuid: UUID
1402
+ username: string
1403
+ properties: []varint
1404
+ name: string
1405
+ value: string
1406
+ signature?: string
1407
+ # MC: ClientboundLoginCompressionPacket
1408
+ packet_compress:
1409
+ threshold: varint
1410
+ # MC: ClientboundCustomQueryPacket
1411
+ packet_login_plugin_request:
1412
+ messageId: varint
1413
+ channel: string
1414
+ data: restBuffer
1415
+ ## (Cookie Request is Common) ##
1416
+ packet:
1417
+ name: varint =>
1418
+ - disconnect
1419
+ - encryption_begin
1420
+ - success
1421
+ - compress
1422
+ - login_plugin_request
1423
+ - cookie_request
1424
+ params: name ?
1425
+ if disconnect: packet_disconnect
1426
+ if encryption_begin: packet_encryption_begin
1427
+ if success: packet_success
1428
+ if compress: packet_compress
1429
+ if login_plugin_request: packet_login_plugin_request
1430
+ if cookie_request: packet_common_cookie_request
1431
+ ^login.toServer.types:
1432
+ # MC: ServerboundHelloPacket
1433
+ packet_login_start:
1434
+ username: string
1435
+ playerUUID: UUID
1436
+ # MC: ServerboundKeyPacket
1437
+ packet_encryption_begin:
1438
+ sharedSecret: [
1439
+ "buffer",
1440
+ {
1441
+ "countType": "varint"
1442
+ }
1443
+ ]
1444
+ verifyToken: [
1445
+ "buffer",
1446
+ {
1447
+ "countType": "varint"
1448
+ }
1449
+ ]
1450
+ # MC: ServerboundCustomQueryAnswerPacket
1451
+ packet_login_plugin_response:
1452
+ messageId: varint
1453
+ data?: restBuffer
1454
+ # MC: ServerboundLoginAcknowledgedPacket
1455
+ packet_login_acknowledged:
1456
+ # Empty
1457
+ ## (Cookie Response is Common) ##
1458
+ packet:
1459
+ name: varint =>
1460
+ - login_start
1461
+ - encryption_begin
1462
+ - login_plugin_response
1463
+ - login_acknowledged
1464
+ - cookie_response
1465
+ params: name ?
1466
+ if login_start: packet_login_start
1467
+ if encryption_begin: packet_encryption_begin
1468
+ if login_plugin_response: packet_login_plugin_response
1469
+ if login_acknowledged: packet_login_acknowledged
1470
+ if cookie_response: packet_common_cookie_response
1471
+ ^configuration.toClient.types:
1472
+ ## (Cookie Request is common)
1473
+ # MC: ClientboundCustomPayloadPacket
1474
+ packet_custom_payload:
1475
+ channel: string
1476
+ data: restBuffer
1477
+ # MC: ClientboundDisconnectPacket
1478
+ packet_disconnect:
1479
+ reason: anonymousNbt
1480
+ # MC: ClientboundFinishConfigurationPacket
1481
+ packet_finish_configuration:
1482
+ # Empty
1483
+ # MC: ClientboundKeepAlivePacket
1484
+ packet_keep_alive:
1485
+ keepAliveId: i64
1486
+ # MC: ClientboundPingPacket
1487
+ packet_ping:
1488
+ id: i32
1489
+ # MC: ClientboundResetChatPacket
1490
+ packet_reset_chat:
1491
+ # Empty
1492
+ # MC: ClientboundRegistryDataPacket
1493
+ packet_registry_data:
1494
+ # The server can send multiple registries
1495
+ id: string
1496
+ entries: []varint
1497
+ key: string
1498
+ value?: anonymousNbt
1499
+ ## (Store cookie and Transfer are Common) ##
1500
+ # MC: ClientboundUpdateEnabledFeaturesPacket
1501
+ packet_feature_flags:
1502
+ features: string[]varint
1503
+ # MC: ClientboundUpdateTagsPacket
1504
+ packet_tags:
1505
+ tags: []varint
1506
+ tagType: string
1507
+ tags: tags
1508
+ ## (Select known packs is common)
1509
+ # MC: ClientboundShowDialogConfigurationPacket
1510
+ packet_show_dialog:
1511
+ dialog: anonymousNbt
1512
+ packet:
1513
+ name: varint =>
1514
+ - cookie_request
1515
+ - custom_payload
1516
+ - disconnect
1517
+ - finish_configuration
1518
+ - keep_alive
1519
+ - ping
1520
+ - reset_chat
1521
+ - registry_data
1522
+ - remove_resource_pack
1523
+ - add_resource_pack
1524
+ - store_cookie
1525
+ - transfer
1526
+ - feature_flags
1527
+ - tags
1528
+ - select_known_packs
1529
+ - custom_report_details
1530
+ - server_links
1531
+ - clear_dialog
1532
+ - show_dialog
1533
+ params: name ?
1534
+ if cookie_request: packet_common_cookie_request
1535
+ if custom_payload: packet_custom_payload
1536
+ if disconnect: packet_disconnect
1537
+ if finish_configuration: packet_finish_configuration
1538
+ if keep_alive: packet_keep_alive
1539
+ if ping: packet_ping
1540
+ if reset_chat: packet_reset_chat
1541
+ if registry_data: packet_registry_data
1542
+ if remove_resource_pack: packet_common_remove_resource_pack
1543
+ if add_resource_pack: packet_common_add_resource_pack
1544
+ if store_cookie: packet_common_store_cookie
1545
+ if transfer: packet_common_transfer
1546
+ if feature_flags: packet_feature_flags
1547
+ if tags: packet_tags
1548
+ if select_known_packs: packet_common_select_known_packs
1549
+ if custom_report_details: packet_common_custom_report_details
1550
+ if server_links: packet_common_server_links
1551
+ if clear_dialog: packet_common_clear_dialog
1552
+ if show_dialog: packet_show_dialog
1553
+ ^configuration.toServer.types:
1554
+ ## (Settings is Common) ##
1555
+ ## (Cookie Response is Common) ##
1556
+ # MC: ServerboundCustomPayloadPacket
1557
+ packet_custom_payload:
1558
+ channel: string
1559
+ data: restBuffer
1560
+ # MC: ServerboundFinishConfigurationPacket
1561
+ packet_finish_configuration:
1562
+ # Empty
1563
+ # MC: ServerboundKeepAlivePacket
1564
+ packet_keep_alive:
1565
+ keepAliveId: i64
1566
+ # MC: ServerboundPongPacket
1567
+ packet_pong:
1568
+ id: i32
1569
+ # MC: ServerboundResourcePackPacket
1570
+ packet_resource_pack_receive:
1571
+ uuid: UUID
1572
+ result: varint
1573
+ packet:
1574
+ name: varint =>
1575
+ - settings
1576
+ - cookie_response
1577
+ - custom_payload
1578
+ - finish_configuration
1579
+ - keep_alive
1580
+ - pong
1581
+ - resource_pack_receive
1582
+ - select_known_packs
1583
+ - custom_click_action
1584
+ params: name ?
1585
+ if settings: packet_common_settings
1586
+ if cookie_response: packet_common_cookie_response
1587
+ if custom_payload: packet_custom_payload
1588
+ if finish_configuration: packet_finish_configuration
1589
+ if keep_alive: packet_keep_alive
1590
+ if pong: packet_pong
1591
+ if resource_pack_receive: packet_resource_pack_receive
1592
+ if select_known_packs: packet_common_select_known_packs
1593
+ if custom_click_action: packet_common_custom_click_action
1594
+ ^play.toClient.types:
1595
+ SlotDisplay:
1596
+ type: varint =>
1597
+ - empty
1598
+ - any_fuel
1599
+ - item
1600
+ - item_stack
1601
+ - tag
1602
+ - smithing_trim
1603
+ - with_remainder
1604
+ - composite
1605
+ data: type ?
1606
+ if empty or any_fuel: void
1607
+ if item: varint
1608
+ if item_stack: Slot
1609
+ if tag: string
1610
+ if smithing_trim:
1611
+ base: SlotDisplay
1612
+ material: SlotDisplay
1613
+ pattern: ["registryEntryHolder", { "baseName": "patternId", "otherwise": { "name": "data", "type": "ArmorTrimPattern" } }]
1614
+ if with_remainder:
1615
+ input: SlotDisplay
1616
+ remainder: SlotDisplay
1617
+ if composite: SlotDisplay[]varint
1618
+ RecipeDisplay:
1619
+ type: varint =>
1620
+ - crafting_shapeless
1621
+ - crafting_shaped
1622
+ - furnace
1623
+ - stonecutter
1624
+ - smithing
1625
+ data: type ?
1626
+ if crafting_shapeless:
1627
+ ingredients: SlotDisplay[]varint
1628
+ result: SlotDisplay
1629
+ craftingStation: SlotDisplay
1630
+ if crafting_shaped:
1631
+ width: varint
1632
+ height: varint
1633
+ ingredients: SlotDisplay[]varint
1634
+ result: SlotDisplay
1635
+ craftingStation: SlotDisplay
1636
+ if furnace:
1637
+ ingredient: SlotDisplay
1638
+ fuel: SlotDisplay
1639
+ result: SlotDisplay
1640
+ craftingStation: SlotDisplay
1641
+ duration: varint
1642
+ experience: f32
1643
+ if stonecutter:
1644
+ ingredient: SlotDisplay
1645
+ result: SlotDisplay
1646
+ craftingStation: SlotDisplay
1647
+ if smithing:
1648
+ template: SlotDisplay
1649
+ base: SlotDisplay
1650
+ addition: SlotDisplay
1651
+ result: SlotDisplay
1652
+ craftingStation: SlotDisplay
1653
+ # World state information for spawn and respawn packets
1654
+ SpawnInfo:
1655
+ dimension: varint
1656
+ name: string
1657
+ hashedSeed: i64
1658
+ gamemode: i8 =>
1659
+ - survival
1660
+ - creative
1661
+ - adventure
1662
+ - spectator
1663
+ previousGamemode: u8
1664
+ isDebug: bool
1665
+ isFlat: bool
1666
+ death?:
1667
+ dimensionName: string
1668
+ location: position
1669
+ portalCooldown: varint
1670
+ seaLevel: varint
1671
+
1672
+ # MC: ClientboundAddEntityPacket
1673
+ packet_spawn_entity:
1674
+ entityId: varint
1675
+ objectUUID: UUID
1676
+ type: varint
1677
+ x: f64
1678
+ y: f64
1679
+ z: f64
1680
+ pitch: i8
1681
+ yaw: i8
1682
+ headPitch: i8
1683
+ objectData: varint
1684
+ velocityX: i16
1685
+ velocityY: i16
1686
+ velocityZ: i16
1687
+ # MC: ClientboundAnimatePacket
1688
+ packet_animation:
1689
+ entityId: varint
1690
+ animation: u8
1691
+ # MC: ClientboundAwardStatsPacket
1692
+ packet_statistics:
1693
+ entries: []varint
1694
+ categoryId: varint
1695
+ statisticId: varint
1696
+ value: varint
1697
+ # MC: ClientboundBlockChangedAckPacket
1698
+ packet_acknowledge_player_digging:
1699
+ sequenceId: varint
1700
+ # MC: ClientboundBlockDestructionPacket
1701
+ packet_block_break_animation:
1702
+ entityId: varint
1703
+ location: position
1704
+ destroyStage: i8
1705
+ # MC: ClientboundBlockEntityDataPacket
1706
+ packet_tile_entity_data:
1707
+ location: position
1708
+ action: varint
1709
+ nbtData: anonOptionalNbt
1710
+ # MC: ClientboundBlockEventPacket
1711
+ packet_block_action:
1712
+ location: position
1713
+ byte1: u8
1714
+ byte2: u8
1715
+ blockId: varint
1716
+ # MC: ClientboundBlockUpdatePacket
1717
+ packet_block_change:
1718
+ location: position
1719
+ type: varint
1720
+ # MC: ClientboundBossEventPacket
1721
+ packet_boss_bar:
1722
+ entityUUID: UUID
1723
+ action: varint
1724
+ title: action ?
1725
+ if 0: anonymousNbt
1726
+ if 3: anonymousNbt
1727
+ default: void
1728
+ health: action ?
1729
+ if 0: f32
1730
+ if 2: f32
1731
+ default: void
1732
+ color: action ?
1733
+ if 0: varint
1734
+ if 4: varint
1735
+ default: void
1736
+ dividers: action ?
1737
+ if 0: varint
1738
+ if 4: varint
1739
+ default: void
1740
+ flags: action ?
1741
+ if 0: u8
1742
+ if 5: u8
1743
+ default: void
1744
+ # MC: ClientboundChangeDifficultyPacket
1745
+ packet_difficulty:
1746
+ difficulty: varint =>
1747
+ 0: peaceful
1748
+ 1: easy
1749
+ 2: normal
1750
+ 3: hard
1751
+ difficultyLocked: bool
1752
+ # MC: ClientboundChunkBatchFinishedPacket
1753
+ packet_chunk_batch_finished:
1754
+ batchSize: varint
1755
+ # MC: ClientboundChunkBatchStartPacket
1756
+ packet_chunk_batch_start:
1757
+ # Empty
1758
+ # MC: ClientboundChunksBiomesPacket
1759
+ packet_chunk_biomes:
1760
+ biomes: []varint
1761
+ position: packedChunkPos
1762
+ data: ByteArray
1763
+ # MC: ClientboundClearTitlesPacket
1764
+ packet_clear_titles:
1765
+ reset: bool
1766
+ # MC: ClientboundCommandSuggestionsPacket
1767
+ packet_tab_complete:
1768
+ transactionId: varint
1769
+ start: varint
1770
+ length: varint
1771
+ matches: []varint
1772
+ match: string
1773
+ tooltip?: anonymousNbt
1774
+ # MC: ClientboundCommandsPacket
1775
+ packet_declare_commands:
1776
+ nodes: command_node[]varint
1777
+ rootIndex: varint
1778
+ # MC: ClientboundContainerClosePacket
1779
+ packet_close_window:
1780
+ windowId: ContainerID
1781
+ # MC: ClientboundContainerSetContentPacket
1782
+ packet_window_items:
1783
+ windowId: ContainerID
1784
+ stateId: varint
1785
+ items: Slot[]varint
1786
+ carriedItem: Slot
1787
+ # MC: ClientboundContainerSetDataPacket
1788
+ packet_craft_progress_bar:
1789
+ windowId: ContainerID
1790
+ property: i16
1791
+ value: i16
1792
+ # MC: ClientboundContainerSetSlotPacket
1793
+ packet_set_slot:
1794
+ windowId: ContainerID
1795
+ stateId: varint
1796
+ slot: i16
1797
+ item: Slot
1798
+ ## (Cookie Request is Common)
1799
+ # MC: ClientboundCooldownPacket
1800
+ packet_set_cooldown:
1801
+ # TODO: figure out what this is
1802
+ cooldownGroup: string
1803
+ cooldownTicks: varint
1804
+ # MC: ClientboundCustomChatCompletionsPacket
1805
+ packet_chat_suggestions:
1806
+ action: varint
1807
+ entries: string[]varint
1808
+ # MC: ClientboundCustomPayloadPacket
1809
+ packet_custom_payload:
1810
+ channel: string
1811
+ data: restBuffer
1812
+ # MC: ClientboundDamageEventPacket
1813
+ packet_damage_event:
1814
+ entityId: varint
1815
+ sourceTypeId: varint
1816
+ sourceCauseId: varint
1817
+ sourceDirectId: varint
1818
+ sourcePosition?: vec3f64
1819
+ # MC: ClientboundDebugSamplePacket
1820
+ packet_debug_sample:
1821
+ sample: i64[]varint
1822
+ type: varint
1823
+ # MC: ClientboundDeleteChatPacket
1824
+ packet_hide_message:
1825
+ id: varint
1826
+ signature: id ?
1827
+ if 0: [
1828
+ "buffer",
1829
+ {
1830
+ "count": 256
1831
+ }
1832
+ ]
1833
+ default: void
1834
+ # MC: ClientboundDisconnectPacket
1835
+ packet_kick_disconnect:
1836
+ reason: anonymousNbt
1837
+
1838
+ ## client\net\minecraft\network\chat\ChatTypeDecoration.java
1839
+ ## via client\net\minecraft\network\chat\ChatType.java
1840
+ ChatTypeParameterType: varint =>
1841
+ - content
1842
+ - sender
1843
+ - target
1844
+ ChatType:
1845
+ translationKey: string
1846
+ parameters: ChatTypeParameterType[]varint
1847
+ style: anonymousNbt
1848
+ ChatTypes:
1849
+ chat: ChatType
1850
+ narration: ChatType
1851
+ ChatTypesHolder: ["registryEntryHolder", { "baseName": "chatType", "otherwise": { name: "data", type: "ChatTypes" } }]
1852
+
1853
+ # MC: ClientboundDisguisedChatPacket
1854
+ packet_profileless_chat:
1855
+ message: anonymousNbt
1856
+ type: ChatTypesHolder
1857
+ name: anonymousNbt
1858
+ target?: anonymousNbt
1859
+ # MC: ClientboundEntityEventPacket
1860
+ packet_entity_status:
1861
+ entityId: i32
1862
+ entityStatus: i8
1863
+ # MC: ClientboundEntityPositionSyncPacket
1864
+ packet_sync_entity_position:
1865
+ entityId: varint
1866
+ x: f64
1867
+ y: f64
1868
+ z: f64
1869
+ dx: f64
1870
+ dy: f64
1871
+ dz: f64
1872
+ yaw: f32
1873
+ pitch: f32
1874
+ onGround: bool
1875
+ # MC: ClientboundExplodePacket
1876
+ packet_explosion:
1877
+ x: f64
1878
+ y: f64
1879
+ z: f64
1880
+ playerKnockback?: vec3f
1881
+ explosionParticle: Particle
1882
+ sound: ItemSoundHolder
1883
+ # MC: ClientboundForgetLevelChunkPacket
1884
+ packet_unload_chunk:
1885
+ chunkZ: i32
1886
+ chunkX: i32
1887
+ # MC: ClientboundGameEventPacket
1888
+ packet_game_state_change:
1889
+ reason: u8 =>
1890
+ 0: no_respawn_block_available
1891
+ 1: start_raining
1892
+ 2: stop_raining
1893
+ 3: change_game_mode
1894
+ 4: win_game
1895
+ 5: demo_event
1896
+ 6: play_arrow_hit_sound
1897
+ 7: rain_level_change
1898
+ 8: thunder_level_change
1899
+ 9: puffer_fish_sting
1900
+ 10: guardian_elder_effect
1901
+ 11: immediate_respawn
1902
+ 12: limited_crafting
1903
+ 13: level_chunks_load_start
1904
+ gameMode: f32
1905
+ # MC: ClientboundHorseScreenOpenPacket
1906
+ packet_open_horse_window:
1907
+ windowId: ContainerID
1908
+ nbSlots: varint
1909
+ entityId: i32
1910
+ # MC: ClientboundHurtAnimationPacket
1911
+ packet_hurt_animation:
1912
+ entityId: varint
1913
+ yaw: f32
1914
+ # MC: ClientboundInitializeBorderPacket
1915
+ packet_initialize_world_border:
1916
+ x: f64
1917
+ z: f64
1918
+ oldDiameter: f64
1919
+ newDiameter: f64
1920
+ speed: varint
1921
+ portalTeleportBoundary: varint
1922
+ warningBlocks: varint
1923
+ warningTime: varint
1924
+ # MC: ClientboundKeepAlivePacket
1925
+ packet_keep_alive:
1926
+ keepAliveId: i64
1927
+ # MC: ClientboundLevelChunkWithLightPacket
1928
+ packet_map_chunk:
1929
+ x: i32
1930
+ z: i32
1931
+ heightmaps: []varint
1932
+ type: varint =>
1933
+ 0: world_surface_wg
1934
+ 1: world_surface
1935
+ 2: ocean_floor_wg
1936
+ 3: ocean_floor
1937
+ 4: motion_blocking
1938
+ 5: motion_blocking_no_leaves
1939
+ data: i64[]varint
1940
+ chunkData: ByteArray
1941
+ blockEntities: chunkBlockEntity[]varint
1942
+ skyLightMask: i64[]varint
1943
+ blockLightMask: i64[]varint
1944
+ emptySkyLightMask: i64[]varint
1945
+ emptyBlockLightMask: i64[]varint
1946
+ skyLight: []varint
1947
+ _: u8[]varint
1948
+ blockLight: []varint
1949
+ _: u8[]varint
1950
+ # MC: ClientboundLevelEventPacket
1951
+ packet_world_event:
1952
+ effectId: i32
1953
+ location: position
1954
+ data: i32
1955
+ global: bool
1956
+ # MC: ClientboundLevelParticlesPacket
1957
+ packet_world_particles:
1958
+ longDistance: bool
1959
+ alwaysShow: bool
1960
+ x: f64
1961
+ y: f64
1962
+ z: f64
1963
+ offsetX: f32
1964
+ offsetY: f32
1965
+ offsetZ: f32
1966
+ velocityOffset: f32
1967
+ amount: i32
1968
+ particle: Particle
1969
+ # MC: ClientboundLightUpdatePacket
1970
+ packet_update_light:
1971
+ chunkX: varint
1972
+ chunkZ: varint
1973
+ skyLightMask: i64[]varint
1974
+ blockLightMask: i64[]varint
1975
+ emptySkyLightMask: i64[]varint
1976
+ emptyBlockLightMask: i64[]varint
1977
+ skyLight: []varint
1978
+ _: u8[]varint
1979
+ blockLight: []varint
1980
+ _: u8[]varint
1981
+ # MC: ClientboundLoginPacket
1982
+ packet_login:
1983
+ entityId: i32
1984
+ isHardcore: bool
1985
+ worldNames: string[]varint
1986
+ maxPlayers: varint
1987
+ viewDistance: varint
1988
+ simulationDistance: varint
1989
+ reducedDebugInfo: bool
1990
+ enableRespawnScreen: bool
1991
+ doLimitedCrafting: bool
1992
+ worldState: SpawnInfo
1993
+ enforcesSecureChat: bool
1994
+ # MC: ClientboundMapItemDataPacket
1995
+ packet_map:
1996
+ itemDamage: varint
1997
+ scale: i8
1998
+ locked: bool
1999
+ icons?: []varint
2000
+ type: varint
2001
+ x: i8
2002
+ z: i8
2003
+ direction: u8
2004
+ displayName?: anonymousNbt
2005
+ columns: u8
2006
+ rows: columns ?
2007
+ if 0: void
2008
+ default: u8
2009
+ x: columns ?
2010
+ if 0: void
2011
+ default: u8
2012
+ y: columns ?
2013
+ if 0: void
2014
+ default: u8
2015
+ data: columns ?
2016
+ if 0: void
2017
+ default: [
2018
+ "buffer",
2019
+ {
2020
+ "countType": "varint"
2021
+ }
2022
+ ]
2023
+ # MC: ClientboundMerchantOffersPacket
2024
+ packet_trade_list:
2025
+ windowId: ContainerID
2026
+ ## https://github.com/extremeheat/extracted_minecraft_data/blob/client1.20.5/client/net/minecraft/world/item/trading/MerchantOffer.java#L210
2027
+ trades: []varint
2028
+ inputItem1:
2029
+ itemId: varint
2030
+ itemCount: varint
2031
+ components: ExactComponentMatcher
2032
+ outputItem: Slot
2033
+ inputItem2?:
2034
+ itemId: varint
2035
+ itemCount: varint
2036
+ components: ExactComponentMatcher
2037
+ tradeDisabled: bool
2038
+ nbTradeUses: i32
2039
+ maximumNbTradeUses: i32
2040
+ xp: i32
2041
+ specialPrice: i32
2042
+ priceMultiplier: f32
2043
+ demand: i32
2044
+ villagerLevel: varint
2045
+ experience: varint
2046
+ isRegularVillager: bool
2047
+ canRestock: bool
2048
+ # MC: ClientboundMoveEntityPacket.Pos
2049
+ packet_rel_entity_move:
2050
+ entityId: varint
2051
+ dX: i16
2052
+ dY: i16
2053
+ dZ: i16
2054
+ onGround: bool
2055
+ # MC: ClientboundMoveEntityPacket.PosRot
2056
+ packet_entity_move_look:
2057
+ entityId: varint
2058
+ dX: i16
2059
+ dY: i16
2060
+ dZ: i16
2061
+ yaw: i8
2062
+ pitch: i8
2063
+ onGround: bool
2064
+ # MC: ClientboundMoveMinecartPacket
2065
+ packet_move_minecart: # 1.21.3
2066
+ entityId: varint
2067
+ steps: []varint
2068
+ position: vec3f
2069
+ movement: vec3f
2070
+ yaw: f32
2071
+ pitch: f32
2072
+ weight: f32
2073
+ # MC: ClientboundMoveEntityPacket.Rot
2074
+ packet_entity_look:
2075
+ entityId: varint
2076
+ yaw: i8
2077
+ pitch: i8
2078
+ onGround: bool
2079
+ # MC: ClientboundMoveVehiclePacket
2080
+ packet_vehicle_move:
2081
+ x: f64
2082
+ y: f64
2083
+ z: f64
2084
+ yaw: f32
2085
+ pitch: f32
2086
+ # MC: ClientboundOpenBookPacket
2087
+ packet_open_book:
2088
+ hand: varint
2089
+ # MC: ClientboundOpenScreenPacket
2090
+ packet_open_window:
2091
+ windowId: varint
2092
+ inventoryType: varint
2093
+ windowTitle: anonymousNbt
2094
+ # MC: ClientboundOpenSignEditorPacket
2095
+ packet_open_sign_entity:
2096
+ location: position
2097
+ isFrontText: bool
2098
+ # MC: ClientboundPingPacket
2099
+ packet_ping:
2100
+ id: i32
2101
+ # MC: ClientboundPongResponsePacket
2102
+ packet_ping_response:
2103
+ id: i64
2104
+ # MC: ClientboundPlaceGhostRecipePacket
2105
+ packet_craft_recipe_response:
2106
+ windowId: ContainerID
2107
+ recipeDisplay: RecipeDisplay
2108
+ # MC: ClientboundPlayerAbilitiesPacket
2109
+ packet_abilities:
2110
+ flags: i8
2111
+ flyingSpeed: f32
2112
+ walkingSpeed: f32
2113
+ # MC: ClientboundPlayerChatPacket
2114
+ packet_player_chat:
2115
+ globalIndex: varint
2116
+ senderUuid: UUID
2117
+ index: varint
2118
+ signature?: [
2119
+ "buffer",
2120
+ {
2121
+ "count": 256
2122
+ }
2123
+ ]
2124
+ plainMessage: string
2125
+ timestamp: i64
2126
+ salt: i64
2127
+ previousMessages: previousMessages
2128
+ unsignedChatContent?: anonymousNbt
2129
+ filterType: varint
2130
+ filterTypeMask: filterType ?
2131
+ if 2: i64[]varint
2132
+ default: void
2133
+ type: ChatTypesHolder
2134
+ networkName: anonymousNbt
2135
+ networkTargetName?: anonymousNbt
2136
+ # MC: ClientboundPlayerCombatEndPacket
2137
+ packet_end_combat_event:
2138
+ duration: varint
2139
+ # MC: ClientboundPlayerCombatEnterPacket
2140
+ packet_enter_combat_event:
2141
+ # Empty
2142
+ # MC: ClientboundPlayerCombatKillPacket
2143
+ packet_death_combat_event:
2144
+ playerId: varint
2145
+ message: anonymousNbt
2146
+ # MC: ClientboundPlayerInfoRemovePacket
2147
+ packet_player_remove:
2148
+ players: UUID[]varint
2149
+ # MC: ClientboundPlayerInfoUpdatePacket
2150
+ packet_player_info:
2151
+ ## ClientboundPlayerInfoUpdatePacket.java#L160
2152
+ action: ["bitflags", {
2153
+ "type": "u8",
2154
+ "flags": [
2155
+ "add_player",
2156
+ "initialize_chat",
2157
+ "update_game_mode",
2158
+ "update_listed",
2159
+ "update_latency",
2160
+ "update_display_name",
2161
+ "update_hat",
2162
+ "update_list_order"
2163
+ ]
2164
+ }]
2165
+ data: []varint
2166
+ uuid: UUID
2167
+ player: ../action/add_player ?
2168
+ if true: game_profile
2169
+ default: void
2170
+ chatSession: ../action/initialize_chat ?
2171
+ if true: chat_session
2172
+ default: void
2173
+ gamemode: ../action/update_game_mode ?
2174
+ if true: varint
2175
+ default: void
2176
+ listed: ../action/update_listed ?
2177
+ if true: varint
2178
+ default: void
2179
+ latency: ../action/update_latency ?
2180
+ if true: varint
2181
+ default: void
2182
+ displayName: ../action/update_display_name ?
2183
+ if true: ["option", "anonymousNbt"]
2184
+ default: void
2185
+ listPriority: ../action/update_list_order ?
2186
+ if true: varint
2187
+ default: void
2188
+ showHat: ../action/update_hat ?
2189
+ if true: bool
2190
+ default: void
2191
+
2192
+ # MC: ClientboundPlayerLookAtPacket
2193
+ packet_face_player:
2194
+ feet_eyes: varint
2195
+ x: f64
2196
+ y: f64
2197
+ z: f64
2198
+ isEntity: bool
2199
+ entityId: isEntity ?
2200
+ if true: varint
2201
+ default: void
2202
+ entity_feet_eyes: isEntity ?
2203
+ if true: varint
2204
+ default: void
2205
+
2206
+ # https://github.com/extremeheat/extracted_minecraft_data/blob/client1.21.2/client/net/minecraft/world/entity/Relative.java#L82
2207
+ PositionUpdateRelatives: ["bitflags", {
2208
+ "type": "u32",
2209
+ "flags": ["x", "y", "z", "yaw", "pitch", "dx", "dy", "dz", "yawDelta"]
2210
+ }]
2211
+ # MC: ClientboundPlayerPositionPacket
2212
+ packet_position:
2213
+ teleportId: varint
2214
+ x: f64
2215
+ y: f64
2216
+ z: f64
2217
+ dx: f64
2218
+ dy: f64
2219
+ dz: f64
2220
+ yaw: f32
2221
+ pitch: f32
2222
+ flags: PositionUpdateRelatives
2223
+ # MC: ClientboundPlayerRotationPacket
2224
+ packet_player_rotation:
2225
+ yaw: f32
2226
+ pitch: f32
2227
+
2228
+ # MC: ClientboundRecipeBookAddPacket
2229
+ packet_recipe_book_add:
2230
+ entries: []varint
2231
+ # RecipeDisplayEntry
2232
+ recipe:
2233
+ displayId: varint
2234
+ display: RecipeDisplay
2235
+ group: optvarint
2236
+ # This ID corresponds to the "recipe_book_category" registry
2237
+ category: varint =>
2238
+ - crafting_building_blocks
2239
+ - crafting_redstone
2240
+ - crafting_equipment
2241
+ - crafting_misc
2242
+ - furnace_food
2243
+ - furnace_blocks
2244
+ - furnace_misc
2245
+ - blast_furnace_blocks
2246
+ - blast_furnace_misc
2247
+ - smoker_food
2248
+ - stonecutter
2249
+ - smithing
2250
+ - campfire
2251
+ craftingRequirements?: IDSet[]varint
2252
+ flags: ["bitflags", {
2253
+ "type": "u8",
2254
+ "flags": ["notification", "highlight"]
2255
+ }]
2256
+ replace: bool
2257
+ # MC: ClientboundRecipeBookRemovePacket
2258
+ packet_recipe_book_remove:
2259
+ recipeIds: varint[]varint
2260
+ # MC: ClientboundRecipeBookSettingsPacket
2261
+ RecipeBookSetting:
2262
+ open: bool
2263
+ filtering: bool
2264
+ packet_recipe_book_settings:
2265
+ crafting: RecipeBookSetting
2266
+ furnace: RecipeBookSetting
2267
+ blast: RecipeBookSetting
2268
+ smoker: RecipeBookSetting
2269
+ # MC: ClientboundRemoveEntitiesPacket
2270
+ packet_entity_destroy:
2271
+ entityIds: varint[]varint
2272
+ # MC: ClientboundRemoveMobEffectPacket
2273
+ packet_remove_entity_effect:
2274
+ entityId: varint
2275
+ effectId: varint
2276
+ # MC: ClientboundResetScorePacket
2277
+ packet_reset_score:
2278
+ entity_name: string
2279
+ objective_name?: string
2280
+ ## (remove_resource_pack is common)
2281
+ # MC: ClientboundRespawnPacket
2282
+ packet_respawn:
2283
+ worldState: SpawnInfo
2284
+ # Bit field: 0b1 - KEEP_ATTRIBUTE_MODIFIERS, 0b10 - KEEP_ENTITY_DATA
2285
+ copyMetadata: u8
2286
+ # MC: ClientboundRotateHeadPacket
2287
+ packet_entity_head_rotation:
2288
+ entityId: varint
2289
+ headYaw: i8
2290
+ # MC: ClientboundSectionBlocksUpdatePacket
2291
+ packet_multi_block_change:
2292
+ chunkCoordinates: [ "bitfield", [
2293
+ { "name": "x", "size": 22, "signed": true },
2294
+ { "name": "z", "size": 22, "signed": true },
2295
+ { "name": "y", "size": 20, "signed": true }
2296
+ ]]
2297
+ records: varint[]varint
2298
+ # MC: ClientboundSelectAdvancementsTabPacket
2299
+ packet_select_advancement_tab:
2300
+ id?: string
2301
+ # MC: ClientboundServerDataPacket
2302
+ packet_server_data:
2303
+ motd: anonymousNbt
2304
+ iconBytes?: ByteArray
2305
+ # MC: ClientboundSetActionBarTextPacket
2306
+ packet_action_bar:
2307
+ text: anonymousNbt
2308
+ # MC: ClientboundSetBorderCenterPacket
2309
+ packet_world_border_center:
2310
+ x: f64
2311
+ z: f64
2312
+ # MC: ClientboundSetBorderLerpSizePacket
2313
+ packet_world_border_lerp_size:
2314
+ oldDiameter: f64
2315
+ newDiameter: f64
2316
+ speed: varint
2317
+ # MC: ClientboundSetBorderSizePacket
2318
+ packet_world_border_size:
2319
+ diameter: f64
2320
+ # MC: ClientboundSetBorderWarningDelayPacket
2321
+ packet_world_border_warning_delay:
2322
+ warningTime: varint
2323
+ # MC: ClientboundSetBorderWarningDistancePacket
2324
+ packet_world_border_warning_reach:
2325
+ warningBlocks: varint
2326
+ # MC: ClientboundSetCameraPacket
2327
+ packet_camera:
2328
+ cameraId: varint
2329
+ # MC: ClientboundSetChunkCacheCenterPacket
2330
+ packet_update_view_position:
2331
+ chunkX: varint
2332
+ chunkZ: varint
2333
+ # MC: ClientboundSetChunkCacheRadiusPacket
2334
+ packet_update_view_distance:
2335
+ viewDistance: varint
2336
+ # MC: ClientboundSetCursorItemPacket
2337
+ packet_set_cursor_item:
2338
+ contents: Slot
2339
+ # MC: ClientboundSetDefaultSpawnPositionPacket
2340
+ packet_spawn_position:
2341
+ location: position
2342
+ angle: f32
2343
+ # MC: ClientboundSetDisplayObjectivePacket
2344
+ packet_scoreboard_display_objective:
2345
+ position: varint
2346
+ name: string
2347
+ # MC: ClientboundSetEntityDataPacket
2348
+ packet_entity_metadata:
2349
+ entityId: varint
2350
+ metadata: entityMetadata
2351
+ # MC: ClientboundSetEntityLinkPacket
2352
+ packet_attach_entity:
2353
+ entityId: i32
2354
+ vehicleId: i32
2355
+ # MC: ClientboundSetEntityMotionPacket
2356
+ packet_entity_velocity:
2357
+ entityId: varint
2358
+ velocityX: i16
2359
+ velocityY: i16
2360
+ velocityZ: i16
2361
+ # MC: ClientboundSetEquipmentPacket
2362
+ packet_entity_equipment:
2363
+ entityId: varint
2364
+ equipments: [
2365
+ "topBitSetTerminatedArray",
2366
+ {
2367
+ "type": [
2368
+ "container",
2369
+ [
2370
+ {
2371
+ "name": "slot",
2372
+ "type": "i8"
2373
+ },
2374
+ {
2375
+ "name": "item",
2376
+ "type": "Slot"
2377
+ }
2378
+ ]
2379
+ ]
2380
+ }
2381
+ ]
2382
+ # MC: ClientboundSetExperiencePacket
2383
+ packet_experience:
2384
+ experienceBar: f32
2385
+ level: varint
2386
+ totalExperience: varint
2387
+ # MC: ClientboundSetHealthPacket
2388
+ packet_update_health:
2389
+ health: f32
2390
+ food: varint
2391
+ foodSaturation: f32
2392
+ # MC: ClientboundSetHeldSlotPacket
2393
+ packet_held_item_slot:
2394
+ slot: varint
2395
+ # MC: ClientboundSetObjectivePacket
2396
+ packet_scoreboard_objective:
2397
+ name: string
2398
+ action: i8
2399
+ displayText: action ?
2400
+ if 0: anonymousNbt
2401
+ if 2: anonymousNbt
2402
+ default: void
2403
+ type: action ?
2404
+ if 0: varint
2405
+ if 2: varint
2406
+ default: void
2407
+ number_format: action ?
2408
+ if 0: [
2409
+ "option",
2410
+ "varint"
2411
+ ]
2412
+ if 2: [
2413
+ "option",
2414
+ "varint"
2415
+ ]
2416
+ default: void
2417
+ styling: action ?
2418
+ if 0: number_format ?
2419
+ if 1: anonymousNbt
2420
+ if 2: anonymousNbt
2421
+ default: void
2422
+ if 2: number_format ?
2423
+ if 1: anonymousNbt
2424
+ if 2: anonymousNbt
2425
+ default: void
2426
+ default: void
2427
+ # MC: ClientboundSetPassengersPacket
2428
+ packet_set_passengers:
2429
+ entityId: varint
2430
+ passengers: varint[]varint
2431
+ # MC: ClientboundSetPlayerInventoryPacket
2432
+ packet_set_player_inventory:
2433
+ slotId: varint
2434
+ contents: Slot
2435
+ # MC: ClientboundSetPlayerTeamPacket
2436
+ packet_teams:
2437
+ team: string
2438
+ mode: i8 =>
2439
+ - add
2440
+ - remove
2441
+ - change
2442
+ - join
2443
+ - leave
2444
+ _: mode ?
2445
+ if add or change:
2446
+ name: anonymousNbt
2447
+ flags: ["bitflags", {
2448
+ "type": "u8",
2449
+ "flags": ["friendly_fire", "see_friendly_invisible"]
2450
+ }]
2451
+ nameTagVisibility: varint =>
2452
+ - always
2453
+ - never
2454
+ - hide_for_other_teams
2455
+ - hide_for_own_team
2456
+ collisionRule: varint =>
2457
+ - always
2458
+ - never
2459
+ - push_other_teams
2460
+ - push_own_team
2461
+ formatting: varint
2462
+ prefix: anonymousNbt
2463
+ suffix: anonymousNbt
2464
+ default: void
2465
+ players: mode ?
2466
+ if add or join or leave: string[]varint
2467
+ default: void
2468
+ # MC: ClientboundSetScorePacket
2469
+ packet_scoreboard_score:
2470
+ itemName: string
2471
+ scoreName: string
2472
+ value: varint
2473
+ display_name?: anonymousNbt
2474
+ number_format?: varint
2475
+ styling: number_format ?
2476
+ if 1: anonymousNbt
2477
+ if 2: anonymousNbt
2478
+ default: void
2479
+ # MC: ClientboundSetSimulationDistancePacket
2480
+ packet_simulation_distance:
2481
+ distance: varint
2482
+ # MC: ClientboundSetSubtitleTextPacket
2483
+ packet_set_title_subtitle:
2484
+ text: anonymousNbt
2485
+ # MC: ClientboundSetTimePacket
2486
+ packet_update_time:
2487
+ age: i64
2488
+ time: i64
2489
+ tickDayTime: bool
2490
+ # MC: ClientboundSetTitleTextPacket
2491
+ packet_set_title_text:
2492
+ text: anonymousNbt
2493
+ # MC: ClientboundSetTitlesAnimationPacket
2494
+ packet_set_title_time:
2495
+ fadeIn: i32
2496
+ stay: i32
2497
+ fadeOut: i32
2498
+ # MC: ClientboundSoundEntityPacket
2499
+ packet_entity_sound_effect:
2500
+ sound: ItemSoundHolder
2501
+ soundCategory: soundSource
2502
+ entityId: varint
2503
+ volume: f32
2504
+ pitch: f32
2505
+ seed: i64
2506
+ # MC: ClientboundSoundPacket
2507
+ packet_sound_effect:
2508
+ sound: ItemSoundHolder
2509
+ soundCategory: soundSource
2510
+ x: i32
2511
+ y: i32
2512
+ z: i32
2513
+ volume: f32
2514
+ pitch: f32
2515
+ seed: i64
2516
+ # MC: ClientboundStartConfigurationPacket
2517
+ packet_start_configuration:
2518
+ # Empty
2519
+ # MC: ClientboundStopSoundPacket
2520
+ packet_stop_sound:
2521
+ flags: i8
2522
+ source: flags ?
2523
+ if 1: varint
2524
+ if 3: varint
2525
+ default: void
2526
+ sound: flags ?
2527
+ if 2: string
2528
+ if 3: string
2529
+ default: void
2530
+ ## (Store Cookie is Common)
2531
+ # MC: ClientboundSystemChatPacket
2532
+ packet_system_chat:
2533
+ content: anonymousNbt
2534
+ isActionBar: bool
2535
+ # MC: ClientboundTabListPacket
2536
+ packet_playerlist_header:
2537
+ header: anonymousNbt
2538
+ footer: anonymousNbt
2539
+ # MC: ClientboundTagQueryPacket
2540
+ packet_nbt_query_response:
2541
+ transactionId: varint
2542
+ nbt: anonOptionalNbt
2543
+ # MC: ClientboundTakeItemEntityPacket
2544
+ packet_collect:
2545
+ collectedEntityId: varint
2546
+ collectorEntityId: varint
2547
+ pickupItemCount: varint
2548
+ # MC: ClientboundTeleportEntityPacket
2549
+ packet_entity_teleport:
2550
+ entityId: varint
2551
+ x: f64
2552
+ y: f64
2553
+ z: f64
2554
+ yaw: i8
2555
+ pitch: i8
2556
+ onGround: bool
2557
+ # MC: ClientboundTestInstanceBlockStatusPacket
2558
+ packet_test_instance_block_status:
2559
+ status: anonymousNbt
2560
+ size?: vec3i
2561
+ # MC: ClientboundTickingStatePacket
2562
+ packet_set_ticking_state:
2563
+ tick_rate: f32
2564
+ is_frozen: bool
2565
+ # MC: ClientboundTickingStepPacket
2566
+ packet_step_tick:
2567
+ tick_steps: varint
2568
+ ## (Transfer is common)
2569
+ # MC: ClientboundUpdateAdvancementsPacket
2570
+ packet_advancements:
2571
+ reset: bool
2572
+ advancementMapping: []varint
2573
+ key: string
2574
+ value:
2575
+ parentId?: string
2576
+ displayData?:
2577
+ title: anonymousNbt
2578
+ description: anonymousNbt
2579
+ icon: Slot
2580
+ frameType: varint
2581
+ flags: ["bitfield", [
2582
+ { "name": "unused", "size": 29, "signed": false },
2583
+ { "name": "hidden", "size": 1, "signed": false },
2584
+ { "name": "show_toast", "size": 1, "signed": false },
2585
+ { "name": "has_background_texture", "size": 1, "signed": false }
2586
+ ]]
2587
+ backgroundTexture: flags/has_background_texture ?
2588
+ if 1: string
2589
+ default: void
2590
+ xCord: f32
2591
+ yCord: f32
2592
+ requirements: []varint
2593
+ _: string[]varint
2594
+ sendsTelemtryData: bool
2595
+ identifiers: string[]varint
2596
+ progressMapping: []varint
2597
+ key: string
2598
+ value: []varint
2599
+ criterionIdentifier: string
2600
+ criterionProgress?: i64
2601
+ showAdvancements: bool
2602
+ # MC: ClientboundUpdateAttributesPacket
2603
+ packet_entity_update_attributes:
2604
+ entityId: varint
2605
+ properties: []varint
2606
+ key: varint =>
2607
+ - generic.armor
2608
+ - generic.armor_toughness
2609
+ - generic.attack_damage
2610
+ - generic.attack_knockback
2611
+ - generic.attack_speed
2612
+ - player.block_break_speed
2613
+ - player.block_interaction_range
2614
+ - burning_time
2615
+ - camera_distance
2616
+ - explosion_knockback_resistance
2617
+ - player.entity_interaction_range
2618
+ - generic.fall_damage_multiplier
2619
+ - generic.flying_speed
2620
+ - generic.follow_range
2621
+ - generic.gravity
2622
+ - generic.jump_strength
2623
+ - generic.knockback_resistance
2624
+ - generic.luck
2625
+ - generic.max_absorption
2626
+ - generic.max_health
2627
+ - generic.movement_speed
2628
+ - generic.safe_fall_distance
2629
+ - generic.scale
2630
+ - zombie.spawn_reinforcements
2631
+ - generic.step_height
2632
+ - submerged_mining_speed
2633
+ - sweeping_damage_ratio
2634
+ - tempt_range
2635
+ - water_movement_efficiency
2636
+ - waypoint_transmit_range
2637
+ - waypoint_receive_range
2638
+ value: f64
2639
+ modifiers: []varint
2640
+ uuid: string
2641
+ amount: f64
2642
+ operation: i8
2643
+ # MC: ClientboundUpdateMobEffectPacket
2644
+ packet_entity_effect:
2645
+ entityId: varint
2646
+ effectId: varint
2647
+ amplifier: varint
2648
+ duration: varint
2649
+ # a bitfield of 0x01 for ambient, 0x02 for show particles
2650
+ # flags: ["bitfield", [
2651
+ # { "name": "unused", "size": 4 },
2652
+ # { "name": "ambient", "size": 1 },
2653
+ # { "name": "showParticles", "size": 1 },
2654
+ # { "name": "showIcon", "size": 1 },
2655
+ # { "name": "blend", "size": 1 }
2656
+ # ]]
2657
+ flags: u8
2658
+ # MC: ClientboundUpdateRecipesPacket
2659
+ packet_declare_recipes:
2660
+ recipes: []varint
2661
+ name: string
2662
+ items: varint[]varint
2663
+ stoneCutterRecipes: []varint
2664
+ input: IDSet
2665
+ slotDisplay: SlotDisplay
2666
+
2667
+ # MC: ClientboundUpdateTagsPacket
2668
+ packet_tags:
2669
+ tags: []varint
2670
+ tagType: string
2671
+ tags: tags
2672
+ # MC: ClientboundProjectilePowerPacket
2673
+ packet_set_projectile_power:
2674
+ id: varint
2675
+ accelerationPower: f64
2676
+ ## (ClientboundCustomReportDetailsPacket, ClientboundServerLinksPacket is common)
2677
+ # MC: ClientboundTrackedWaypointPacket
2678
+ packet_tracked_waypoint:
2679
+ operation: varint =>
2680
+ 0: track
2681
+ 1: untrack
2682
+ 2: update
2683
+ waypoint:
2684
+ hasUUID: bool
2685
+ _: hasUUID ?
2686
+ if true:
2687
+ uuid: UUID
2688
+ if false:
2689
+ id: string
2690
+ icon:
2691
+ style: string
2692
+ color?: i32 # RGB color with alpha fixed at FF
2693
+ type: varint =>
2694
+ 0: empty
2695
+ 1: vec3i
2696
+ 2: chunk
2697
+ 3: azimuth
2698
+ data: type ?
2699
+ if vec3i: vec3i
2700
+ if chunk:
2701
+ chunkX: varint
2702
+ chunkZ: varint
2703
+ if azimuth: f32
2704
+ ## (clear_dialog is common)
2705
+ # MC: ClientboundShowDialogGamePacket
2706
+ packet_show_dialog:
2707
+ dialog: ["registryEntryHolder", { "baseName": "dialog", "otherwise": { "name": "data", "type": "anonymousNbt" } }]
2708
+ packet:
2709
+ name: varint =>
2710
+ - bundle_delimiter
2711
+ - spawn_entity
2712
+ - animation
2713
+ - statistics
2714
+ - acknowledge_player_digging
2715
+ - block_break_animation
2716
+ - tile_entity_data
2717
+ - block_action
2718
+ - block_change
2719
+ - boss_bar
2720
+ - difficulty
2721
+ - chunk_batch_finished
2722
+ - chunk_batch_start
2723
+ - chunk_biomes
2724
+ - clear_titles
2725
+ - tab_complete
2726
+ - declare_commands
2727
+ - close_window
2728
+ - window_items
2729
+ - craft_progress_bar
2730
+ - set_slot
2731
+ - cookie_request
2732
+ - set_cooldown
2733
+ - chat_suggestions
2734
+ - custom_payload
2735
+ - damage_event
2736
+ - debug_sample
2737
+ - hide_message
2738
+ - kick_disconnect
2739
+ - profileless_chat
2740
+ - entity_status
2741
+ - sync_entity_position
2742
+ - explosion
2743
+ - unload_chunk
2744
+ - game_state_change
2745
+ - open_horse_window
2746
+ - hurt_animation
2747
+ - initialize_world_border
2748
+ - keep_alive
2749
+ - map_chunk
2750
+ - world_event
2751
+ - world_particles
2752
+ - update_light
2753
+ - login
2754
+ - map
2755
+ - trade_list
2756
+ - rel_entity_move
2757
+ - entity_move_look
2758
+ - move_minecart
2759
+ - entity_look
2760
+ - vehicle_move
2761
+ - open_book
2762
+ - open_window
2763
+ - open_sign_entity
2764
+ - ping
2765
+ - ping_response
2766
+ - craft_recipe_response
2767
+ - abilities
2768
+ - player_chat
2769
+ - end_combat_event
2770
+ - enter_combat_event
2771
+ - death_combat_event
2772
+ - player_remove
2773
+ - player_info
2774
+ - face_player
2775
+ - position
2776
+ - player_rotation
2777
+ - recipe_book_add
2778
+ - recipe_book_remove
2779
+ - recipe_book_settings
2780
+ - entity_destroy
2781
+ - remove_entity_effect
2782
+ - reset_score
2783
+ - remove_resource_pack
2784
+ - add_resource_pack
2785
+ - respawn
2786
+ - entity_head_rotation
2787
+ - multi_block_change
2788
+ - select_advancement_tab
2789
+ - server_data
2790
+ - action_bar
2791
+ - world_border_center
2792
+ - world_border_lerp_size
2793
+ - world_border_size
2794
+ - world_border_warning_delay
2795
+ - world_border_warning_reach
2796
+ - camera
2797
+ - update_view_position
2798
+ - update_view_distance
2799
+ - set_cursor_item
2800
+ - spawn_position
2801
+ - scoreboard_display_objective
2802
+ - entity_metadata
2803
+ - attach_entity
2804
+ - entity_velocity
2805
+ - entity_equipment
2806
+ - experience
2807
+ - update_health
2808
+ - held_item_slot
2809
+ - scoreboard_objective
2810
+ - set_passengers
2811
+ - set_player_inventory
2812
+ - teams
2813
+ - scoreboard_score
2814
+ - simulation_distance
2815
+ - set_title_subtitle
2816
+ - update_time
2817
+ - set_title_text
2818
+ - set_title_time
2819
+ - entity_sound_effect
2820
+ - sound_effect
2821
+ - start_configuration
2822
+ - stop_sound
2823
+ - store_cookie
2824
+ - system_chat
2825
+ - playerlist_header
2826
+ - nbt_query_response
2827
+ - collect
2828
+ - entity_teleport
2829
+ - test_instance_block_status
2830
+ - set_ticking_state
2831
+ - step_tick
2832
+ - transfer
2833
+ - advancements
2834
+ - entity_update_attributes
2835
+ - entity_effect
2836
+ - declare_recipes
2837
+ - tags
2838
+ - set_projectile_power
2839
+ - custom_report_details
2840
+ - server_links
2841
+ - tracked_waypoint
2842
+ - clear_dialog
2843
+ - show_dialog
2844
+ params: name ?
2845
+ if bundle_delimiter: void
2846
+ if spawn_entity: packet_spawn_entity
2847
+ if animation: packet_animation
2848
+ if statistics: packet_statistics
2849
+ if acknowledge_player_digging: packet_acknowledge_player_digging
2850
+ if block_break_animation: packet_block_break_animation
2851
+ if tile_entity_data: packet_tile_entity_data
2852
+ if block_action: packet_block_action
2853
+ if block_change: packet_block_change
2854
+ if boss_bar: packet_boss_bar
2855
+ if difficulty: packet_difficulty
2856
+ if chunk_batch_finished: packet_chunk_batch_finished
2857
+ if chunk_batch_start: packet_chunk_batch_start
2858
+ if chunk_biomes: packet_chunk_biomes
2859
+ if clear_titles: packet_clear_titles
2860
+ if tab_complete: packet_tab_complete
2861
+ if declare_commands: packet_declare_commands
2862
+ if close_window: packet_close_window
2863
+ if window_items: packet_window_items
2864
+ if craft_progress_bar: packet_craft_progress_bar
2865
+ if set_slot: packet_set_slot
2866
+ if cookie_request: packet_common_cookie_request
2867
+ if set_cooldown: packet_set_cooldown
2868
+ if chat_suggestions: packet_chat_suggestions
2869
+ if custom_payload: packet_custom_payload
2870
+ if damage_event: packet_damage_event
2871
+ if debug_sample: packet_debug_sample
2872
+ if hide_message: packet_hide_message
2873
+ if kick_disconnect: packet_kick_disconnect
2874
+ if profileless_chat: packet_profileless_chat
2875
+ if entity_status: packet_entity_status
2876
+ if sync_entity_position: packet_sync_entity_position
2877
+ if explosion: packet_explosion
2878
+ if unload_chunk: packet_unload_chunk
2879
+ if game_state_change: packet_game_state_change
2880
+ if open_horse_window: packet_open_horse_window
2881
+ if hurt_animation: packet_hurt_animation
2882
+ if initialize_world_border: packet_initialize_world_border
2883
+ if keep_alive: packet_keep_alive
2884
+ if map_chunk: packet_map_chunk
2885
+ if world_event: packet_world_event
2886
+ if world_particles: packet_world_particles
2887
+ if update_light: packet_update_light
2888
+ if login: packet_login
2889
+ if map: packet_map
2890
+ if trade_list: packet_trade_list
2891
+ if rel_entity_move: packet_rel_entity_move
2892
+ if entity_move_look: packet_entity_move_look
2893
+ if move_minecart: packet_move_minecart
2894
+ if entity_look: packet_entity_look
2895
+ if vehicle_move: packet_vehicle_move
2896
+ if open_book: packet_open_book
2897
+ if open_window: packet_open_window
2898
+ if open_sign_entity: packet_open_sign_entity
2899
+ if ping: packet_ping
2900
+ if ping_response: packet_ping_response
2901
+ if craft_recipe_response: packet_craft_recipe_response
2902
+ if abilities: packet_abilities
2903
+ if player_chat: packet_player_chat
2904
+ if end_combat_event: packet_end_combat_event
2905
+ if enter_combat_event: packet_enter_combat_event
2906
+ if death_combat_event: packet_death_combat_event
2907
+ if player_remove: packet_player_remove
2908
+ if player_info: packet_player_info
2909
+ if face_player: packet_face_player
2910
+ if position: packet_position
2911
+ if player_rotation: packet_player_rotation
2912
+ if recipe_book_add: packet_recipe_book_add
2913
+ if recipe_book_remove: packet_recipe_book_remove
2914
+ if recipe_book_settings: packet_recipe_book_settings
2915
+ if entity_destroy: packet_entity_destroy
2916
+ if remove_entity_effect: packet_remove_entity_effect
2917
+ if reset_score: packet_reset_score
2918
+ if remove_resource_pack: packet_common_remove_resource_pack
2919
+ if add_resource_pack: packet_common_add_resource_pack
2920
+ if respawn: packet_respawn
2921
+ if entity_head_rotation: packet_entity_head_rotation
2922
+ if multi_block_change: packet_multi_block_change
2923
+ if select_advancement_tab: packet_select_advancement_tab
2924
+ if server_data: packet_server_data
2925
+ if action_bar: packet_action_bar
2926
+ if world_border_center: packet_world_border_center
2927
+ if world_border_lerp_size: packet_world_border_lerp_size
2928
+ if world_border_size: packet_world_border_size
2929
+ if world_border_warning_delay: packet_world_border_warning_delay
2930
+ if world_border_warning_reach: packet_world_border_warning_reach
2931
+ if camera: packet_camera
2932
+ if update_view_position: packet_update_view_position
2933
+ if update_view_distance: packet_update_view_distance
2934
+ if set_cursor_item: packet_set_cursor_item
2935
+ if held_item_slot: packet_held_item_slot
2936
+ if spawn_position: packet_spawn_position
2937
+ if scoreboard_display_objective: packet_scoreboard_display_objective
2938
+ if entity_metadata: packet_entity_metadata
2939
+ if attach_entity: packet_attach_entity
2940
+ if entity_velocity: packet_entity_velocity
2941
+ if entity_equipment: packet_entity_equipment
2942
+ if experience: packet_experience
2943
+ if update_health: packet_update_health
2944
+ if scoreboard_objective: packet_scoreboard_objective
2945
+ if set_passengers: packet_set_passengers
2946
+ if set_player_inventory: packet_set_player_inventory
2947
+ if teams: packet_teams
2948
+ if scoreboard_score: packet_scoreboard_score
2949
+ if simulation_distance: packet_simulation_distance
2950
+ if set_title_subtitle: packet_set_title_subtitle
2951
+ if update_time: packet_update_time
2952
+ if set_title_text: packet_set_title_text
2953
+ if set_title_time: packet_set_title_time
2954
+ if entity_sound_effect: packet_entity_sound_effect
2955
+ if sound_effect: packet_sound_effect
2956
+ if start_configuration: packet_start_configuration
2957
+ if stop_sound: packet_stop_sound
2958
+ if store_cookie: packet_common_store_cookie
2959
+ if system_chat: packet_system_chat
2960
+ if playerlist_header: packet_playerlist_header
2961
+ if nbt_query_response: packet_nbt_query_response
2962
+ if collect: packet_collect
2963
+ if entity_teleport: packet_entity_teleport
2964
+ if test_instance_block_status: packet_test_instance_block_status
2965
+ if set_ticking_state: packet_set_ticking_state
2966
+ if step_tick: packet_step_tick
2967
+ if transfer: packet_common_transfer
2968
+ if advancements: packet_advancements
2969
+ if entity_update_attributes: packet_entity_update_attributes
2970
+ if entity_effect: packet_entity_effect
2971
+ if declare_recipes: packet_declare_recipes
2972
+ if tags: packet_tags
2973
+ if set_projectile_power: packet_set_projectile_power
2974
+ if custom_report_details: packet_common_custom_report_details
2975
+ if server_links: packet_common_server_links
2976
+ if tracked_waypoint: packet_tracked_waypoint
2977
+ if clear_dialog: packet_common_clear_dialog
2978
+ if show_dialog: packet_show_dialog
2979
+
2980
+ ^play.toServer.types:
2981
+ # MC: ServerboundAcceptTeleportationPacket
2982
+ packet_teleport_confirm:
2983
+ teleportId: varint
2984
+ # MC: ServerboundBlockEntityTagQueryPacket
2985
+ packet_query_block_nbt:
2986
+ transactionId: varint
2987
+ location: position
2988
+ # MC: ServerboundSelectBundleItemPacket
2989
+ packet_select_bundle_item:
2990
+ slotId: varint
2991
+ selectedItemIndex: varint
2992
+ # MC: ServerboundChangeDifficultyPacket
2993
+ packet_set_difficulty:
2994
+ newDifficulty: varint =>
2995
+ 0: peaceful
2996
+ 1: easy
2997
+ 2: normal
2998
+ 3: hard
2999
+ # MC: ServerboundChangeGameModePacket
3000
+ packet_change_gamemode:
3001
+ mode: varint =>
3002
+ 0: survival
3003
+ 1: creative
3004
+ 2: adventure
3005
+ 3: spectator
3006
+ # MC: ServerboundChatAckPacket
3007
+ packet_message_acknowledgement:
3008
+ count: varint
3009
+ # MC: ServerboundChatCommandPacket
3010
+ packet_chat_command:
3011
+ command: string
3012
+ # MC: ServerboundChatCommandSignedPacket
3013
+ packet_chat_command_signed:
3014
+ command: string
3015
+ timestamp: i64
3016
+ salt: i64
3017
+ argumentSignatures: []varint
3018
+ argumentName: string
3019
+ signature: [
3020
+ "buffer",
3021
+ {
3022
+ "count": 256
3023
+ }
3024
+ ]
3025
+ messageCount: varint
3026
+ acknowledged: [
3027
+ "buffer",
3028
+ {
3029
+ "count": 3
3030
+ }
3031
+ ]
3032
+ checksum: i8
3033
+ # MC: ServerboundChatPacket
3034
+ packet_chat_message:
3035
+ message: string
3036
+ timestamp: i64
3037
+ salt: i64
3038
+ signature?: [
3039
+ "buffer",
3040
+ {
3041
+ "count": 256
3042
+ }
3043
+ ]
3044
+ offset: varint
3045
+ acknowledged: [
3046
+ "buffer",
3047
+ {
3048
+ "count": 3
3049
+ }
3050
+ ]
3051
+ checksum: i8
3052
+ # MC: ServerboundChatSessionUpdatePacket
3053
+ packet_chat_session_update:
3054
+ sessionUUID: UUID
3055
+ expireTime: i64
3056
+ publicKey: ByteArray
3057
+ signature: ByteArray
3058
+ # MC: ServerboundChunkBatchReceivedPacket
3059
+ packet_chunk_batch_received:
3060
+ chunksPerTick: f32
3061
+ # MC: ServerboundClientCommandPacket
3062
+ packet_client_command:
3063
+ actionId: varint
3064
+ # MC: ServerboundClientTickEndPacket
3065
+ packet_tick_end:
3066
+ # Empty
3067
+ # MC: ServerboundCommandSuggestionPacket
3068
+ packet_tab_complete:
3069
+ transactionId: varint
3070
+ text: string
3071
+ # MC: ServerboundConfigurationAcknowledgedPacket
3072
+ packet_configuration_acknowledged:
3073
+ # Empty
3074
+ # MC: ServerboundContainerButtonClickPacket
3075
+ packet_enchant_item:
3076
+ windowId: ContainerID
3077
+ enchantment: i8
3078
+ # MC: ServerboundContainerClickPacket
3079
+ packet_window_click:
3080
+ windowId: ContainerID
3081
+ stateId: varint
3082
+ slot: i16
3083
+ mouseButton: i8
3084
+ mode: varint
3085
+ changedSlots: []varint
3086
+ location: i16
3087
+ item?: HashedSlot
3088
+ cursorItem?: HashedSlot
3089
+ # MC: ServerboundContainerClosePacket
3090
+ packet_close_window:
3091
+ windowId: ContainerID
3092
+ # MC: ServerboundContainerSlotStateChangedPacket
3093
+ packet_set_slot_state:
3094
+ slot_id: varint
3095
+ window_id: ContainerID
3096
+ state: bool
3097
+ ## (ServerboundCookieResponsePacket is common)
3098
+ # MC: ServerboundCustomPayloadPacket
3099
+ packet_custom_payload:
3100
+ channel: string
3101
+ data: restBuffer
3102
+ # MC: ServerboundDebugSampleSubscriptionPacket
3103
+ packet_debug_sample_subscription:
3104
+ type: varint
3105
+ # MC: ServerboundEditBookPacket
3106
+ packet_edit_book:
3107
+ hand: varint
3108
+ pages: string[]varint
3109
+ title?: string
3110
+ # MC: ServerboundEntityTagQuery
3111
+ packet_query_entity_nbt:
3112
+ transactionId: varint
3113
+ entityId: varint
3114
+ # MC: ServerboundInteractPacket
3115
+ packet_use_entity:
3116
+ target: varint
3117
+ mouse: varint
3118
+ x: mouse ?
3119
+ if 2: f32
3120
+ default: void
3121
+ y: mouse ?
3122
+ if 2: f32
3123
+ default: void
3124
+ z: mouse ?
3125
+ if 2: f32
3126
+ default: void
3127
+ hand: mouse ?
3128
+ if 0: varint
3129
+ if 2: varint
3130
+ default: void
3131
+ sneaking: bool
3132
+ # MC: ServerboundJigsawGeneratePacket
3133
+ packet_generate_structure:
3134
+ location: position
3135
+ levels: varint
3136
+ keepJigsaws: bool
3137
+ # MC: ServerboundKeepAlivePacket
3138
+ packet_keep_alive:
3139
+ keepAliveId: i64
3140
+ # MC: ServerboundLockDifficultyPacket
3141
+ packet_lock_difficulty:
3142
+ locked: bool
3143
+
3144
+ MovementFlags: ["bitflags", {
3145
+ "type": "u8",
3146
+ "flags": ["onGround", "hasHorizontalCollision"]
3147
+ }]
3148
+ # MC: ServerboundMovePlayerPacket.Pos
3149
+ packet_position:
3150
+ x: f64
3151
+ y: f64
3152
+ z: f64
3153
+ flags: MovementFlags
3154
+ # MC: ServerboundMovePlayerPacket.PosRot
3155
+ packet_position_look:
3156
+ x: f64
3157
+ y: f64
3158
+ z: f64
3159
+ yaw: f32
3160
+ pitch: f32
3161
+ flags: MovementFlags
3162
+ # MC: ServerboundMovePlayerPacket.Rot
3163
+ packet_look:
3164
+ yaw: f32
3165
+ pitch: f32
3166
+ flags: MovementFlags
3167
+ # MC: ServerboundMovePlayerPacket.StatusOnly
3168
+ packet_flying:
3169
+ flags: MovementFlags
3170
+ # MC: ServerboundMoveVehiclePacket
3171
+ packet_vehicle_move:
3172
+ x: f64
3173
+ y: f64
3174
+ z: f64
3175
+ yaw: f32
3176
+ pitch: f32
3177
+ onGround: bool
3178
+ # MC: ServerboundPaddleBoatPacket
3179
+ packet_steer_boat:
3180
+ leftPaddle: bool
3181
+ rightPaddle: bool
3182
+ # MC: ServerboundPickItemFromBlockPacket
3183
+ packet_pick_item_from_block:
3184
+ position: position
3185
+ includeData: bool
3186
+ # MC: ServerboundPickItemFromEntityPacket
3187
+ packet_pick_item_from_entity:
3188
+ entityId: varint
3189
+ includeData: bool
3190
+ # MC: ServerboundPingRequestPacket
3191
+ packet_ping_request:
3192
+ id: i64
3193
+ # MC: ServerboundPlaceRecipePacket
3194
+ packet_craft_recipe_request:
3195
+ windowId: ContainerID
3196
+ recipeId: varint
3197
+ makeAll: bool
3198
+ # MC: ServerboundPlayerAbilitiesPacket
3199
+ packet_abilities:
3200
+ flags: i8
3201
+ # MC: ServerboundPlayerActionPacket
3202
+ packet_block_dig:
3203
+ status: varint
3204
+ location: position
3205
+ face: i8
3206
+ sequence: varint
3207
+ # MC: ServerboundPlayerCommandPacket
3208
+ packet_entity_action:
3209
+ entityId: varint
3210
+ actionId: varint =>
3211
+ - leave_bed
3212
+ - start_sprinting
3213
+ - stop_sprinting
3214
+ - start_horse_jump
3215
+ - stop_horse_jump
3216
+ - open_vehicle_inventory
3217
+ - start_elytra_flying
3218
+ jumpBoost: varint
3219
+ # MC: ServerboundPlayerInputPacket
3220
+ # previously: packet_steer_vehicle
3221
+ packet_player_input:
3222
+ ## client/net/minecraft/world/entity/player/Input.java
3223
+ inputs: ["bitflags", {
3224
+ "type": "u8",
3225
+ "flags": ["forward", "backward", "left", "right", "jump", "shift", "sprint"]
3226
+ }]
3227
+ # MC: ServerboundPlayerLoadedPacket
3228
+ packet_player_loaded:
3229
+ # Empty
3230
+ # MC: ServerboundPongPacket
3231
+ packet_pong:
3232
+ id: i32
3233
+ # MC: ServerboundRecipeBookChangeSettingsPacket
3234
+ packet_recipe_book:
3235
+ bookId: varint
3236
+ bookOpen: bool
3237
+ filterActive: bool
3238
+ # MC: ServerboundRecipeBookSeenRecipePacket
3239
+ packet_displayed_recipe:
3240
+ recipeId: varint
3241
+ # MC: ServerboundRenameItemPacket
3242
+ packet_name_item:
3243
+ name: string
3244
+ # MC: ServerboundResourcePackPacket
3245
+ packet_resource_pack_receive:
3246
+ uuid: UUID
3247
+ result: varint
3248
+ # MC: ServerboundSeenAdvancementsPacket
3249
+ packet_advancement_tab:
3250
+ action: varint
3251
+ tabId: action ?
3252
+ if 0: string
3253
+ if 1: void
3254
+ # MC: ServerboundSelectTradePacket
3255
+ packet_select_trade:
3256
+ slot: varint
3257
+ # MC: ServerboundSetBeaconPacket
3258
+ packet_set_beacon_effect:
3259
+ primary_effect?: varint
3260
+ secondary_effect?: varint
3261
+ # MC: ServerboundSetCarriedItemPacket
3262
+ packet_held_item_slot:
3263
+ slotId: i16
3264
+ # MC: ServerboundSetCommandBlockPacket
3265
+ packet_update_command_block:
3266
+ location: position
3267
+ command: string
3268
+ mode: varint
3269
+ flags: u8
3270
+ # MC: ServerboundSetCommandMinecartPacket
3271
+ packet_update_command_block_minecart:
3272
+ entityId: varint
3273
+ command: string
3274
+ track_output: bool
3275
+ # MC: ServerboundSetCreativeModeSlotPacket
3276
+ packet_set_creative_slot:
3277
+ slot: i16
3278
+ item: UntrustedSlot
3279
+ # MC: ServerboundSetJigsawBlockPacket
3280
+ packet_update_jigsaw_block:
3281
+ location: position
3282
+ name: string
3283
+ target: string
3284
+ pool: string
3285
+ finalState: string
3286
+ jointType: string
3287
+ selection_priority: varint
3288
+ placement_priority: varint
3289
+ # MC: ServerboundSetStructureBlockPacket
3290
+ packet_update_structure_block:
3291
+ location: position
3292
+ action: varint
3293
+ mode: varint
3294
+ name: string
3295
+ offset_x: i8
3296
+ offset_y: i8
3297
+ offset_z: i8
3298
+ size_x: i8
3299
+ size_y: i8
3300
+ size_z: i8
3301
+ mirror: varint
3302
+ rotation: varint
3303
+ metadata: string
3304
+ integrity: f32
3305
+ seed: varint
3306
+ # New `strict` flag
3307
+ flags: u8 =>
3308
+ - ignore_entities
3309
+ - show_air
3310
+ - show_bounding_box
3311
+ - strict
3312
+ # MC: ServerboundSetTestBlockPacket
3313
+ packet_set_test_block:
3314
+ position: position
3315
+ mode: varint
3316
+ message: string
3317
+ # MC: ServerboundSignUpdatePacket
3318
+ packet_update_sign:
3319
+ location: position
3320
+ isFrontText: bool
3321
+ text1: string
3322
+ text2: string
3323
+ text3: string
3324
+ text4: string
3325
+ # MC: ServerboundSwingPacket
3326
+ packet_arm_animation:
3327
+ hand: varint
3328
+ # MC: ServerboundTeleportToEntityPacket
3329
+ packet_spectate:
3330
+ target: UUID
3331
+ # MC: ServerboundTestInstanceBlockActionPacket
3332
+ packet_test_instance_block_action:
3333
+ pos: position
3334
+ action: varint
3335
+ data:
3336
+ test?: string
3337
+ size: vec3i
3338
+ rotation: varint
3339
+ ignoreEntities: bool
3340
+ status: varint
3341
+ errorMessage?: anonymousNbt
3342
+ # MC: ServerboundUseItemOnPacket
3343
+ packet_block_place:
3344
+ hand: varint
3345
+ location: position
3346
+ direction: varint
3347
+ cursorX: f32
3348
+ cursorY: f32
3349
+ cursorZ: f32
3350
+ insideBlock: bool
3351
+ worldBorderHit: bool
3352
+ sequence: varint
3353
+ # MC: ServerboundUseItemPacket
3354
+ packet_use_item:
3355
+ hand: varint
3356
+ sequence: varint
3357
+ rotation: vec2f
3358
+
3359
+ packet:
3360
+ name: varint =>
3361
+ - teleport_confirm
3362
+ - query_block_nbt
3363
+ - select_bundle_item
3364
+ - set_difficulty
3365
+ - change_gamemode
3366
+ - message_acknowledgement
3367
+ - chat_command
3368
+ - chat_command_signed
3369
+ - chat_message
3370
+ - chat_session_update
3371
+ - chunk_batch_received
3372
+ - client_command
3373
+ - tick_end
3374
+ - settings
3375
+ - tab_complete
3376
+ - configuration_acknowledged
3377
+ # Maybe rename enchant_item if it is used for other things too
3378
+ - enchant_item
3379
+ - window_click
3380
+ - close_window
3381
+ - set_slot_state
3382
+ - cookie_response
3383
+ - custom_payload
3384
+ - debug_sample_subscription
3385
+ - edit_book
3386
+ - query_entity_nbt
3387
+ - use_entity
3388
+ - generate_structure
3389
+ - keep_alive
3390
+ - lock_difficulty
3391
+ - position
3392
+ - position_look
3393
+ - look
3394
+ - flying
3395
+ - vehicle_move
3396
+ - steer_boat
3397
+ - pick_item_from_block
3398
+ - pick_item_from_entity
3399
+ - ping_request
3400
+ - craft_recipe_request
3401
+ - abilities
3402
+ - block_dig
3403
+ - entity_action
3404
+ - player_input
3405
+ - player_loaded
3406
+ - pong
3407
+ - recipe_book
3408
+ - displayed_recipe
3409
+ - name_item
3410
+ - resource_pack_receive
3411
+ - advancement_tab
3412
+ - select_trade
3413
+ - set_beacon_effect
3414
+ - held_item_slot
3415
+ - update_command_block
3416
+ - update_command_block_minecart
3417
+ - set_creative_slot
3418
+ - update_jigsaw_block
3419
+ - update_structure_block
3420
+ - set_test_block
3421
+ - update_sign
3422
+ - arm_animation
3423
+ - spectate
3424
+ - test_instance_block_action
3425
+ - block_place
3426
+ - use_item
3427
+ - custom_click_action
3428
+ params: name ?
3429
+ if teleport_confirm: packet_teleport_confirm
3430
+ if query_block_nbt: packet_query_block_nbt
3431
+ if select_bundle_item: packet_select_bundle_item
3432
+ if set_difficulty: packet_set_difficulty
3433
+ if change_gamemode: packet_change_gamemode
3434
+ if message_acknowledgement: packet_message_acknowledgement
3435
+ if chat_command: packet_chat_command
3436
+ if chat_command_signed: packet_chat_command_signed
3437
+ if chat_message: packet_chat_message
3438
+ if chat_session_update: packet_chat_session_update
3439
+ if chunk_batch_received: packet_chunk_batch_received
3440
+ if client_command: packet_client_command
3441
+ if tick_end: packet_tick_end
3442
+ if settings: packet_common_settings
3443
+ if tab_complete: packet_tab_complete
3444
+ if configuration_acknowledged: packet_configuration_acknowledged
3445
+ if enchant_item: packet_enchant_item
3446
+ if window_click: packet_window_click
3447
+ if close_window: packet_close_window
3448
+ if set_slot_state: packet_set_slot_state
3449
+ if cookie_response: packet_common_cookie_response
3450
+ if custom_payload: packet_custom_payload
3451
+ if debug_sample_subscription: packet_debug_sample_subscription
3452
+ if edit_book: packet_edit_book
3453
+ if query_entity_nbt: packet_query_entity_nbt
3454
+ if use_entity: packet_use_entity
3455
+ if generate_structure: packet_generate_structure
3456
+ if keep_alive: packet_keep_alive
3457
+ if lock_difficulty: packet_lock_difficulty
3458
+ if position: packet_position
3459
+ if position_look: packet_position_look
3460
+ if look: packet_look
3461
+ if flying: packet_flying
3462
+ if vehicle_move: packet_vehicle_move
3463
+ if steer_boat: packet_steer_boat
3464
+ if pick_item_from_block: packet_pick_item_from_block
3465
+ if pick_item_from_entity: packet_pick_item_from_entity
3466
+ if ping_request: packet_ping_request
3467
+ if craft_recipe_request: packet_craft_recipe_request
3468
+ if abilities: packet_abilities
3469
+ if block_dig: packet_block_dig
3470
+ if entity_action: packet_entity_action
3471
+ if player_input: packet_player_input
3472
+ if player_loaded: packet_player_loaded
3473
+ if pong: packet_pong
3474
+ if recipe_book: packet_recipe_book
3475
+ if displayed_recipe: packet_displayed_recipe
3476
+ if name_item: packet_name_item
3477
+ if resource_pack_receive: packet_resource_pack_receive
3478
+ if advancement_tab: packet_advancement_tab
3479
+ if select_trade: packet_select_trade
3480
+ if set_beacon_effect: packet_set_beacon_effect
3481
+ if held_item_slot: packet_held_item_slot
3482
+ if update_command_block: packet_update_command_block
3483
+ if update_command_block_minecart: packet_update_command_block_minecart
3484
+ if set_creative_slot: packet_set_creative_slot
3485
+ if update_jigsaw_block: packet_update_jigsaw_block
3486
+ if update_structure_block: packet_update_structure_block
3487
+ if set_test_block: packet_set_test_block
3488
+ if update_sign: packet_update_sign
3489
+ if arm_animation: packet_arm_animation
3490
+ if spectate: packet_spectate
3491
+ if test_instance_block_action: packet_test_instance_block_action
3492
+ if block_place: packet_block_place
3493
+ if use_item: packet_use_item
3494
+ if custom_click_action: packet_common_custom_click_action