minecraft-data 3.69.0 → 3.71.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 (43) hide show
  1. package/data.js +29 -2
  2. package/doc/history.md +8 -0
  3. package/index.d.ts +15 -0
  4. package/minecraft-data/README.md +10 -1
  5. package/minecraft-data/data/dataPaths.json +29 -2
  6. package/minecraft-data/data/pc/1.10/protocol.json +3 -3
  7. package/minecraft-data/data/pc/1.10-pre1/protocol.json +3 -3
  8. package/minecraft-data/data/pc/1.11/protocol.json +3 -3
  9. package/minecraft-data/data/pc/1.12/protocol.json +3 -3
  10. package/minecraft-data/data/pc/1.12-pre4/protocol.json +3 -3
  11. package/minecraft-data/data/pc/1.12.1/protocol.json +3 -3
  12. package/minecraft-data/data/pc/1.12.2/protocol.json +3 -3
  13. package/minecraft-data/data/pc/1.15/protocol.json +1 -1
  14. package/minecraft-data/data/pc/1.15.1/protocol.json +1 -1
  15. package/minecraft-data/data/pc/1.15.2/protocol.json +1 -1
  16. package/minecraft-data/data/pc/1.16/protocol.json +1 -1
  17. package/minecraft-data/data/pc/1.16-rc1/protocol.json +1 -1
  18. package/minecraft-data/data/pc/1.16.1/protocol.json +1 -1
  19. package/minecraft-data/data/pc/1.20.3/proto.yml +2762 -0
  20. package/minecraft-data/data/pc/1.20.5/enchantments.json +42 -42
  21. package/minecraft-data/data/pc/1.20.5/items.json +0 -248
  22. package/minecraft-data/data/pc/1.20.5/loginPacket.json +8264 -0
  23. package/minecraft-data/data/pc/1.20.5/protocol.json +8898 -0
  24. package/minecraft-data/data/pc/1.20.5/recipes.json +15144 -0
  25. package/minecraft-data/data/pc/1.20.5/version.json +6 -0
  26. package/minecraft-data/data/pc/1.8/protocol.json +3 -3
  27. package/minecraft-data/data/pc/1.9/protocol.json +3 -3
  28. package/minecraft-data/data/pc/1.9.1-pre2/protocol.json +3 -3
  29. package/minecraft-data/data/pc/1.9.2/protocol.json +3 -3
  30. package/minecraft-data/data/pc/1.9.4/protocol.json +3 -3
  31. package/minecraft-data/data/pc/15w40b/protocol.json +3 -3
  32. package/minecraft-data/data/pc/16w20a/protocol.json +3 -3
  33. package/minecraft-data/data/pc/16w35a/protocol.json +3 -3
  34. package/minecraft-data/data/pc/17w15a/protocol.json +3 -3
  35. package/minecraft-data/data/pc/17w18b/protocol.json +3 -3
  36. package/minecraft-data/data/pc/20w13b/protocol.json +1 -1
  37. package/minecraft-data/data/pc/common/features.json +25 -0
  38. package/minecraft-data/data/pc/common/protocolVersions.json +40 -0
  39. package/minecraft-data/data/pc/common/versions.json +3 -2
  40. package/minecraft-data/data/pc/latest/proto.yml +1274 -598
  41. package/minecraft-data/doc/history.md +12 -0
  42. package/minecraft-data/tools/js/test/audit_recipes.js +4 -1
  43. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- !version: 1.20.3
1
+ !version: 1.20.5
2
2
  !StartDocs: true
3
3
 
4
4
  ^types:
@@ -30,6 +30,8 @@
30
30
  restBuffer: native
31
31
  anonymousNbt: native
32
32
  anonOptionalNbt: native
33
+ arrayWithLengthOffset: native
34
+ ByteArray: ["buffer", { "countType": "varint" }]
33
35
  string: [
34
36
  "pstring",
35
37
  {
@@ -49,62 +51,677 @@
49
51
  x: f64
50
52
  y: f64
51
53
  z: f64
52
- slot:
53
- present: bool
54
- _: present ?
55
- if false: void
56
- if true:
54
+
55
+ SlotComponentType: varint =>
56
+ - custom_data
57
+ - max_stack_size
58
+ - max_damage
59
+ - damage
60
+ - unbreakable
61
+ - custom_name
62
+ - item_name
63
+ - lore
64
+ - rarity
65
+ - enchantments
66
+ - can_place_on
67
+ - can_break
68
+ - attribute_modifiers
69
+ - custom_model_data
70
+ - hide_additional_tooltip
71
+ - hide_tooltip
72
+ - creative_slot_lock
73
+ - enchantment_glint_override
74
+ - intangible_projectile
75
+ - food
76
+ - fire_resistant
77
+ - tool
78
+ - stored_enchantments
79
+ - dyed_color
80
+ - map_color
81
+ - map_id
82
+ - map_decorations
83
+ - map_post_processing
84
+ - charged_projectiles
85
+ - bundle_contents
86
+ - potion_contents
87
+ - suspicious_stew_effects
88
+ - writable_book_content
89
+ - written_book_content
90
+ - trim
91
+ - debug_stick_state
92
+ - entity_data
93
+ - bucket_entity_data
94
+ - block_entity_data
95
+ - instrument
96
+ - ominous_bottle_amplifier
97
+ - jukebox_playable
98
+ - recipes
99
+ - lodestone_tracker
100
+ - firework_explosion
101
+ - fireworks
102
+ - profile
103
+ - note_block_sound
104
+ - banner_patterns
105
+ - base_color
106
+ - pot_decorations
107
+ - container
108
+ - block_state
109
+ - bees
110
+ - lock
111
+ - container_loot
112
+
113
+ SlotComponent:
114
+ type: SlotComponentType
115
+ data: type ?
116
+ # TODO: look into how nbt works here
117
+ if custom_data: anonymousNbt
118
+ if max_stack_size: varint
119
+ if max_damage: varint
120
+ if damage: varint
121
+ if unbreakable: bool
122
+ if custom_name: anonymousNbt
123
+ if item_name: anonymousNbt
124
+ if lore: anonOptionalNbt[]varint
125
+ if rarity: varint
126
+ if enchantments:
127
+ enchantments: []varint
128
+ id: varint
129
+ level: varint
130
+ showTooltip: bool
131
+ if can_place_on or can_break:
132
+ predicates: BlockPredicate[]varint
133
+ showTooltip: bool
134
+ if attribute_modifiers:
135
+ attributes: []varint
136
+ typeId: varint
137
+ uniqueId: UUID
138
+ name: string
139
+ value: f64
140
+ operation: varint =>
141
+ - add
142
+ - multiply_base
143
+ - multiply_total
144
+ slot: varint =>
145
+ - any
146
+ - main_hand
147
+ - off_hand
148
+ - hand
149
+ - feet
150
+ - legs
151
+ - chest
152
+ - head
153
+ - armor
154
+ - body
155
+ showTooltip: bool
156
+ if custom_model_data: varint
157
+ if hide_additional_tooltip: void
158
+ if hide_tooltip: void
159
+ if repair_cost: varint
160
+ if creative_slot_lock: void
161
+ if enchantment_glint_override: bool
162
+ if intangible_projectile: void
163
+ # Name Type Description
164
+ # Nutrition VarInt Non-negative
165
+ # Saturation Modifier Float How much saturation will be given after consuming the item.
166
+ # Can Always Eat Boolean Whether the item can always be eaten, even at full hunger.
167
+ # Seconds To Eat Float How long it takes to consume the item.
168
+ # 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.
169
+ # Number of effects VarInt Number of elements in the following array.
170
+ # Effect Type ID Array Potion Effect The potion effect. See Potion Effect.
171
+ # Probability Float The probability for this effect to be chosen.
172
+ if food:
173
+ nutrition: varint
174
+ saturationModifier: f32
175
+ canAlwaysEat: bool
176
+ secondsToEat: f32
177
+ usingConvertsTo: Slot
178
+ effects: []varint
179
+ effect: varint
180
+ probability: f32
181
+ if fire_resistant: void
182
+ # Name Type Description
183
+ # Number of Rules VarInt The number of elements in the following array.
184
+ # Rule
185
+ # Blocks Array Block Set The block this rule applies to. See Block Set.
186
+ # Has Speed Boolean
187
+ # Speed Optional Float The speed at which the tool breaks this rules' blocks. Only present if Has Speed is true.
188
+ # Has Correct Drop For Blocks Boolean
189
+ # 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.
190
+ # Default Mining Speed Float The mining speed in case none of the previous rule were matched.
191
+ # Damage Per Block VarInt The amount of damage the item takes per block break.
192
+ if tool:
193
+ rules: []varint
194
+ blocks: BlockSet[]varint
195
+ hasSpeed: bool
196
+ speed: f32
197
+ hasCorrectDropForBlocks: bool
198
+ correctDropForBlocks: bool
199
+ defaultMiningSpeed: f32
200
+ damagePerBlock: varint
201
+ # Name Type Description
202
+ # Number of enchantments VarInt Number of elements in the following array.
203
+ # Enchantment Type ID Array VarInt Enum The ID of the enchantment in the enchantment registry.
204
+ # Level VarInt The level of the enchantment.
205
+ # Show In Tooltip Boolean Whether the list of enchantments should be shown on the item's tooltip.
206
+ if stored_enchantments:
207
+ enchantments: []varint
208
+ id: varint
209
+ level: varint
210
+ showInTooltip: bool
211
+ if dyed_color:
212
+ color: varint
213
+ showTooltip: bool
214
+ if map_color: varint
215
+ if map_id: varint
216
+ if map_decorations: anonOptionalNbt
217
+ if map_post_processing: varint
218
+ if charged_projectiles:
219
+ projectiles: Slot[]varint
220
+ if bundle_contents:
221
+ contents: Slot[]varint
222
+ # Name Type Description
223
+ # 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.
224
+ # Potion ID Optional VarInt The ID of the potion type in the potion registry. Only present if Has Potion ID is true.
225
+ # Has Custom Color Boolean Whether this potion has a custom color. If false, it uses the default color associated with the potion type.
226
+ # Custom Color Optional Int The RGB components of the color, encoded as an integer. Only present if Has Custom Color is true.
227
+ # Number Of Custom Effects VarInt The number of elements in the following array.
228
+ # Custom Effects Array of Potion Effect Any custom effects the potion might have. See Potion Effect.
229
+ if potion_contents:
230
+ hasPotionId: bool
231
+ potionId: optvarint
232
+ hasCustomColor: bool
233
+ customColor: optvarint
234
+ customEffects: []varint
235
+ effect: varint
236
+ details: EffectDetail
237
+ # Name Type Description
238
+ # Number Of Effects VarInt Number of elements in the following array.
239
+ # Effect Type ID Array VarInt Enum The ID of the effect in the potion effect type registry.
240
+ # Duration VarInt The duration of the effect.
241
+ if suspicious_stew_effects:
242
+ effects: []varint
243
+ effect: varint
244
+ duration: varint
245
+ # Name Type Description
246
+ # Number Of Pages VarInt Number of elements in the following array.
247
+ # Page Raw Content Array (100) String (1024) The raw text of the page.
248
+ # Has Filtered Content Boolean
249
+ # Filtered Content Optional String (1024) The content after passing through chat filters. Only present if Has Filtered Content is true.
250
+ if writable_book_content:
251
+ pages: BookPage[]varint
252
+ # Name Type Description
253
+ # Raw Title String (32) The raw title of the book.
254
+ # Has Filtered Title Boolean
255
+ # Filtered Title Optional String (32) The title after going through chat filters. Only present if Has Filtered Title is true.
256
+ # Author String
257
+ # Generation VarInt
258
+ # Number Of Pages VarInt Number of elements in the following array.
259
+ # Page Raw Content Array (100) TextComponent (1024) The raw text of the page.
260
+ # Has Filtered Content Boolean
261
+ # Filtered Content Optional Text Component (1024) The content after passing through chat filters. Only present if Has Filtered Content is true.
262
+ # Resolved Boolean Whether entity selectors have already been resolved.
263
+ if written_book_content:
264
+ rawTitle: string
265
+ filteredTitle?: string
266
+ author: string
267
+ generation: varint
268
+ pages: BookPage[]varint
269
+ # Whether entity selectors have already been resolved.
270
+ resolved: bool
271
+ # Name Type Description
272
+ # Trim Material Type VarInt Identifier used to determine the data that follows. It can be either:
273
+ # 0 - Directly represents a trim material, with the necessary data following.
274
+ # Anything else - References a trim material in its registry, by the ID of Trim Material Type - 1.
275
+ # Asset Name Optional String See Armor Trim Material Registry. Only present if Trim Material Type is 0.
276
+ # Ingredient Optional VarInt See Armor Trim Material Registry. Only present if Trim Material Type is 0.
277
+ # Item Model Index Optional Float See Armor Trim Material Registry. Only present if Trim Material Type is 0.
278
+ # Number of Overrides Optional VarInt See Armor Trim Material Registry. Only present if Trim Material Type is 0.
279
+ # Override Armor Material Type Optional Array VarInt Enum See Armor Trim Material Registry. Only present if Trim Material Type is 0.
280
+ # Overriden Asset Name String See Armor Trim Material Registry. Only present if Trim Material Type is 0.
281
+ # Description Optional Text Component See Armor Trim Material Registry. Only present if Trim Material Type is 0.
282
+ # Trim Pattern Type VarInt Identifier used to determine the data that follows. It can be either:
283
+ # 0 - Directly represents a trim pattern, with the necessary data following.
284
+ # Anything else - References a trim pattern in its registry, by the ID of Trim Pattern Type - 1.
285
+ # Asset Name Optional String See Armor Trim Pattern Registry. Only present if Trim Pattern Type is 0.
286
+ # Template Item Optional VarInt See Armor Trim Pattern Registry. Only present if Trim Pattern Type is 0.
287
+ # Description Optional Text Component See Armor Trim Pattern Registry. Only present if Trim Pattern Type is 0.
288
+ # Decal Optional Boolean See Armor Trim Pattern Registry. Only present if Trim Pattern Type is 0.
289
+ # Show In Tooltip Boolean Whether the trim information should be shown on the item's tooltip.
290
+ if trim:
291
+ # Identifier used to determine the data that follows. It can be either:
292
+ # 0 - Directly represents a trim material, with the necessary data following.
293
+ # Anything else - References a trim material in its registry, by the ID of Trim Material Type - 1.
294
+ materialType: varint
295
+ _: materialType ?
296
+ if 0:
297
+ assetName: string
298
+ ingredientId: varint
299
+ itemModelIndex: f32
300
+ numberOfOverrides: optvarint
301
+ override: []varint
302
+ armorMaterialType: varint
303
+ overridenAssetName: string
304
+ description: string
305
+ trimPatternType: varint
306
+ _: trimPatternType ?
307
+ if 0:
308
+ assetName: string
309
+ templateItem: varint
310
+ description: string
311
+ decal: bool
312
+ showInTooltip: bool
313
+ if debug_stick_state: anonymousNbt
314
+ if entity_data: anonymousNbt
315
+ if bucket_entity_data: anonymousNbt
316
+ if block_entity_data: anonymousNbt
317
+ # Name Type Description
318
+ # Instrument Type VarInt Identifier used to determine the data that follows. It can be either:
319
+ # 0 - Directly represents an instrument, with the necessary data following.
320
+ # Anything else - References an instrument in its registry, by the ID of Instrument Type - 1.
321
+ # Sound Event Optional Sound Event The sound to be played. Only present if Instrument Type is 0.
322
+ # Use duration Optional Float The maximum range of the sound. Only present if Instrument Type is 0.
323
+ # Range Optional Float The range of the instrument. Only present if Instrument Type is 0.
324
+ if instrument:
325
+ instrumentType: varint
326
+ _: instrumentType ?
327
+ if 0:
328
+ soundEvent: string
329
+ useDuration: f32
330
+ range: f32
331
+ if ominous_bottle_amplifier: varint
332
+ # Name Type Description
333
+ # Direct Mode Boolean Whether the jukebox song is specified directly, or just referenced by name.
334
+ # Jukebox Song Name Optional Identifier The name of the jukebox song in its respective registry. Only present if Direct Mode is false.
335
+ # Jukebox Song Type Optional VarInt Identifier used to determine the data that follows. It can be either:
336
+ # 0 - Directly represents a jukebox song, with the necessary data following.
337
+ # Anything else - References a jukebox song in its registry, by the ID of Jukebox Song Type - 1.
338
+ # Only present if Direct Mode is true.
339
+ # Sound Event Optional Sound Event The sound to be played. Only present if Direct Mode is true and Jukebox Song Type is 0.
340
+ # Description Optional Text Component The description shown in the item lore. Only present if Direct Mode is true and Jukebox Song Type is 0.
341
+ # 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.
342
+ # 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.
343
+ # Show In Tooltip Boolean Whether the song should be shown on the item's tooltip.
344
+ if jukebox_playable:
345
+ directMode: bool
346
+ _: directMode ?
347
+ if false:
348
+ jukeboxSongName: string
349
+ jukeboxSongType: varint
350
+ _: jukeboxSongType ?
351
+ if 0:
352
+ soundEvent:
353
+ soundEventType: varint
354
+ _: soundEventType ?
355
+ if 0:
356
+ soundName: string
357
+ fixedRange?: f32
358
+ description: anonymousNbt
359
+ duration: f32
360
+ output: varint
361
+ showInTooltip: bool
362
+ if recipes: anonymousNbt
363
+ # Name Type Description
364
+ # Has Global Position Boolean Whether this lodestone points to a position, otherwise it spins randomly.
365
+ # Dimension Identifier The dimension the compass points to. Only present if Has Global Position is true.
366
+ # Position Position The position the compass points to. Only present if Has Global Position is true.
367
+ # Tracked Boolean Whether the component is removed when the associated lodestone is broken.
368
+ if lodestone_tracker:
369
+ globalPosition?:
370
+ dimension: string
371
+ position: vec3f
372
+ tracked: bool
373
+ # Name Type Description
374
+ # Shape VarInt Enum Can be one of the following:
375
+ # 0 - Small ball
376
+ # 1 - Large ball
377
+ # 2 - Star
378
+ # 3 - Creeper
379
+ # 4 - Burst
380
+ # Number Of Colors VarInt The number of elements in the following array.
381
+ # Colors Array of Int The RGB components of the color, encoded as an integer.
382
+ # Number Of Fade Colors VarInt The number of elements in the following array.
383
+ # Fade Colors Array of Int The RGB components of the color, encoded as an integer.
384
+ # Has Trail Boolean
385
+ # Has Twinkle Boolean
386
+ if firework_explosion: FireworkExplosion
387
+ if fireworks:
388
+ flightDuration: varint
389
+ explosions: FireworkExplosion[]varint
390
+ # Name Type Description
391
+ # Has Name Boolean
392
+ # Name Optional String (16) Only present if Has Name is true.
393
+ # Has Unique ID Boolean
394
+ # Unique ID Optional UUID Only present if Has Unique ID is true.
395
+ # Number of Properties VarInt Number of elements in the following array.
396
+ # Property Name Array String (64)
397
+ # Value String
398
+ # Has Signature Boolean
399
+ # Signature String (1024) Only present if Has Signature is true.
400
+ if profile:
401
+ hasName: bool
402
+ name: string
403
+ hasUniqueId: bool
404
+ uniqueId: UUID
405
+ properties: []varint
406
+ property: string
407
+ value: string
408
+ hasSignature: bool
409
+ signature: string
410
+ if note_block_sound: string
411
+ # Name Type Description
412
+ # Number of Layers VarInt Number of elements in the following array.
413
+ # Layer Pattern Type Array VarInt Identifier used to determine the data that follows. It can be either:
414
+ # 0 - Directly represents a pattern, with the necessary data following.
415
+ # Anything else - References a pattern in its registry, by the ID of Pattern Type - 1.
416
+ # Asset ID Optional Identifier Identifier of the asset. Only present if Pattern Type is 0.
417
+ # Translation Key Optional String Only present if Pattern Type is 0.
418
+ # Color Dye Color See Dye Color.
419
+ if banner_patterns:
420
+ layers: []varint
421
+ patternType: varint
422
+ _: patternType ?
423
+ if 0:
424
+ assetId: string
425
+ translationKey: string
426
+ color: varint
427
+ if base_color: varint
428
+ if pot_decorations:
429
+ # The ID of the items in the item registry.
430
+ decorations: varint[]varint
431
+ if container:
432
+ contents: Slot[]varint
433
+ # Name Type Description
434
+ # Number of Properties VarInt Number of elements in the following array.
435
+ # Property Name Array String
436
+ # Value String
437
+ if block_state:
438
+ properties: []varint
439
+ property: string
440
+ value: string
441
+ # Name Type Description
442
+ # Number of Bees VarInt Number of elements in the following array.
443
+ # Bee Entity Data Array NBT
444
+ # Ticks In Hive VarInt
445
+ # Min Ticks In Hive VarInt
446
+ if bees:
447
+ bees: []varint
448
+ # Custom data for the entity, always a Compound Tag. Same structure as the minecraft:custom_data component.
449
+ nbtData: anonymousNbt
450
+ ticksInHive: varint
451
+ minTicksInHive: varint
452
+ if lock: anonymousNbt
453
+ if container_loot: anonymousNbt
454
+
455
+ Slot:
456
+ itemCount: i8
457
+ _: itemCount ?
458
+ if 0: void
459
+ default:
57
460
  itemId: varint
58
- itemCount: i8
59
- nbtData: anonOptionalNbt
60
- particle:
61
- particleId: varint
62
- data: [
63
- "particleData",
64
- {
65
- "compareTo": "particleId"
66
- }
67
- ]
68
- particleData: $compareTo ?
69
- if 2:
70
- blockState: varint
71
- if 3:
72
- blockState: varint
73
- if 14:
74
- red: f32
75
- green: f32
76
- blue: f32
77
- scale: f32
78
- if 15:
79
- fromRed: f32
80
- fromGreen: f32
81
- fromBlue: f32
82
- scale: f32
83
- toRed: f32
84
- toGreen: f32
85
- toBlue: f32
86
- if 27:
87
- blockState: varint
88
- if 33:
89
- rotation: f32
90
- if 42:
91
- item: slot
92
- if 43:
93
- positionType: string
94
- entityId: positionType ?
95
- if minecraft:entity: varint
96
- default: void
97
- entityEyeHeight: positionType ?
98
- if minecraft:entity: varint
99
- default: void
100
- destination: positionType ?
101
- if minecraft:block: position
102
- if minecraft:entity: varint
103
- ticks: varint
104
- if 96:
105
- delayInTicksBeforeShown: varint
106
- default: void
107
- ingredient: slot[]varint
461
+ # https://wiki.vg/Slot_Data#Structured_components
462
+ # + public static final DataComponentType<CompoundTag> CUSTOM_DATA = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
463
+ # + public static final IntComponentType MAX_STACK_SIZE = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
464
+ # + public static final IntComponentType MAX_DAMAGE = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
465
+ # + public static final IntComponentType DAMAGE = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
466
+ # + public static final BooleanComponentType UNBREAKABLE = new BooleanComponentType(ByteBuf::readBoolean, ByteBuf::writeBoolean, BooleanDataComponent::new);
467
+ # + public static final DataComponentType<Component> CUSTOM_NAME = new DataComponentType<>(ItemCodecHelper::readComponent, ItemCodecHelper::writeComponent, ObjectDataComponent::new);
468
+ # + public static final DataComponentType<Component> ITEM_NAME = new DataComponentType<>(ItemCodecHelper::readComponent, ItemCodecHelper::writeComponent, ObjectDataComponent::new);
469
+ # + public static final DataComponentType<List<Component>> LORE = new DataComponentType<>(listReader(ItemCodecHelper::readComponent), listWriter(ItemCodecHelper::writeComponent), ObjectDataComponent::new);
470
+ # + public static final IntComponentType RARITY = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
471
+ # + public static final DataComponentType<ItemEnchantments> ENCHANTMENTS = new DataComponentType<>(ItemCodecHelper::readItemEnchantments, ItemCodecHelper::writeItemEnchantments, ObjectDataComponent::new);
472
+ # + public static final DataComponentType<AdventureModePredicate> CAN_PLACE_ON = new DataComponentType<>(ItemCodecHelper::readAdventureModePredicate, ItemCodecHelper::writeAdventureModePredicate, ObjectDataComponent::new);
473
+ # + public static final DataComponentType<AdventureModePredicate> CAN_BREAK = new DataComponentType<>(ItemCodecHelper::readAdventureModePredicate, ItemCodecHelper::writeAdventureModePredicate, ObjectDataComponent::new);
474
+ # + public static final DataComponentType<ItemAttributeModifiers> ATTRIBUTE_MODIFIERS = new DataComponentType<>(ItemCodecHelper::readItemAttributeModifiers, ItemCodecHelper::writeItemAttributeModifiers, ObjectDataComponent::new);
475
+ # + public static final IntComponentType CUSTOM_MODEL_DATA = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
476
+ # + public static final DataComponentType<Unit> HIDE_ADDITIONAL_TOOLTIP = new DataComponentType<>(unitReader(), unitWriter(), ObjectDataComponent::new);
477
+ # + public static final DataComponentType<Unit> HIDE_TOOLTIP = new DataComponentType<>(unitReader(), unitWriter(), ObjectDataComponent::new);
478
+ # + public static final IntComponentType REPAIR_COST = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
479
+ # + public static final DataComponentType<Unit> CREATIVE_SLOT_LOCK = new DataComponentType<>(unitReader(), unitWriter(), ObjectDataComponent::new);
480
+ # + public static final BooleanComponentType ENCHANTMENT_GLINT_OVERRIDE = new BooleanComponentType(ByteBuf::readBoolean, ByteBuf::writeBoolean, BooleanDataComponent::new);
481
+ # + public static final DataComponentType<CompoundTag> INTANGIBLE_PROJECTILE = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
482
+ # + public static final DataComponentType<FoodProperties> FOOD = new DataComponentType<>(ItemCodecHelper::readFoodProperties, ItemCodecHelper::writeFoodProperties, ObjectDataComponent::new);
483
+ # + public static final DataComponentType<Unit> FIRE_RESISTANT = new DataComponentType<>(unitReader(), unitWriter(), ObjectDataComponent::new);
484
+ # + public static final DataComponentType<ToolData> TOOL = new DataComponentType<>(ItemCodecHelper::readToolData, ItemCodecHelper::writeToolData, ObjectDataComponent::new);
485
+ # + public static final DataComponentType<ItemEnchantments> STORED_ENCHANTMENTS = new DataComponentType<>(ItemCodecHelper::readItemEnchantments, ItemCodecHelper::writeItemEnchantments, ObjectDataComponent::new);
486
+ # + public static final DataComponentType<DyedItemColor> DYED_COLOR = new DataComponentType<>(ItemCodecHelper::readDyedItemColor, ItemCodecHelper::writeDyedItemColor, ObjectDataComponent::new);
487
+ # + public static final IntComponentType MAP_COLOR = new IntComponentType((helper, input) -> input.readInt(), (helper, output, value) -> output.writeInt(value), IntDataComponent::new);
488
+ # + public static final IntComponentType MAP_ID = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
489
+ # + public static final DataComponentType<CompoundTag> MAP_DECORATIONS = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
490
+ # + public static final IntComponentType MAP_POST_PROCESSING = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
491
+ # + public static final DataComponentType<List<ItemStack>> CHARGED_PROJECTILES = new DataComponentType<>(listReader(ItemCodecHelper::readItemStack), listWriter(ItemCodecHelper::writeItemStack), ObjectDataComponent::new);
492
+ # + public static final DataComponentType<List<ItemStack>> BUNDLE_CONTENTS = new DataComponentType<>(listReader(ItemCodecHelper::readItemStack), listWriter(ItemCodecHelper::writeItemStack), ObjectDataComponent::new);
493
+ # + public static final DataComponentType<PotionContents> POTION_CONTENTS = new DataComponentType<>(ItemCodecHelper::readPotionContents, ItemCodecHelper::writePotionContents, ObjectDataComponent::new);
494
+ # + public static final DataComponentType<List<SuspiciousStewEffect>> SUSPICIOUS_STEW_EFFECTS = new DataComponentType<>(listReader(ItemCodecHelper::readStewEffect), listWriter(ItemCodecHelper::writeStewEffect), ObjectDataComponent::new);
495
+ # + public static final DataComponentType<WritableBookContent> WRITABLE_BOOK_CONTENT = new DataComponentType<>(ItemCodecHelper::readWritableBookContent, ItemCodecHelper::writeWritableBookContent, ObjectDataComponent::new);
496
+ # + public static final DataComponentType<WrittenBookContent> WRITTEN_BOOK_CONTENT = new DataComponentType<>(ItemCodecHelper::readWrittenBookContent, ItemCodecHelper::writeWrittenBookContent, ObjectDataComponent::new);
497
+ # + public static final DataComponentType<ArmorTrim> TRIM = new DataComponentType<>(ItemCodecHelper::readArmorTrim, ItemCodecHelper::writeArmorTrim, ObjectDataComponent::new);
498
+ # + public static final DataComponentType<CompoundTag> DEBUG_STICK_STATE = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
499
+ # + public static final DataComponentType<CompoundTag> ENTITY_DATA = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
500
+ # + public static final DataComponentType<CompoundTag> BUCKET_ENTITY_DATA = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
501
+ # + public static final DataComponentType<CompoundTag> BLOCK_ENTITY_DATA = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
502
+ # + public static final DataComponentType<Holder<Instrument>> INSTRUMENT = new DataComponentType<>(ItemCodecHelper::readInstrument, ItemCodecHelper::writeInstrument, ObjectDataComponent::new);
503
+ # + public static final IntComponentType OMINOUS_BOTTLE_AMPLIFIER = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
504
+ # + public static final DataComponentType<ListTag> RECIPES = new DataComponentType<>(ItemCodecHelper::readRecipes, ItemCodecHelper::writeRecipes, ObjectDataComponent::new);
505
+ # + public static final DataComponentType<LodestoneTracker> LODESTONE_TRACKER = new DataComponentType<>(ItemCodecHelper::readLodestoneTarget, ItemCodecHelper::writeLodestoneTarget, ObjectDataComponent::new);
506
+ # + public static final DataComponentType<Fireworks.FireworkExplosion> FIREWORK_EXPLOSION = new DataComponentType<>(ItemCodecHelper::readFireworkExplosion, ItemCodecHelper::writeFireworkExplosion, ObjectDataComponent::new);
507
+ # + public static final DataComponentType<Fireworks> FIREWORKS = new DataComponentType<>(ItemCodecHelper::readFireworks, ItemCodecHelper::writeFireworks, ObjectDataComponent::new);
508
+ # + public static final DataComponentType<GameProfile> PROFILE = new DataComponentType<>(ItemCodecHelper::readResolvableProfile, ItemCodecHelper::writeResolvableProfile, ObjectDataComponent::new);
509
+ # + public static final DataComponentType<String> NOTE_BLOCK_SOUND = new DataComponentType<>(ItemCodecHelper::readResourceLocation, ItemCodecHelper::writeResourceLocation, ObjectDataComponent::new);
510
+ # + public static final DataComponentType<List<BannerPatternLayer>> BANNER_PATTERNS = new DataComponentType<>(listReader(ItemCodecHelper::readBannerPatternLayer), listWriter(ItemCodecHelper::writeBannerPatternLayer), ObjectDataComponent::new);
511
+ # + public static final IntComponentType BASE_COLOR = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
512
+ # + public static final DataComponentType<List<Integer>> POT_DECORATIONS = new DataComponentType<>(listReader(ItemCodecHelper::readVarInt), listWriter(ItemCodecHelper::writeVarInt), ObjectDataComponent::new);
513
+ # + public static final DataComponentType<List<ItemStack>> CONTAINER = new DataComponentType<>(listReader(ItemCodecHelper::readOptionalItemStack), listWriter(MinecraftCodecHelper::writeOptionalItemStack), ObjectDataComponent::new);
514
+ # + public static final DataComponentType<BlockStateProperties> BLOCK_STATE = new DataComponentType<>(ItemCodecHelper::readBlockStateProperties, ItemCodecHelper::writeBlockStateProperties, ObjectDataComponent::new);
515
+ # + public static final DataComponentType<List<BeehiveOccupant>> BEES = new DataComponentType<>(listReader(ItemCodecHelper::readBeehiveOccupant), listWriter(ItemCodecHelper::writeBeehiveOccupant), ObjectDataComponent::new);
516
+ # + public static final DataComponentType<StringTag> LOCK = new DataComponentType<>(ItemCodecHelper::readLock, ItemCodecHelper::writeLock, ObjectDataComponent::new);
517
+ # + public static final DataComponentType<CompoundTag> CONTAINER_LOOT = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
518
+ addedComponentCount: varint
519
+ removedComponentCount: varint
520
+ components: SlotComponent[]$addedComponentCount
521
+ removeComponents: []$removedComponentCount
522
+ type: SlotComponentType
523
+
524
+ FireworkExplosion:
525
+ shape: varint =>
526
+ - small_ball
527
+ - large_ball
528
+ - star
529
+ - creeper
530
+ - burst
531
+ colors: i32[]varint
532
+ fadeColors: i32[]varint
533
+ hasTrail: bool
534
+ hasTwinkle: bool
535
+
536
+ BookPage:
537
+ content: string
538
+ filteredContent?: string
539
+
540
+ EffectDetail:
541
+ amplifier: varint
542
+ duration: varint
543
+ ambient: bool
544
+ showParticles: bool
545
+ showIcon: bool
546
+ hiddenEffect?: EffectDetail
547
+
548
+ BlockSet:
549
+ type: varint
550
+ name: type ?
551
+ if 0: string
552
+ default: void
553
+ # TODO: This will require a custom type ; we need type - 1 length of blockIds
554
+ blockIds: type ?
555
+ if 0: void
556
+ #default: varint[]varint
557
+ default: ["arrayWithLengthOffset", {"count": "type", "type": "varint"}]
558
+
559
+ BlockProperty:
560
+ # Name of the block state property.
561
+ name: string
562
+ # Whether this is an exact value match, as opposed to ranged.
563
+ isExactMatch: bool
564
+ # Value of the block state property. Only present in exact match mode.
565
+ exactValue?: string
566
+ # Minimum value of the block state property range. Only present in ranged match mode.
567
+ minValue?: string
568
+ # Maximum value of the block state property range. Only present in ranged match mode.
569
+ maxValue?: string
570
+
571
+ BlockPredicate:
572
+ blockSet?: BlockSet[]varint
573
+ properties?: BlockProperty[]varint
574
+ nbt: anonOptionalNbt
575
+
576
+ Particle:
577
+ # See client/net/minecraft/core/particles/ParticleTypes.java
578
+ type: varint =>
579
+ - angry_villager
580
+ - block
581
+ - block_marker
582
+ - bubble
583
+ - cloud
584
+ - crit
585
+ - damage_indicator
586
+ - dragon_breath
587
+ - dripping_lava
588
+ - falling_lava
589
+ - landing_lava
590
+ - dripping_water
591
+ - falling_water
592
+ - dust
593
+ - dust_color_transition
594
+ - effect
595
+ - elder_guardian
596
+ - enchanted_hit
597
+ - enchant
598
+ - end_rod
599
+ - entity_effect
600
+ - explosion_emitter
601
+ - explosion
602
+ - gust
603
+ - small_gust
604
+ - gust_emitter_large
605
+ - gust_emitter_small
606
+ - sonic_boom
607
+ - falling_dust
608
+ - firework
609
+ - fishing
610
+ - flame
611
+ - infested
612
+ - cherry_leaves
613
+ - sculk_soul
614
+ - sculk_charge
615
+ - sculk_charge_pop
616
+ - soul_fire_flame
617
+ - soul
618
+ - flash
619
+ - happy_villager
620
+ - composter
621
+ - heart
622
+ - instant_effect
623
+ - item
624
+ - vibration
625
+ - item_slime
626
+ - item_cobweb
627
+ - item_snowball
628
+ - large_smoke
629
+ - lava
630
+ - mycelium
631
+ - note
632
+ - poof
633
+ - portal
634
+ - rain
635
+ - smoke
636
+ - white_smoke
637
+ - sneeze
638
+ - spit
639
+ - squid_ink
640
+ - sweep_attack
641
+ - totem_of_undying
642
+ - underwater
643
+ - splash
644
+ - witch
645
+ - bubble_pop
646
+ - current_down
647
+ - bubble_column_up
648
+ - nautilus
649
+ - dolphin
650
+ - campfire_cosy_smoke
651
+ - campfire_signal_smoke
652
+ - dripping_honey
653
+ - falling_honey
654
+ - landing_honey
655
+ - falling_nectar
656
+ - falling_spore_blossom
657
+ - ash
658
+ - crimson_spore
659
+ - warped_spore
660
+ - spore_blossom_air
661
+ - dripping_obsidian_tear
662
+ - falling_obsidian_tear
663
+ - landing_obsidian_tear
664
+ - reverse_portal
665
+ - white_ash
666
+ - small_flame
667
+ - snowflake
668
+ - dripping_dripstone_lava
669
+ - falling_dripstone_lava
670
+ - dripping_dripstone_water
671
+ - falling_dripstone_water
672
+ - glow_squid_ink
673
+ - glow
674
+ - wax_on
675
+ - wax_off
676
+ - electric_spark
677
+ - scrape
678
+ - shriek
679
+ - egg_crack
680
+ - dust_plume
681
+ - trial_spawner_detected_player
682
+ - trial_spawner_detected_player_ominous
683
+ - vault_connection
684
+ - dust_pillar
685
+ - ominous_spawning
686
+ - raid_omen
687
+ - trial_omen
688
+ ## ## Tips for reviewing particle data (as of 1.20.5)
689
+ ## Inside the registry code, each particle can have an associated "options" type and
690
+ ## each options type can add additional data to be encoded.
691
+ ## For example, this line
692
+ ## public static final ParticleType<BlockParticleOption> BLOCK = register("block", false, BlockParticleOption::codec, BlockParticleOption::streamCodec);
693
+ ## will read the stream codec from BlockParticleOption.java's streamCodec member; then we see
694
+ ## return ByteBufCodecs.idMapper(Block.BLOCK_STATE_REGISTRY).map(var1 -> new BlockParticleOption(var0, var1), var0x -> var0x.state);
695
+ ## this encodes with the ByteBufCodecs.idMapper function. Inside this function we find
696
+ ## public void encode(ByteBuf var1x, T var2) {
697
+ ## int var3 = var1.applyAsInt(var2);
698
+ ## VarInt.write(var1x, var3);
699
+ ## }
700
+ ## which as we can see writes the varint to the buffer.
701
+ ## If you want to see all the serializers try regexp searching "StreamCodec.*Particle"
702
+ data: type ?
703
+ if block or block_marker or falling_dust or dust_pillar: varint
704
+ if dust:
705
+ red: f32
706
+ green: f32
707
+ blue: f32
708
+ scale: f32
709
+ if dust_color_transition:
710
+ fromRed: f32
711
+ fromGreen: f32
712
+ fromBlue: f32
713
+ scale: f32
714
+ toRed: f32
715
+ toGreen: f32
716
+ toBlue: f32
717
+ if entity_effect: i32
718
+ if item: Slot
719
+ if sculk_charge: f32
720
+ if shriek: varint
721
+ if vibration:
722
+ position: string
723
+ entityId: varint
724
+ ingredient: Slot[]varint
108
725
  position: [
109
726
  "bitfield",
110
727
  [
@@ -149,123 +766,86 @@
149
766
  }
150
767
  ]
151
768
  default: void
152
- entityMetadataItem: $compareTo ?
153
- if byte: i8
154
- if int: varint
155
- if long: varlong
156
- if float: f32
157
- if string: string
158
- if component: anonymousNbt
159
- if optional_component: [
160
- "option",
161
- "anonymousNbt"
162
- ]
163
- if item_stack: slot
164
- if boolean: bool
165
- if rotations:
166
- pitch: f32
167
- yaw: f32
168
- roll: f32
169
- if block_pos: position
170
- if optional_block_pos: [
171
- "option",
172
- "position"
173
- ]
174
- if direction: varint
175
- if optional_uuid: [
176
- "option",
177
- "UUID"
178
- ]
179
- if block_state: varint
180
- if optional_block_state: optvarint
181
- if compound_tag: anonymousNbt
182
- if particle: particle
183
- if villager_data:
184
- villagerType: varint
185
- villagerProfession: varint
186
- level: varint
187
- if optional_unsigned_int: optvarint
188
- if pose: varint
189
- if cat_variant: varint
190
- if frog_variant: varint
191
- if optional_global_pos: [
192
- "option",
193
- "string"
194
- ]
195
- if painting_variant: varint
196
- if sniffer_state: varint
197
- if vector3: vec3f
198
- if quaternion: vec4f
199
- entityMetadata: [
200
- "entityMetadataLoop",
201
- {
202
- "endVal": 255,
203
- "type": [
204
- "container",
205
- [
206
- {
207
- "name": "key",
208
- "type": "u8"
209
- },
210
- {
211
- "name": "type",
212
- "type": [
213
- "mapper",
214
- {
215
- "type": "varint",
216
- "mappings": {
217
- "0": "byte",
218
- "1": "int",
219
- "2": "long",
220
- "3": "float",
221
- "4": "string",
222
- "5": "component",
223
- "6": "optional_component",
224
- "7": "item_stack",
225
- "8": "boolean",
226
- "9": "rotations",
227
- "10": "block_pos",
228
- "11": "optional_block_pos",
229
- "12": "direction",
230
- "13": "optional_uuid",
231
- "14": "block_state",
232
- "15": "optional_block_state",
233
- "16": "compound_tag",
234
- "17": "particle",
235
- "18": "villager_data",
236
- "19": "optional_unsigned_int",
237
- "20": "pose",
238
- "21": "cat_variant",
239
- "22": "frog_variant",
240
- "23": "optional_global_pos",
241
- "24": "painting_variant",
242
- "25": "sniffer_state",
243
- "26": "vector3",
244
- "27": "quaternion"
245
- }
246
- }
247
- ]
248
- },
249
- {
250
- "name": "value",
251
- "type": [
252
- "entityMetadataItem",
253
- {
254
- "compareTo": "type"
255
- }
256
- ]
257
- }
258
- ]
259
- ]
260
- }
261
- ]
769
+ entityMetadataEntry:
770
+ key: u8
771
+ type: varint =>
772
+ - byte
773
+ - int
774
+ - long
775
+ - float
776
+ - string
777
+ - component
778
+ - optional_component
779
+ - item_stack
780
+ - boolean
781
+ - rotations
782
+ - block_pos
783
+ - optional_block_pos
784
+ - direction
785
+ - optional_uuid
786
+ - block_state
787
+ - optional_block_state
788
+ - compound_tag
789
+ - particle
790
+ - particles
791
+ - villager_data
792
+ - optional_unsigned_int
793
+ - pose
794
+ - cat_variant
795
+ - wolf_variant
796
+ - frog_variant
797
+ - optional_global_pos
798
+ - painting_variant
799
+ - sniffer_state
800
+ - armadillo_state
801
+ - vector3
802
+ - quaternion
803
+ value: type ?
804
+ if byte: i8
805
+ if int: varint
806
+ if long: varlong
807
+ if float: f32
808
+ if string: string
809
+ if component: anonymousNbt
810
+ if optional_component: ["option", "anonymousNbt"]
811
+ if item_stack: Slot
812
+ if boolean: bool
813
+ if rotations:
814
+ pitch: f32
815
+ yaw: f32
816
+ roll: f32
817
+ if block_pos: position
818
+ if optional_block_pos: ["option", "position"]
819
+ if direction: varint
820
+ if optional_uuid: ["option", "UUID"]
821
+ if block_state: varint
822
+ if optional_block_state: optvarint
823
+ if compound_tag: anonymousNbt
824
+ if particle: Particle
825
+ if particles: Particle[]varint
826
+ if villager_data:
827
+ villagerType: varint
828
+ villagerProfession: varint
829
+ level: varint
830
+ if optional_unsigned_int: optvarint
831
+ if pose: varint
832
+ if cat_variant: varint
833
+ if wolf_variant: varint
834
+ if frog_variant: varint
835
+ if optional_global_pos: ["option", "string"]
836
+ if painting_variant: varint
837
+ if sniffer_state: varint
838
+ if armadillo_state: varint
839
+ if vector3: vec3f
840
+ if quaternion: vec4f
841
+ entityMetadata: ["entityMetadataLoop", { "endVal": 255, "type": "entityMetadataEntry" }]
262
842
  minecraft_simple_recipe_format:
263
843
  category: varint
264
844
  minecraft_smelting_format:
265
845
  group: string
266
846
  category: varint
267
847
  ingredient: ingredient
268
- result: slot
848
+ result: Slot
269
849
  experience: f32
270
850
  cookTime: varint
271
851
  tags: []varint
@@ -354,56 +934,60 @@
354
934
  if 2:
355
935
  name: string
356
936
  parser: varint =>
357
- 0: brigadier:bool
358
- 1: brigadier:float
359
- 2: brigadier:double
360
- 3: brigadier:integer
361
- 4: brigadier:long
362
- 5: brigadier:string
363
- 6: minecraft:entity
364
- 7: minecraft:game_profile
365
- 8: minecraft:block_pos
366
- 9: minecraft:column_pos
367
- 10: minecraft:vec3
368
- 11: minecraft:vec2
369
- 12: minecraft:block_state
370
- 13: minecraft:block_predicate
371
- 14: minecraft:item_stack
372
- 15: minecraft:item_predicate
373
- 16: minecraft:color
374
- 17: minecraft:component
375
- 18: minecraft:style
376
- 19: minecraft:message
377
- 20: minecraft:nbt
378
- 21: minecraft:nbt_tag
379
- 22: minecraft:nbt_path
380
- 23: minecraft:objective
381
- 24: minecraft:objective_criteria
382
- 25: minecraft:operation
383
- 26: minecraft:particle
384
- 27: minecraft:angle
385
- 28: minecraft:rotation
386
- 29: minecraft:scoreboard_slot
387
- 30: minecraft:score_holder
388
- 31: minecraft:swizzle
389
- 32: minecraft:team
390
- 33: minecraft:item_slot
391
- 34: minecraft:resource_location
392
- 35: minecraft:function
393
- 36: minecraft:entity_anchor
394
- 37: minecraft:int_range
395
- 38: minecraft:float_range
396
- 39: minecraft:dimension
397
- 40: minecraft:gamemode
398
- 41: minecraft:time
399
- 42: minecraft:resource_or_tag
400
- 43: minecraft:resource_or_tag_key
401
- 44: minecraft:resource
402
- 45: minecraft:resource_key
403
- 46: minecraft:template_mirror
404
- 47: minecraft:template_rotation
405
- 48: minecraft:heightmap
406
- 49: minecraft:uuid
937
+ - brigadier:bool
938
+ - brigadier:float
939
+ - brigadier:double
940
+ - brigadier:integer
941
+ - brigadier:long
942
+ - brigadier:string
943
+ - minecraft:entity
944
+ - minecraft:game_profile
945
+ - minecraft:block_pos
946
+ - minecraft:column_pos
947
+ - minecraft:vec3
948
+ - minecraft:vec2
949
+ - minecraft:block_state
950
+ - minecraft:block_predicate
951
+ - minecraft:item_stack
952
+ - minecraft:item_predicate
953
+ - minecraft:color
954
+ - minecraft:component
955
+ - minecraft:style
956
+ - minecraft:message
957
+ - minecraft:nbt
958
+ - minecraft:nbt_tag
959
+ - minecraft:nbt_path
960
+ - minecraft:objective
961
+ - minecraft:objective_criteria
962
+ - minecraft:operation
963
+ - minecraft:particle
964
+ - minecraft:angle
965
+ - minecraft:rotation
966
+ - minecraft:scoreboard_slot
967
+ - minecraft:score_holder
968
+ - minecraft:swizzle
969
+ - minecraft:team
970
+ - minecraft:item_slot
971
+ - minecraft:item_slots # 1.20.5
972
+ - minecraft:resource_location
973
+ - minecraft:function
974
+ - minecraft:entity_anchor
975
+ - minecraft:int_range
976
+ - minecraft:float_range
977
+ - minecraft:dimension
978
+ - minecraft:gamemode
979
+ - minecraft:time
980
+ - minecraft:resource_or_tag
981
+ - minecraft:resource_or_tag_key
982
+ - minecraft:resource
983
+ - minecraft:resource_key
984
+ - minecraft:template_mirror
985
+ - minecraft:template_rotation
986
+ - minecraft:heightmap
987
+ - minecraft:loot_table # 1.20.5
988
+ - minecraft:loot_predicate # 1.20.5
989
+ - minecraft:loot_modifier # 1.20.5
990
+ - minecraft:uuid
407
991
  properties: parser ?
408
992
  if brigadier:bool: void
409
993
  if brigadier:float:
@@ -601,6 +1185,33 @@
601
1185
  suggestionType: ../flags/has_custom_suggestions ?
602
1186
  if 1: string
603
1187
  default: void
1188
+ # # Shared Packets
1189
+ # These are packets that are shared between multiple states.
1190
+ # They are defined here to avoid duplication.
1191
+ # =====
1192
+ # MC: ClientboundCookieRequestPacket
1193
+ packet_common_cookie_request:
1194
+ cookie: string
1195
+ # MC: ClientboundStoreCookiePacket
1196
+ packet_common_store_cookie:
1197
+ key: string
1198
+ value: ByteArray
1199
+ # MC: ClientboundTransferPacket
1200
+ packet_common_transfer:
1201
+ host: string
1202
+ port: varint
1203
+ # MC: ServerboundCookieResponsePacket
1204
+ packet_common_cookie_response:
1205
+ key: string
1206
+ value: ByteArray
1207
+ # MC: ServerboundSelectKnownPacks
1208
+ # MC: ClientboundSelectKnownPacks
1209
+ packet_common_select_known_packs:
1210
+ packs: []varint
1211
+ namespace: string
1212
+ id: string
1213
+ version: string
1214
+
604
1215
  ^handshaking.toClient.types:
605
1216
  packet:
606
1217
  name: varint =>
@@ -667,6 +1278,7 @@
667
1278
  "countType": "varint"
668
1279
  }
669
1280
  ]
1281
+ shouldAuthenticate: bool
670
1282
  # MC: ClientboundGameProfilePacket
671
1283
  packet_success:
672
1284
  uuid: UUID
@@ -675,6 +1287,7 @@
675
1287
  name: string
676
1288
  value: string
677
1289
  signature?: string
1290
+ strictErrorHandling: bool
678
1291
  # MC: ClientboundLoginCompressionPacket
679
1292
  packet_compress:
680
1293
  threshold: varint
@@ -683,6 +1296,7 @@
683
1296
  messageId: varint
684
1297
  channel: string
685
1298
  data: restBuffer
1299
+ ## (Cookie Request is Common) ##
686
1300
  packet:
687
1301
  name: varint =>
688
1302
  - disconnect
@@ -690,12 +1304,14 @@
690
1304
  - success
691
1305
  - compress
692
1306
  - login_plugin_request
1307
+ - cookie_request
693
1308
  params: name ?
694
1309
  if disconnect: packet_disconnect
695
1310
  if encryption_begin: packet_encryption_begin
696
1311
  if success: packet_success
697
1312
  if compress: packet_compress
698
1313
  if login_plugin_request: packet_login_plugin_request
1314
+ if cookie_request: packet_common_cookie_request
699
1315
  ^login.toServer.types:
700
1316
  # MC: ServerboundHelloPacket
701
1317
  packet_login_start:
@@ -722,18 +1338,22 @@
722
1338
  # MC: ServerboundLoginAcknowledgedPacket
723
1339
  packet_login_acknowledged:
724
1340
  # Empty
1341
+ ## (Cookie Response is Common) ##
725
1342
  packet:
726
1343
  name: varint =>
727
1344
  - login_start
728
1345
  - encryption_begin
729
1346
  - login_plugin_response
730
1347
  - login_acknowledged
1348
+ - cookie_response
731
1349
  params: name ?
732
1350
  if login_start: packet_login_start
733
1351
  if encryption_begin: packet_encryption_begin
734
1352
  if login_plugin_response: packet_login_plugin_response
735
1353
  if login_acknowledged: packet_login_acknowledged
1354
+ if cookie_response: packet_common_cookie_response
736
1355
  ^configuration.toClient.types:
1356
+ ## (Cookie Request is common)
737
1357
  # MC: ClientboundCustomPayloadPacket
738
1358
  packet_custom_payload:
739
1359
  channel: string
@@ -750,9 +1370,16 @@
750
1370
  # MC: ClientboundPingPacket
751
1371
  packet_ping:
752
1372
  id: i32
1373
+ # MC: ClientboundResetChatPacket
1374
+ packet_reset_chat:
1375
+ # Empty
753
1376
  # MC: ClientboundRegistryDataPacket
754
1377
  packet_registry_data:
755
- codec: anonymousNbt
1378
+ # The server can send multiple registries
1379
+ id: string
1380
+ entries: []varint
1381
+ key: string
1382
+ value?: anonymousNbt
756
1383
  # MC: ClientboundResourcePackPopPacket
757
1384
  packet_remove_resource_pack:
758
1385
  uuid?: UUID
@@ -763,6 +1390,7 @@
763
1390
  hash: string
764
1391
  forced: bool
765
1392
  promptMessage?: anonymousNbt
1393
+ ## (Store cookie and Transfer are Common) ##
766
1394
  # MC: ClientboundUpdateEnabledFeaturesPacket
767
1395
  packet_feature_flags:
768
1396
  features: string[]varint
@@ -771,29 +1399,40 @@
771
1399
  tags: []varint
772
1400
  tagType: string
773
1401
  tags: tags
1402
+ ## (Select known packs is common)
774
1403
  packet:
775
1404
  name: varint =>
1405
+ - cookie_request
776
1406
  - custom_payload
777
1407
  - disconnect
778
1408
  - finish_configuration
779
1409
  - keep_alive
780
1410
  - ping
1411
+ - reset_chat
781
1412
  - registry_data
782
1413
  - remove_resource_pack
783
1414
  - add_resource_pack
1415
+ - store_cookie
1416
+ - transfer
784
1417
  - feature_flags
785
1418
  - tags
1419
+ - select_known_packs
786
1420
  params: name ?
1421
+ if cookie_request: packet_common_cookie_request
787
1422
  if custom_payload: packet_custom_payload
788
1423
  if disconnect: packet_disconnect
789
1424
  if finish_configuration: packet_finish_configuration
790
1425
  if keep_alive: packet_keep_alive
791
1426
  if ping: packet_ping
1427
+ if reset_chat: packet_reset_chat
792
1428
  if registry_data: packet_registry_data
793
1429
  if remove_resource_pack: packet_remove_resource_pack
794
1430
  if add_resource_pack: packet_add_resource_pack
1431
+ if store_cookie: packet_common_store_cookie
1432
+ if transfer: packet_common_transfer
795
1433
  if feature_flags: packet_feature_flags
796
1434
  if tags: packet_tags
1435
+ if select_known_packs: packet_common_select_known_packs
797
1436
  ^configuration.toServer.types:
798
1437
  # MC: ServerboundClientInformationPacket
799
1438
  packet_settings:
@@ -805,6 +1444,7 @@
805
1444
  mainHand: varint
806
1445
  enableTextFiltering: bool
807
1446
  enableServerListing: bool
1447
+ ## (Cookie Response is Common) ##
808
1448
  # MC: ServerboundCustomPayloadPacket
809
1449
  packet_custom_payload:
810
1450
  channel: string
@@ -825,19 +1465,41 @@
825
1465
  packet:
826
1466
  name: varint =>
827
1467
  - settings
1468
+ - cookie_response
828
1469
  - custom_payload
829
1470
  - finish_configuration
830
1471
  - keep_alive
831
1472
  - pong
832
1473
  - resource_pack_receive
1474
+ - select_known_packs
833
1475
  params: name ?
834
1476
  if settings: packet_settings
1477
+ if cookie_response: packet_common_cookie_response
835
1478
  if custom_payload: packet_custom_payload
836
1479
  if finish_configuration: packet_finish_configuration
837
1480
  if keep_alive: packet_keep_alive
838
1481
  if pong: packet_pong
839
1482
  if resource_pack_receive: packet_resource_pack_receive
1483
+ if select_known_packs: packet_common_select_known_packs
840
1484
  ^play.toClient.types:
1485
+ # World state information for spawn and respawn packets
1486
+ SpawnInfo:
1487
+ dimension: varint
1488
+ name: string
1489
+ hashedSeed: i64
1490
+ gamemode: i8 =>
1491
+ - survival
1492
+ - creative
1493
+ - adventure
1494
+ - spectator
1495
+ previousGamemode: u8
1496
+ isDebug: bool
1497
+ isFlat: bool
1498
+ death?:
1499
+ dimensionName: string
1500
+ location: position
1501
+ portalCooldown: varint
1502
+
841
1503
  # MC: ClientboundAddEntityPacket
842
1504
  packet_spawn_entity:
843
1505
  entityId: varint
@@ -870,57 +1532,9 @@
870
1532
  categoryId: varint
871
1533
  statisticId: varint
872
1534
  value: varint
873
- # MC: ClientboundUpdateAdvancementsPacket
874
- packet_advancements:
875
- reset: bool
876
- advancementMapping: []varint
877
- key: string
878
- value:
879
- parentId?: string
880
- displayData?:
881
- title: anonymousNbt
882
- description: anonymousNbt
883
- icon: slot
884
- frameType: varint
885
- flags: [
886
- "bitfield",
887
- [
888
- {
889
- "name": "_unused",
890
- "size": 29,
891
- "signed": false
892
- },
893
- {
894
- "name": "hidden",
895
- "size": 1,
896
- "signed": false
897
- },
898
- {
899
- "name": "show_toast",
900
- "size": 1,
901
- "signed": false
902
- },
903
- {
904
- "name": "has_background_texture",
905
- "size": 1,
906
- "signed": false
907
- }
908
- ]
909
- ]
910
- backgroundTexture: flags/has_background_texture ?
911
- if 1: string
912
- default: void
913
- xCord: f32
914
- yCord: f32
915
- requirements: []varint
916
- _: string[]varint
917
- sendsTelemtryData: bool
918
- identifiers: string[]varint
919
- progressMapping: []varint
920
- key: string
921
- value: []varint
922
- criterionIdentifier: string
923
- criterionProgress?: i64
1535
+ # MC: ClientboundBlockChangedAckPacket
1536
+ packet_acknowledge_player_digging:
1537
+ sequenceId: varint
924
1538
  # MC: ClientboundBlockDestructionPacket
925
1539
  packet_block_break_animation:
926
1540
  entityId: varint
@@ -975,6 +1589,14 @@
975
1589
  # MC: ClientboundChunkBatchStartPacket
976
1590
  packet_chunk_batch_start:
977
1591
  # Empty
1592
+ # MC: ClientboundChunksBiomesPacket
1593
+ packet_chunk_biomes:
1594
+ biomes: []varint
1595
+ position: packedChunkPos
1596
+ data: ByteArray
1597
+ # MC: ClientboundClearTitlesPacket
1598
+ packet_clear_titles:
1599
+ reset: bool
978
1600
  # MC: ClientboundCommandSuggestionsPacket
979
1601
  packet_tab_complete:
980
1602
  transactionId: varint
@@ -987,60 +1609,15 @@
987
1609
  packet_declare_commands:
988
1610
  nodes: command_node[]varint
989
1611
  rootIndex: varint
990
- # MC: ClientboundPlayerLookAtPacket
991
- packet_face_player:
992
- feet_eyes: varint
993
- x: f64
994
- y: f64
995
- z: f64
996
- isEntity: bool
997
- entityId: isEntity ?
998
- if true: varint
999
- default: void
1000
- entity_feet_eyes: isEntity ?
1001
- if true: varint
1002
- default: void
1003
- # MC: ClientboundTagQueryPacket
1004
- packet_nbt_query_response:
1005
- transactionId: varint
1006
- nbt: anonOptionalNbt
1007
- # MC: ClientboundSectionBlocksUpdatePacket
1008
- packet_multi_block_change:
1009
- chunkCoordinates: [
1010
- "bitfield",
1011
- [
1012
- {
1013
- "name": "x",
1014
- "size": 22,
1015
- "signed": true
1016
- },
1017
- {
1018
- "name": "z",
1019
- "size": 22,
1020
- "signed": true
1021
- },
1022
- {
1023
- "name": "y",
1024
- "size": 20,
1025
- "signed": true
1026
- }
1027
- ]
1028
- ]
1029
- records: varint[]varint
1030
1612
  # MC: ClientboundContainerClosePacket
1031
1613
  packet_close_window:
1032
1614
  windowId: u8
1033
- # MC: ClientboundOpenScreenPacket
1034
- packet_open_window:
1035
- windowId: varint
1036
- inventoryType: varint
1037
- windowTitle: anonymousNbt
1038
1615
  # MC: ClientboundContainerSetContentPacket
1039
1616
  packet_window_items:
1040
1617
  windowId: u8
1041
1618
  stateId: varint
1042
- items: slot[]varint
1043
- carriedItem: slot
1619
+ items: Slot[]varint
1620
+ carriedItem: Slot
1044
1621
  # MC: ClientboundContainerSetDataPacket
1045
1622
  packet_craft_progress_bar:
1046
1623
  windowId: u8
@@ -1051,7 +1628,8 @@
1051
1628
  windowId: i8
1052
1629
  stateId: varint
1053
1630
  slot: i16
1054
- item: slot
1631
+ item: Slot
1632
+ ## (Cookie Request is Common)
1055
1633
  # MC: ClientboundCooldownPacket
1056
1634
  packet_set_cooldown:
1057
1635
  itemID: varint
@@ -1064,6 +1642,17 @@
1064
1642
  packet_custom_payload:
1065
1643
  channel: string
1066
1644
  data: restBuffer
1645
+ # MC: ClientboundDamageEventPacket
1646
+ packet_damage_event:
1647
+ entityId: varint
1648
+ sourceTypeId: varint
1649
+ sourceCauseId: varint
1650
+ sourceDirectId: varint
1651
+ sourcePosition?: vec3f64
1652
+ # MC: ClientboundDebugSamplePacket
1653
+ packet_debug_sample:
1654
+ sample: i64[]varint
1655
+ type: varint
1067
1656
  # MC: ClientboundDeleteChatPacket
1068
1657
  packet_hide_message:
1069
1658
  id: varint
@@ -1102,8 +1691,8 @@
1102
1691
  playerMotionY: f32
1103
1692
  playerMotionZ: f32
1104
1693
  block_interaction_type: varint
1105
- small_explosion_particle: particle
1106
- large_explosion_particle: particle
1694
+ small_explosion_particle: Particle
1695
+ large_explosion_particle: Particle
1107
1696
  explosion_sound_name: string
1108
1697
  sound_range?: f32
1109
1698
  # MC: ClientboundForgetLevelChunkPacket
@@ -1119,6 +1708,20 @@
1119
1708
  windowId: u8
1120
1709
  nbSlots: varint
1121
1710
  entityId: i32
1711
+ # MC: ClientboundHurtAnimationPacket
1712
+ packet_hurt_animation:
1713
+ entityId: varint
1714
+ yaw: f32
1715
+ # MC: ClientboundInitializeBorderPacket
1716
+ packet_initialize_world_border:
1717
+ x: f64
1718
+ z: f64
1719
+ oldDiameter: f64
1720
+ newDiameter: f64
1721
+ speed: varint
1722
+ portalTeleportBoundary: varint
1723
+ warningBlocks: varint
1724
+ warningTime: varint
1122
1725
  # MC: ClientboundKeepAlivePacket
1123
1726
  packet_keep_alive:
1124
1727
  keepAliveId: i64
@@ -1150,7 +1753,6 @@
1150
1753
  global: bool
1151
1754
  # MC: ClientboundLevelParticlesPacket
1152
1755
  packet_world_particles:
1153
- particleId: varint
1154
1756
  longDistance: bool
1155
1757
  x: f64
1156
1758
  y: f64
@@ -1158,14 +1760,9 @@
1158
1760
  offsetX: f32
1159
1761
  offsetY: f32
1160
1762
  offsetZ: f32
1161
- particleData: f32
1162
- particles: i32
1163
- data: [
1164
- "particleData",
1165
- {
1166
- "compareTo": "particleId"
1167
- }
1168
- ]
1763
+ velocityOffset: f32
1764
+ amount: i32
1765
+ particle: Particle
1169
1766
  # MC: ClientboundLightUpdatePacket
1170
1767
  packet_update_light:
1171
1768
  chunkX: varint
@@ -1189,17 +1786,8 @@
1189
1786
  reducedDebugInfo: bool
1190
1787
  enableRespawnScreen: bool
1191
1788
  doLimitedCrafting: bool
1192
- worldType: string
1193
- worldName: string
1194
- hashedSeed: i64
1195
- gameMode: u8
1196
- previousGameMode: i8
1197
- isDebug: bool
1198
- isFlat: bool
1199
- death?:
1200
- dimensionName: string
1201
- location: position
1202
- portalCooldown: varint
1789
+ worldState: SpawnInfo
1790
+ enforcesSecureChat: bool
1203
1791
  # MC: ClientboundMapItemDataPacket
1204
1792
  packet_map:
1205
1793
  itemDamage: varint
@@ -1232,10 +1820,19 @@
1232
1820
  # MC: ClientboundMerchantOffersPacket
1233
1821
  packet_trade_list:
1234
1822
  windowId: varint
1823
+ ## https://github.com/extremeheat/extracted_minecraft_data/blob/client1.20.5/client/net/minecraft/world/item/trading/MerchantOffer.java#L210
1235
1824
  trades: []varint
1236
- inputItem1: slot
1237
- outputItem: slot
1238
- inputItem2: slot
1825
+ inputItem1:
1826
+ itemId: varint
1827
+ itemCount: varint
1828
+ addedComponentCount: varint
1829
+ components: SlotComponent[]$addedComponentCount
1830
+ outputItem: Slot
1831
+ inputItem2?:
1832
+ itemId: varint
1833
+ itemCount: varint
1834
+ addedComponentCount: varint
1835
+ components: SlotComponent[]$addedComponentCount
1239
1836
  tradeDisabled: bool
1240
1837
  nbTradeUses: i32
1241
1838
  maximumNbTradeUses: i32
@@ -1279,10 +1876,21 @@
1279
1876
  # MC: ClientboundOpenBookPacket
1280
1877
  packet_open_book:
1281
1878
  hand: varint
1879
+ # MC: ClientboundOpenScreenPacket
1880
+ packet_open_window:
1881
+ windowId: varint
1882
+ inventoryType: varint
1883
+ windowTitle: anonymousNbt
1282
1884
  # MC: ClientboundOpenSignEditorPacket
1283
1885
  packet_open_sign_entity:
1284
1886
  location: position
1285
1887
  isFrontText: bool
1888
+ # MC: ClientboundPingPacket
1889
+ packet_ping:
1890
+ id: i32
1891
+ # MC: ClientboundPongResponsePacket
1892
+ packet_ping_response:
1893
+ id: i64
1286
1894
  # MC: ClientboundPlaceGhostRecipePacket
1287
1895
  packet_craft_recipe_response:
1288
1896
  windowId: i8
@@ -1632,6 +2240,19 @@
1632
2240
  "anonymousNbt"
1633
2241
  ]
1634
2242
  default: void
2243
+ # MC: ClientboundPlayerLookAtPacket
2244
+ packet_face_player:
2245
+ feet_eyes: varint
2246
+ x: f64
2247
+ y: f64
2248
+ z: f64
2249
+ isEntity: bool
2250
+ entityId: isEntity ?
2251
+ if true: varint
2252
+ default: void
2253
+ entity_feet_eyes: isEntity ?
2254
+ if true: varint
2255
+ default: void
1635
2256
  # MC: ClientboundPlayerPositionPacket
1636
2257
  packet_position:
1637
2258
  x: f64
@@ -1679,22 +2300,48 @@
1679
2300
  promptMessage?: anonymousNbt
1680
2301
  # MC: ClientboundRespawnPacket
1681
2302
  packet_respawn:
1682
- dimension: string
1683
- worldName: string
1684
- hashedSeed: i64
1685
- gamemode: i8
1686
- previousGamemode: u8
1687
- isDebug: bool
1688
- isFlat: bool
1689
- death?:
1690
- dimensionName: string
1691
- location: position
1692
- portalCooldown: varint
2303
+ worldState: SpawnInfo
1693
2304
  copyMetadata: bool
1694
2305
  # MC: ClientboundRotateHeadPacket
1695
2306
  packet_entity_head_rotation:
1696
2307
  entityId: varint
1697
2308
  headYaw: i8
2309
+ # MC: ClientboundSectionBlocksUpdatePacket
2310
+ packet_multi_block_change:
2311
+ chunkCoordinates: [ "bitfield", [
2312
+ { "name": "x", "size": 22, "signed": true },
2313
+ { "name": "z", "size": 22, "signed": true },
2314
+ { "name": "y", "size": 20, "signed": true }
2315
+ ]]
2316
+ records: varint[]varint
2317
+ # MC: ClientboundSelectAdvancementsTabPacket
2318
+ packet_select_advancement_tab:
2319
+ id?: string
2320
+ # MC: ClientboundServerDataPacket
2321
+ packet_server_data:
2322
+ motd: anonymousNbt
2323
+ iconBytes?: ByteArray
2324
+ # MC: ClientboundSetActionBarTextPacket
2325
+ packet_action_bar:
2326
+ text: anonymousNbt
2327
+ # MC: ClientboundSetBorderCenterPacket
2328
+ packet_world_border_center:
2329
+ x: f64
2330
+ z: f64
2331
+ # MC: ClientboundSetBorderLerpSizePacket
2332
+ packet_world_border_lerp_size:
2333
+ oldDiameter: f64
2334
+ newDiameter: f64
2335
+ speed: varint
2336
+ # MC: ClientboundSetBorderSizePacket
2337
+ packet_world_border_size:
2338
+ diameter: f64
2339
+ # MC: ClientboundSetBorderWarningDelayPacket
2340
+ packet_world_border_warning_delay:
2341
+ warningTime: varint
2342
+ # MC: ClientboundSetBorderWarningDistancePacket
2343
+ packet_world_border_warning_reach:
2344
+ warningBlocks: varint
1698
2345
  # MC: ClientboundSetCameraPacket
1699
2346
  packet_camera:
1700
2347
  cameraId: varint
@@ -1708,6 +2355,10 @@
1708
2355
  # MC: ClientboundSetChunkCacheRadiusPacket
1709
2356
  packet_update_view_distance:
1710
2357
  viewDistance: varint
2358
+ # MC: ClientboundSetDefaultSpawnPositionPacket
2359
+ packet_spawn_position:
2360
+ location: position
2361
+ angle: f32
1711
2362
  # MC: ClientboundSetDisplayObjectivePacket
1712
2363
  packet_scoreboard_display_objective:
1713
2364
  position: varint
@@ -1741,7 +2392,7 @@
1741
2392
  },
1742
2393
  {
1743
2394
  "name": "item",
1744
- "type": "slot"
2395
+ "type": "Slot"
1745
2396
  }
1746
2397
  ]
1747
2398
  ]
@@ -1841,14 +2492,24 @@
1841
2492
  if 1: anonymousNbt
1842
2493
  if 2: anonymousNbt
1843
2494
  default: void
1844
- # MC: ClientboundSetDefaultSpawnPositionPacket
1845
- packet_spawn_position:
1846
- location: position
1847
- angle: f32
1848
- # MC: ClientboundSetTimePacket
1849
- packet_update_time:
1850
- age: i64
1851
- time: i64
2495
+ # MC: ClientboundSetSimulationDistancePacket
2496
+ packet_simulation_distance:
2497
+ distance: varint
2498
+ # MC: ClientboundSetSubtitleTextPacket
2499
+ packet_set_title_subtitle:
2500
+ text: anonymousNbt
2501
+ # MC: ClientboundSetTimePacket
2502
+ packet_update_time:
2503
+ age: i64
2504
+ time: i64
2505
+ # MC: ClientboundSetTitleTextPacket
2506
+ packet_set_title_text:
2507
+ text: anonymousNbt
2508
+ # MC: ClientboundSetTitlesAnimationPacket
2509
+ packet_set_title_time:
2510
+ fadeIn: i32
2511
+ stay: i32
2512
+ fadeOut: i32
1852
2513
  # MC: ClientboundSoundEntityPacket
1853
2514
  packet_entity_sound_effect:
1854
2515
  soundId: varint
@@ -1862,17 +2523,6 @@
1862
2523
  volume: f32
1863
2524
  pitch: f32
1864
2525
  seed: i64
1865
- # MC: ClientboundStopSoundPacket
1866
- packet_stop_sound:
1867
- flags: i8
1868
- source: flags ?
1869
- if 1: varint
1870
- if 3: varint
1871
- default: void
1872
- sound: flags ?
1873
- if 2: string
1874
- if 3: string
1875
- default: void
1876
2526
  # MC: ClientboundSoundPacket
1877
2527
  packet_sound_effect:
1878
2528
  soundId: varint
@@ -1888,6 +2538,21 @@
1888
2538
  volume: f32
1889
2539
  pitch: f32
1890
2540
  seed: i64
2541
+ # MC: ClientboundStartConfigurationPacket
2542
+ packet_start_configuration:
2543
+ # Empty
2544
+ # MC: ClientboundStopSoundPacket
2545
+ packet_stop_sound:
2546
+ flags: i8
2547
+ source: flags ?
2548
+ if 1: varint
2549
+ if 3: varint
2550
+ default: void
2551
+ sound: flags ?
2552
+ if 2: string
2553
+ if 3: string
2554
+ default: void
2555
+ ## (Store Cookie is Common)
1891
2556
  # MC: ClientboundSystemChatPacket
1892
2557
  packet_system_chat:
1893
2558
  content: anonymousNbt
@@ -1896,6 +2561,10 @@
1896
2561
  packet_playerlist_header:
1897
2562
  header: anonymousNbt
1898
2563
  footer: anonymousNbt
2564
+ # MC: ClientboundTagQueryPacket
2565
+ packet_nbt_query_response:
2566
+ transactionId: varint
2567
+ nbt: anonOptionalNbt
1899
2568
  # MC: ClientboundTakeItemEntityPacket
1900
2569
  packet_collect:
1901
2570
  collectedEntityId: varint
@@ -1910,11 +2579,73 @@
1910
2579
  yaw: i8
1911
2580
  pitch: i8
1912
2581
  onGround: bool
2582
+ # MC: ClientboundTickingStatePacket
2583
+ packet_set_ticking_state:
2584
+ tick_rate: f32
2585
+ is_frozen: bool
2586
+ # MC: ClientboundTickingStepPacket
2587
+ packet_step_tick:
2588
+ tick_steps: varint
2589
+ ## (Transfer is common)
2590
+ # MC: ClientboundUpdateAdvancementsPacket
2591
+ packet_advancements:
2592
+ reset: bool
2593
+ advancementMapping: []varint
2594
+ key: string
2595
+ value:
2596
+ parentId?: string
2597
+ displayData?:
2598
+ title: anonymousNbt
2599
+ description: anonymousNbt
2600
+ icon: Slot
2601
+ frameType: varint
2602
+ flags: ["bitfield", [
2603
+ { "name": "unused", "size": 29, "signed": false },
2604
+ { "name": "hidden", "size": 1, "signed": false },
2605
+ { "name": "show_toast", "size": 1, "signed": false },
2606
+ { "name": "has_background_texture", "size": 1, "signed": false }
2607
+ ]]
2608
+ backgroundTexture: flags/has_background_texture ?
2609
+ if 1: string
2610
+ default: void
2611
+ xCord: f32
2612
+ yCord: f32
2613
+ requirements: []varint
2614
+ _: string[]varint
2615
+ sendsTelemtryData: bool
2616
+ identifiers: string[]varint
2617
+ progressMapping: []varint
2618
+ key: string
2619
+ value: []varint
2620
+ criterionIdentifier: string
2621
+ criterionProgress?: i64
1913
2622
  # MC: ClientboundUpdateAttributesPacket
1914
2623
  packet_entity_update_attributes:
1915
2624
  entityId: varint
1916
2625
  properties: []varint
1917
- key: string
2626
+ key: varint =>
2627
+ - generic.armor
2628
+ - generic.armor_toughness
2629
+ - generic.attack_damage
2630
+ - generic.attack_knockback
2631
+ - generic.attack_speed
2632
+ - player.block_break_speed
2633
+ - player.block_interaction_range
2634
+ - player.entity_interaction_range
2635
+ - generic.fall_damage_multiplier
2636
+ - generic.flying_speed
2637
+ - generic.follow_range
2638
+ - generic.gravity
2639
+ - generic.jump_strength
2640
+ - generic.knockback_resistance
2641
+ - generic.luck
2642
+ - generic.max_absorption
2643
+ - generic.max_health
2644
+ - generic.movement_speed
2645
+ - generic.safe_fall_distance
2646
+ - generic.scale
2647
+ - zombie.spawn_reinforcements
2648
+ - generic.step_height
1918
2649
  value: f64
1919
2650
  modifiers: []varint
1920
2651
  uuid: UUID
@@ -1924,34 +2655,51 @@
1924
2655
  packet_entity_effect:
1925
2656
  entityId: varint
1926
2657
  effectId: varint
1927
- amplifier: i8
2658
+ amplifier: varint
1928
2659
  duration: varint
1929
- hideParticles: i8
1930
- factorCodec?: anonymousNbt
1931
- # MC: ClientboundSelectAdvancementsTabPacket
1932
- packet_select_advancement_tab:
1933
- id?: string
1934
- # MC: ClientboundServerDataPacket
1935
- packet_server_data:
1936
- motd: anonymousNbt
1937
- iconBytes?: [
1938
- "buffer",
1939
- {
1940
- "countType": "varint"
1941
- }
1942
- ]
1943
- enforcesSecureChat: bool
2660
+ # a bitfield of 0x01 for ambient, 0x02 for show particles
2661
+ # flags: ["bitfield", [
2662
+ # { "name": "unused", "size": 4 },
2663
+ # { "name": "ambient", "size": 1 },
2664
+ # { "name": "showParticles", "size": 1 },
2665
+ # { "name": "showIcon", "size": 1 },
2666
+ # { "name": "blend", "size": 1 }
2667
+ # ]]
2668
+ flags: u8
1944
2669
  # MC: ClientboundUpdateRecipesPacket
1945
2670
  packet_declare_recipes:
1946
2671
  recipes: []varint
1947
- type: string
1948
- recipeId: string
2672
+ name: string
2673
+ type: varint =>
2674
+ - minecraft:crafting_shaped
2675
+ - minecraft:crafting_shapeless
2676
+ - minecraft:crafting_special_armordye
2677
+ - minecraft:crafting_special_bookcloning
2678
+ - minecraft:crafting_special_mapcloning
2679
+ - minecraft:crafting_special_mapextending
2680
+ - minecraft:crafting_special_firework_rocket
2681
+ - minecraft:crafting_special_firework_star
2682
+ - minecraft:crafting_special_firework_star_fade
2683
+ - minecraft:crafting_special_tippedarrow
2684
+ - minecraft:crafting_special_bannerduplicate
2685
+ - minecraft:crafting_special_shielddecoration
2686
+ - minecraft:crafting_special_shulkerboxcoloring
2687
+ - minecraft:crafting_special_suspiciousstew
2688
+ - minecraft:crafting_special_repairitem
2689
+ - minecraft:smelting
2690
+ - minecraft:blasting
2691
+ - minecraft:smoking
2692
+ - minecraft:campfire_cooking
2693
+ - minecraft:stonecutting
2694
+ - minecraft:smithing_transform
2695
+ - minecraft:smithing_trim
2696
+ - minecraft:crafting_decorated_pot
1949
2697
  data: type ?
1950
2698
  if minecraft:crafting_shapeless:
1951
2699
  group: string
1952
2700
  category: varint
1953
2701
  ingredients: ingredient[]varint
1954
- result: slot
2702
+ result: Slot
1955
2703
  if minecraft:crafting_shaped:
1956
2704
  group: string
1957
2705
  category: varint
@@ -1959,7 +2707,7 @@
1959
2707
  height: varint
1960
2708
  ingredients: []$width
1961
2709
  _: ingredient[]$height
1962
- result: slot
2710
+ result: Slot
1963
2711
  showNotification: bool
1964
2712
  if minecraft:crafting_special_armordye: minecraft_simple_recipe_format
1965
2713
  if minecraft:crafting_special_bookcloning: minecraft_simple_recipe_format
@@ -1982,12 +2730,12 @@
1982
2730
  if minecraft:stonecutting:
1983
2731
  group: string
1984
2732
  ingredient: ingredient
1985
- result: slot
2733
+ result: Slot
1986
2734
  if minecraft:smithing_transform:
1987
2735
  template: ingredient
1988
2736
  base: ingredient
1989
2737
  addition: ingredient
1990
- result: slot
2738
+ result: Slot
1991
2739
  if minecraft:smithing_trim:
1992
2740
  template: ingredient
1993
2741
  base: ingredient
@@ -1998,94 +2746,11 @@
1998
2746
  tags: []varint
1999
2747
  tagType: string
2000
2748
  tags: tags
2001
- # MC: ClientboundBlockChangedAckPacket
2002
- packet_acknowledge_player_digging:
2003
- sequenceId: varint
2004
- # MC: ClientboundClearTitlesPacket
2005
- packet_clear_titles:
2006
- reset: bool
2007
- # MC: ClientboundInitializeBorderPacket
2008
- packet_initialize_world_border:
2009
- x: f64
2010
- z: f64
2011
- oldDiameter: f64
2012
- newDiameter: f64
2013
- speed: varint
2014
- portalTeleportBoundary: varint
2015
- warningBlocks: varint
2016
- warningTime: varint
2017
- # MC: ClientboundSetActionBarTextPacket
2018
- packet_action_bar:
2019
- text: anonymousNbt
2020
- # MC: ClientboundSetBorderCenterPacket
2021
- packet_world_border_center:
2022
- x: f64
2023
- z: f64
2024
- # MC: ClientboundSetBorderLerpSizePacket
2025
- packet_world_border_lerp_size:
2026
- oldDiameter: f64
2027
- newDiameter: f64
2028
- speed: varint
2029
- # MC: ClientboundSetBorderSizePacket
2030
- packet_world_border_size:
2031
- diameter: f64
2032
- # MC: ClientboundSetBorderWarningDelayPacket
2033
- packet_world_border_warning_delay:
2034
- warningTime: varint
2035
- # MC: ClientboundSetBorderWarningDistancePacket
2036
- packet_world_border_warning_reach:
2037
- warningBlocks: varint
2038
- # MC: ClientboundPingPacket
2039
- packet_ping:
2040
- id: i32
2041
- # MC: ClientboundPongResponsePacket
2042
- packet_ping_response:
2043
- id: i64
2044
- # MC: ClientboundSetSubtitleTextPacket
2045
- packet_set_title_subtitle:
2046
- text: anonymousNbt
2047
- # MC: ClientboundSetTitleTextPacket
2048
- packet_set_title_text:
2049
- text: anonymousNbt
2050
- # MC: ClientboundSetTitlesAnimationPacket
2051
- packet_set_title_time:
2052
- fadeIn: i32
2053
- stay: i32
2054
- fadeOut: i32
2055
- # MC: ClientboundSetSimulationDistancePacket
2056
- packet_simulation_distance:
2057
- distance: varint
2058
- # MC: ClientboundChunksBiomesPacket
2059
- packet_chunk_biomes:
2060
- biomes: []varint
2061
- position: packedChunkPos
2062
- data: [
2063
- "buffer",
2064
- {
2065
- "countType": "varint"
2066
- }
2067
- ]
2068
- # MC: ClientboundDamageEventPacket
2069
- packet_damage_event:
2070
- entityId: varint
2071
- sourceTypeId: varint
2072
- sourceCauseId: varint
2073
- sourceDirectId: varint
2074
- sourcePosition?: vec3f64
2075
- # MC: ClientboundHurtAnimationPacket
2076
- packet_hurt_animation:
2077
- entityId: varint
2078
- yaw: f32
2079
- # MC: ClientboundStartConfigurationPacket
2080
- packet_start_configuration:
2081
- # Empty
2082
- # MC: ClientboundTickingStatePacket
2083
- packet_set_ticking_state:
2084
- tick_rate: f32
2085
- is_frozen: bool
2086
- # MC: ClientboundTickingStepPacket
2087
- packet_step_tick:
2088
- tick_steps: varint
2749
+ # MC: ClientboundProjectilePowerPacket
2750
+ packet_set_projectile_power:
2751
+ id: varint
2752
+ power: vec3f64
2753
+
2089
2754
  packet:
2090
2755
  name: varint =>
2091
2756
  - bundle_delimiter
@@ -2110,10 +2775,12 @@
2110
2775
  - window_items
2111
2776
  - craft_progress_bar
2112
2777
  - set_slot
2778
+ - cookie_request
2113
2779
  - set_cooldown
2114
2780
  - chat_suggestions
2115
2781
  - custom_payload
2116
2782
  - damage_event
2783
+ - debug_sample
2117
2784
  - hide_message
2118
2785
  - kick_disconnect
2119
2786
  - profileless_chat
@@ -2193,6 +2860,7 @@
2193
2860
  - sound_effect
2194
2861
  - start_configuration
2195
2862
  - stop_sound
2863
+ - store_cookie
2196
2864
  - system_chat
2197
2865
  - playerlist_header
2198
2866
  - nbt_query_response
@@ -2200,6 +2868,7 @@
2200
2868
  - entity_teleport
2201
2869
  - set_ticking_state
2202
2870
  - step_tick
2871
+ - transfer
2203
2872
  - advancements
2204
2873
  - entity_update_attributes
2205
2874
  - entity_effect
@@ -2228,10 +2897,12 @@
2228
2897
  if window_items: packet_window_items
2229
2898
  if craft_progress_bar: packet_craft_progress_bar
2230
2899
  if set_slot: packet_set_slot
2900
+ if cookie_request: packet_common_cookie_request
2231
2901
  if set_cooldown: packet_set_cooldown
2232
2902
  if chat_suggestions: packet_chat_suggestions
2233
2903
  if custom_payload: packet_custom_payload
2234
2904
  if damage_event: packet_damage_event
2905
+ if debug_sample: packet_debug_sample
2235
2906
  if hide_message: packet_hide_message
2236
2907
  if kick_disconnect: packet_kick_disconnect
2237
2908
  if profileless_chat: packet_profileless_chat
@@ -2311,29 +2982,41 @@
2311
2982
  if sound_effect: packet_sound_effect
2312
2983
  if start_configuration: packet_start_configuration
2313
2984
  if stop_sound: packet_stop_sound
2985
+ if store_cookie: packet_common_store_cookie
2314
2986
  if system_chat: packet_system_chat
2315
2987
  if playerlist_header: packet_playerlist_header
2316
2988
  if nbt_query_response: packet_nbt_query_response
2317
2989
  if collect: packet_collect
2318
2990
  if entity_teleport: packet_entity_teleport
2991
+ if set_ticking_state: packet_set_ticking_state
2992
+ if step_tick: packet_step_tick
2993
+ if transfer: packet_common_transfer
2319
2994
  if advancements: packet_advancements
2320
2995
  if entity_update_attributes: packet_entity_update_attributes
2321
2996
  if entity_effect: packet_entity_effect
2322
2997
  if declare_recipes: packet_declare_recipes
2323
2998
  if tags: packet_tags
2324
- if set_ticking_state: packet_set_ticking_state
2325
- if step_tick: packet_step_tick
2999
+
2326
3000
  ^play.toServer.types:
2327
3001
  # MC: ServerboundAcceptTeleportationPacket
2328
3002
  packet_teleport_confirm:
2329
3003
  teleportId: varint
2330
- # MC: ServerboundBlockEntityTagQuery
3004
+ # MC: ServerboundBlockEntityTagQueryPacket
2331
3005
  packet_query_block_nbt:
2332
3006
  transactionId: varint
2333
3007
  location: position
3008
+ # MC: ServerboundChangeDifficultyPacket
3009
+ packet_set_difficulty:
3010
+ newDifficulty: u8
3011
+ # MC: ServerboundChatAckPacket
3012
+ packet_message_acknowledgement:
3013
+ count: varint
2334
3014
  # MC: ServerboundChatCommandPacket
2335
3015
  packet_chat_command:
2336
3016
  command: string
3017
+ # MC: ServerboundChatCommandSignedPacket
3018
+ packet_chat_command_signed:
3019
+ command: string
2337
3020
  timestamp: i64
2338
3021
  salt: i64
2339
3022
  argumentSignatures: []varint
@@ -2369,67 +3052,15 @@
2369
3052
  "count": 3
2370
3053
  }
2371
3054
  ]
2372
- # MC: ServerboundChangeDifficultyPacket
2373
- packet_set_difficulty:
2374
- newDifficulty: u8
2375
- # MC: ServerboundChatAckPacket
2376
- packet_message_acknowledgement:
2377
- count: varint
2378
- # MC: ServerboundEditBookPacket
2379
- packet_edit_book:
2380
- hand: varint
2381
- pages: string[]varint
2382
- title?: string
2383
- # MC: ServerboundEntityTagQuery
2384
- packet_query_entity_nbt:
2385
- transactionId: varint
2386
- entityId: varint
2387
- # MC: ServerboundPickItemPacket
2388
- packet_pick_item:
2389
- slot: varint
2390
- # MC: ServerboundRenameItemPacket
2391
- packet_name_item:
2392
- name: string
2393
- # MC: ServerboundSelectTradePacket
2394
- packet_select_trade:
2395
- slot: varint
2396
- # MC: ServerboundSetBeaconPacket
2397
- packet_set_beacon_effect:
2398
- primary_effect?: varint
2399
- secondary_effect?: varint
2400
- # MC: ServerboundSetCommandBlockPacket
2401
- packet_update_command_block:
2402
- location: position
2403
- command: string
2404
- mode: varint
2405
- flags: u8
2406
- # MC: ServerboundSetCommandMinecartPacket
2407
- packet_update_command_block_minecart:
2408
- entityId: varint
2409
- command: string
2410
- track_output: bool
2411
- # MC: ServerboundSetStructureBlockPacket
2412
- packet_update_structure_block:
2413
- location: position
2414
- action: varint
2415
- mode: varint
2416
- name: string
2417
- offset_x: i8
2418
- offset_y: i8
2419
- offset_z: i8
2420
- size_x: i8
2421
- size_y: i8
2422
- size_z: i8
2423
- mirror: varint
2424
- rotation: varint
2425
- metadata: string
2426
- integrity: f32
2427
- seed: varint
2428
- flags: u8
2429
- # MC: ServerboundCommandSuggestionPacket
2430
- packet_tab_complete:
2431
- transactionId: varint
2432
- text: string
3055
+ # MC: ServerboundChatSessionUpdatePacket
3056
+ packet_chat_session_update:
3057
+ sessionUUID: UUID
3058
+ expireTime: i64
3059
+ publicKey: ByteArray
3060
+ signature: ByteArray
3061
+ # MC: ServerboundChunkBatchReceivedPacket
3062
+ packet_chunk_batch_received:
3063
+ chunksPerTick: f32
2433
3064
  # MC: ServerboundClientCommandPacket
2434
3065
  packet_client_command:
2435
3066
  actionId: varint
@@ -2443,6 +3074,13 @@
2443
3074
  mainHand: varint
2444
3075
  enableTextFiltering: bool
2445
3076
  enableServerListing: bool
3077
+ # MC: ServerboundCommandSuggestionPacket
3078
+ packet_tab_complete:
3079
+ transactionId: varint
3080
+ text: string
3081
+ # MC: ServerboundConfigurationAcknowledgedPacket
3082
+ packet_configuration_acknowledged:
3083
+ # Empty
2446
3084
  # MC: ServerboundContainerButtonClickPacket
2447
3085
  packet_enchant_item:
2448
3086
  windowId: i8
@@ -2456,15 +3094,32 @@
2456
3094
  mode: varint
2457
3095
  changedSlots: []varint
2458
3096
  location: i16
2459
- item: slot
2460
- cursorItem: slot
3097
+ item: Slot
3098
+ cursorItem: Slot
2461
3099
  # MC: ServerboundContainerClosePacket
2462
3100
  packet_close_window:
2463
3101
  windowId: u8
3102
+ # MC: ServerboundContainerSlotStateChangedPacket
3103
+ packet_set_slot_state:
3104
+ slot_id: varint
3105
+ window_id: varint
3106
+ state: bool
2464
3107
  # MC: ServerboundCustomPayloadPacket
2465
3108
  packet_custom_payload:
2466
3109
  channel: string
2467
3110
  data: restBuffer
3111
+ # MC: ServerboundDebugSampleSubscriptionPacket
3112
+ packet_debug_sample_subscription:
3113
+ type: varint
3114
+ # MC: ServerboundEditBookPacket
3115
+ packet_edit_book:
3116
+ hand: varint
3117
+ pages: string[]varint
3118
+ title?: string
3119
+ # MC: ServerboundEntityTagQuery
3120
+ packet_query_entity_nbt:
3121
+ transactionId: varint
3122
+ entityId: varint
2468
3123
  # MC: ServerboundInteractPacket
2469
3124
  packet_use_entity:
2470
3125
  target: varint
@@ -2527,6 +3182,12 @@
2527
3182
  packet_steer_boat:
2528
3183
  leftPaddle: bool
2529
3184
  rightPaddle: bool
3185
+ # MC: ServerboundPickItemPacket
3186
+ packet_pick_item:
3187
+ slot: varint
3188
+ # MC: ServerboundPingRequestPacket
3189
+ packet_ping_request:
3190
+ id: i64
2530
3191
  # MC: ServerboundPlaceRecipePacket
2531
3192
  packet_craft_recipe_request:
2532
3193
  windowId: i8
@@ -2551,25 +3212,55 @@
2551
3212
  sideways: f32
2552
3213
  forward: f32
2553
3214
  jump: u8
2554
- # MC: ServerboundRecipeBookSeenRecipePacket
2555
- packet_displayed_recipe:
2556
- recipeId: string
3215
+ # MC: ServerboundPongPacket
3216
+ packet_pong:
3217
+ id: i32
2557
3218
  # MC: ServerboundRecipeBookChangeSettingsPacket
2558
3219
  packet_recipe_book:
2559
3220
  bookId: varint
2560
3221
  bookOpen: bool
2561
3222
  filterActive: bool
3223
+ # MC: ServerboundRecipeBookSeenRecipePacket
3224
+ packet_displayed_recipe:
3225
+ recipeId: string
3226
+ # MC: ServerboundRenameItemPacket
3227
+ packet_name_item:
3228
+ name: string
2562
3229
  # MC: ServerboundResourcePackPacket
2563
3230
  packet_resource_pack_receive:
2564
3231
  uuid: UUID
2565
3232
  result: varint
3233
+ # MC: ServerboundSeenAdvancementsPacket
3234
+ packet_advancement_tab:
3235
+ action: varint
3236
+ tabId: action ?
3237
+ if 0: string
3238
+ if 1: void
3239
+ # MC: ServerboundSelectTradePacket
3240
+ packet_select_trade:
3241
+ slot: varint
3242
+ # MC: ServerboundSetBeaconPacket
3243
+ packet_set_beacon_effect:
3244
+ primary_effect?: varint
3245
+ secondary_effect?: varint
2566
3246
  # MC: ServerboundSetCarriedItemPacket
2567
3247
  packet_held_item_slot:
2568
3248
  slotId: i16
3249
+ # MC: ServerboundSetCommandBlockPacket
3250
+ packet_update_command_block:
3251
+ location: position
3252
+ command: string
3253
+ mode: varint
3254
+ flags: u8
3255
+ # MC: ServerboundSetCommandMinecartPacket
3256
+ packet_update_command_block_minecart:
3257
+ entityId: varint
3258
+ command: string
3259
+ track_output: bool
2569
3260
  # MC: ServerboundSetCreativeModeSlotPacket
2570
3261
  packet_set_creative_slot:
2571
3262
  slot: i16
2572
- item: slot
3263
+ item: Slot
2573
3264
  # MC: ServerboundSetJigsawBlockPacket
2574
3265
  packet_update_jigsaw_block:
2575
3266
  location: position
@@ -2580,6 +3271,24 @@
2580
3271
  jointType: string
2581
3272
  selection_priority: varint
2582
3273
  placement_priority: varint
3274
+ # MC: ServerboundSetStructureBlockPacket
3275
+ packet_update_structure_block:
3276
+ location: position
3277
+ action: varint
3278
+ mode: varint
3279
+ name: string
3280
+ offset_x: i8
3281
+ offset_y: i8
3282
+ offset_z: i8
3283
+ size_x: i8
3284
+ size_y: i8
3285
+ size_z: i8
3286
+ mirror: varint
3287
+ rotation: varint
3288
+ metadata: string
3289
+ integrity: f32
3290
+ seed: varint
3291
+ flags: u8
2583
3292
  # MC: ServerboundSignUpdatePacket
2584
3293
  packet_update_sign:
2585
3294
  location: position
@@ -2608,45 +3317,7 @@
2608
3317
  packet_use_item:
2609
3318
  hand: varint
2610
3319
  sequence: varint
2611
- # MC: ServerboundSeenAdvancementsPacket
2612
- packet_advancement_tab:
2613
- action: varint
2614
- tabId: action ?
2615
- if 0: string
2616
- if 1: void
2617
- # MC: ServerboundPongPacket
2618
- packet_pong:
2619
- id: i32
2620
- # MC: ServerboundChatSessionUpdatePacket
2621
- packet_chat_session_update:
2622
- sessionUUID: UUID
2623
- expireTime: i64
2624
- publicKey: [
2625
- "buffer",
2626
- {
2627
- "countType": "varint"
2628
- }
2629
- ]
2630
- signature: [
2631
- "buffer",
2632
- {
2633
- "countType": "varint"
2634
- }
2635
- ]
2636
- # MC: ServerboundChunkBatchReceivedPacket
2637
- packet_chunk_batch_received:
2638
- chunksPerTick: f32
2639
- # MC: ServerboundConfigurationAcknowledgedPacket
2640
- packet_configuration_acknowledged:
2641
- # Empty
2642
- # MC: ServerboundPingRequestPacket
2643
- packet_ping_request:
2644
- id: i64
2645
- # MC: ServerboundContainerSlotStateChangedPacket
2646
- packet_set_slot_state:
2647
- slot_id: varint
2648
- window_id: varint
2649
- state: bool
3320
+
2650
3321
  packet:
2651
3322
  name: varint =>
2652
3323
  - teleport_confirm
@@ -2654,6 +3325,7 @@
2654
3325
  - set_difficulty
2655
3326
  - message_acknowledgement
2656
3327
  - chat_command
3328
+ - chat_command_signed
2657
3329
  - chat_message
2658
3330
  - chat_session_update
2659
3331
  - chunk_batch_received
@@ -2665,7 +3337,9 @@
2665
3337
  - window_click
2666
3338
  - close_window
2667
3339
  - set_slot_state
3340
+ - cookie_response
2668
3341
  - custom_payload
3342
+ - debug_sample_subscription
2669
3343
  - edit_book
2670
3344
  - query_entity_nbt
2671
3345
  - use_entity
@@ -2710,13 +3384,19 @@
2710
3384
  if set_difficulty: packet_set_difficulty
2711
3385
  if message_acknowledgement: packet_message_acknowledgement
2712
3386
  if chat_command: packet_chat_command
3387
+ if chat_command_signed: packet_chat_command_signed
2713
3388
  if chat_message: packet_chat_message
3389
+ if chat_session_update: packet_chat_session_update
3390
+ if chunk_batch_received: packet_chunk_batch_received
2714
3391
  if client_command: packet_client_command
2715
3392
  if settings: packet_settings
2716
3393
  if tab_complete: packet_tab_complete
3394
+ if configuration_acknowledged: packet_configuration_acknowledged
2717
3395
  if enchant_item: packet_enchant_item
2718
3396
  if window_click: packet_window_click
2719
3397
  if close_window: packet_close_window
3398
+ if set_slot_state: packet_set_slot_state
3399
+ if cookie_response: packet_common_cookie_response
2720
3400
  if custom_payload: packet_custom_payload
2721
3401
  if edit_book: packet_edit_book
2722
3402
  if query_entity_nbt: packet_query_entity_nbt
@@ -2731,13 +3411,13 @@
2731
3411
  if vehicle_move: packet_vehicle_move
2732
3412
  if steer_boat: packet_steer_boat
2733
3413
  if pick_item: packet_pick_item
3414
+ if ping_request: packet_ping_request
2734
3415
  if craft_recipe_request: packet_craft_recipe_request
2735
3416
  if abilities: packet_abilities
2736
3417
  if block_dig: packet_block_dig
2737
3418
  if entity_action: packet_entity_action
2738
3419
  if steer_vehicle: packet_steer_vehicle
2739
3420
  if pong: packet_pong
2740
- if chat_session_update: packet_chat_session_update
2741
3421
  if recipe_book: packet_recipe_book
2742
3422
  if displayed_recipe: packet_displayed_recipe
2743
3423
  if name_item: packet_name_item
@@ -2756,7 +3436,3 @@
2756
3436
  if spectate: packet_spectate
2757
3437
  if block_place: packet_block_place
2758
3438
  if use_item: packet_use_item
2759
- if chunk_batch_received: packet_chunk_batch_received
2760
- if configuration_acknowledged: packet_configuration_acknowledged
2761
- if ping_request: packet_ping_request
2762
- if set_slot_state: packet_set_slot_state