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