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