minecraft-data 3.91.0 → 3.92.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 (131) hide show
  1. package/data.js +27 -0
  2. package/doc/history.md +4 -0
  3. package/index.d.ts +5 -2
  4. package/minecraft-data/data/dataPaths.json +27 -0
  5. package/minecraft-data/data/pc/1.10/proto.yml +29 -35
  6. package/minecraft-data/data/pc/1.10/protocol.json +101 -86
  7. package/minecraft-data/data/pc/1.10-pre1/proto.yml +29 -35
  8. package/minecraft-data/data/pc/1.10-pre1/protocol.json +101 -86
  9. package/minecraft-data/data/pc/1.11/proto.yml +29 -35
  10. package/minecraft-data/data/pc/1.11/protocol.json +101 -86
  11. package/minecraft-data/data/pc/1.12/proto.yml +29 -35
  12. package/minecraft-data/data/pc/1.12/protocol.json +101 -86
  13. package/minecraft-data/data/pc/1.12-pre4/proto.yml +29 -35
  14. package/minecraft-data/data/pc/1.12-pre4/protocol.json +101 -86
  15. package/minecraft-data/data/pc/1.12.1/proto.yml +29 -35
  16. package/minecraft-data/data/pc/1.12.1/protocol.json +101 -86
  17. package/minecraft-data/data/pc/1.12.2/proto.yml +29 -35
  18. package/minecraft-data/data/pc/1.12.2/protocol.json +101 -86
  19. package/minecraft-data/data/pc/1.13/proto.yml +29 -35
  20. package/minecraft-data/data/pc/1.13/protocol.json +101 -86
  21. package/minecraft-data/data/pc/1.13.1/proto.yml +29 -35
  22. package/minecraft-data/data/pc/1.13.1/protocol.json +101 -86
  23. package/minecraft-data/data/pc/1.13.2/proto.yml +29 -35
  24. package/minecraft-data/data/pc/1.13.2/protocol.json +101 -86
  25. package/minecraft-data/data/pc/1.13.2-pre1/proto.yml +29 -35
  26. package/minecraft-data/data/pc/1.13.2-pre1/protocol.json +101 -86
  27. package/minecraft-data/data/pc/1.13.2-pre2/proto.yml +29 -35
  28. package/minecraft-data/data/pc/1.13.2-pre2/protocol.json +101 -86
  29. package/minecraft-data/data/pc/1.14/proto.yml +29 -35
  30. package/minecraft-data/data/pc/1.14/protocol.json +101 -86
  31. package/minecraft-data/data/pc/1.14.1/proto.yml +29 -35
  32. package/minecraft-data/data/pc/1.14.1/protocol.json +101 -86
  33. package/minecraft-data/data/pc/1.14.3/proto.yml +29 -35
  34. package/minecraft-data/data/pc/1.14.3/protocol.json +101 -86
  35. package/minecraft-data/data/pc/1.14.4/proto.yml +29 -35
  36. package/minecraft-data/data/pc/1.14.4/protocol.json +101 -86
  37. package/minecraft-data/data/pc/1.15/proto.yml +29 -35
  38. package/minecraft-data/data/pc/1.15/protocol.json +101 -86
  39. package/minecraft-data/data/pc/1.15.1/proto.yml +29 -35
  40. package/minecraft-data/data/pc/1.15.1/protocol.json +101 -86
  41. package/minecraft-data/data/pc/1.15.2/proto.yml +29 -35
  42. package/minecraft-data/data/pc/1.15.2/protocol.json +101 -86
  43. package/minecraft-data/data/pc/1.16/proto.yml +29 -35
  44. package/minecraft-data/data/pc/1.16/protocol.json +101 -86
  45. package/minecraft-data/data/pc/1.16-rc1/proto.yml +29 -35
  46. package/minecraft-data/data/pc/1.16-rc1/protocol.json +101 -86
  47. package/minecraft-data/data/pc/1.16.1/proto.yml +29 -35
  48. package/minecraft-data/data/pc/1.16.1/protocol.json +101 -86
  49. package/minecraft-data/data/pc/1.16.2/proto.yml +29 -35
  50. package/minecraft-data/data/pc/1.16.2/protocol.json +101 -86
  51. package/minecraft-data/data/pc/1.17/proto.yml +30 -36
  52. package/minecraft-data/data/pc/1.17/protocol.json +102 -87
  53. package/minecraft-data/data/pc/1.17.1/proto.yml +30 -36
  54. package/minecraft-data/data/pc/1.17.1/protocol.json +102 -87
  55. package/minecraft-data/data/pc/1.18/proto.yml +30 -36
  56. package/minecraft-data/data/pc/1.18/protocol.json +102 -87
  57. package/minecraft-data/data/pc/1.18.2/proto.yml +30 -36
  58. package/minecraft-data/data/pc/1.18.2/protocol.json +102 -87
  59. package/minecraft-data/data/pc/1.19/proto.yml +34 -67
  60. package/minecraft-data/data/pc/1.19/protocol.json +123 -127
  61. package/minecraft-data/data/pc/1.19.2/proto.yml +35 -68
  62. package/minecraft-data/data/pc/1.19.2/protocol.json +123 -127
  63. package/minecraft-data/data/pc/1.19.3/proto.yml +39 -309
  64. package/minecraft-data/data/pc/1.19.3/protocol.json +65 -324
  65. package/minecraft-data/data/pc/1.19.4/proto.yml +39 -309
  66. package/minecraft-data/data/pc/1.19.4/protocol.json +65 -324
  67. package/minecraft-data/data/pc/1.20/proto.yml +40 -310
  68. package/minecraft-data/data/pc/1.20/protocol.json +65 -324
  69. package/minecraft-data/data/pc/1.20.2/proto.yml +40 -310
  70. package/minecraft-data/data/pc/1.20.2/protocol.json +65 -324
  71. package/minecraft-data/data/pc/1.20.3/proto.yml +156 -327
  72. package/minecraft-data/data/pc/1.20.3/protocol.json +186 -369
  73. package/minecraft-data/data/pc/1.20.5/proto.yml +427 -845
  74. package/minecraft-data/data/pc/1.20.5/protocol.json +669 -931
  75. package/minecraft-data/data/pc/1.21.1/proto.yml +415 -898
  76. package/minecraft-data/data/pc/1.21.1/protocol.json +585 -1058
  77. package/minecraft-data/data/pc/1.21.3/proto.yml +429 -572
  78. package/minecraft-data/data/pc/1.21.3/protocol.json +760 -920
  79. package/minecraft-data/data/pc/1.21.4/protocol.json +766 -917
  80. package/minecraft-data/data/pc/1.21.6/attributes.json +247 -0
  81. package/minecraft-data/data/pc/1.21.6/biomes.json +652 -0
  82. package/minecraft-data/data/pc/1.21.6/blockCollisionShapes.json +142541 -0
  83. package/minecraft-data/data/pc/1.21.6/blocks.json +41360 -0
  84. package/minecraft-data/data/pc/1.21.6/effects.json +236 -0
  85. package/minecraft-data/data/pc/1.21.6/enchantments.json +959 -0
  86. package/minecraft-data/data/pc/1.21.6/entities.json +1512 -0
  87. package/minecraft-data/data/pc/1.21.6/foods.json +402 -0
  88. package/minecraft-data/data/pc/1.21.6/instruments.json +94 -0
  89. package/minecraft-data/data/pc/1.21.6/items.json +9278 -0
  90. package/minecraft-data/data/pc/1.21.6/language.json +7389 -0
  91. package/minecraft-data/data/pc/1.21.6/materials.json +206 -0
  92. package/minecraft-data/data/pc/1.21.6/particles.json +458 -0
  93. package/minecraft-data/data/pc/1.21.6/recipes.json +30473 -0
  94. package/minecraft-data/data/pc/1.21.6/sounds.json +6910 -0
  95. package/minecraft-data/data/pc/1.21.6/tints.json +465 -0
  96. package/minecraft-data/data/pc/1.21.6/version.json +6 -0
  97. package/minecraft-data/data/pc/1.7/proto.yml +3 -6
  98. package/minecraft-data/data/pc/1.7/protocol.json +7 -0
  99. package/minecraft-data/data/pc/1.8/proto.yml +29 -35
  100. package/minecraft-data/data/pc/1.8/protocol.json +101 -86
  101. package/minecraft-data/data/pc/1.9/proto.yml +29 -35
  102. package/minecraft-data/data/pc/1.9/protocol.json +101 -86
  103. package/minecraft-data/data/pc/1.9.1-pre2/proto.yml +29 -35
  104. package/minecraft-data/data/pc/1.9.1-pre2/protocol.json +101 -86
  105. package/minecraft-data/data/pc/1.9.2/proto.yml +29 -35
  106. package/minecraft-data/data/pc/1.9.2/protocol.json +101 -86
  107. package/minecraft-data/data/pc/1.9.4/proto.yml +29 -35
  108. package/minecraft-data/data/pc/1.9.4/protocol.json +101 -86
  109. package/minecraft-data/data/pc/15w40b/proto.yml +29 -35
  110. package/minecraft-data/data/pc/15w40b/protocol.json +101 -86
  111. package/minecraft-data/data/pc/16w20a/proto.yml +29 -35
  112. package/minecraft-data/data/pc/16w20a/protocol.json +101 -86
  113. package/minecraft-data/data/pc/16w35a/proto.yml +29 -35
  114. package/minecraft-data/data/pc/16w35a/protocol.json +101 -86
  115. package/minecraft-data/data/pc/17w15a/proto.yml +29 -35
  116. package/minecraft-data/data/pc/17w15a/protocol.json +101 -86
  117. package/minecraft-data/data/pc/17w18b/proto.yml +29 -35
  118. package/minecraft-data/data/pc/17w18b/protocol.json +101 -86
  119. package/minecraft-data/data/pc/17w50a/proto.yml +29 -35
  120. package/minecraft-data/data/pc/17w50a/protocol.json +101 -86
  121. package/minecraft-data/data/pc/20w13b/proto.yml +29 -35
  122. package/minecraft-data/data/pc/20w13b/protocol.json +101 -86
  123. package/minecraft-data/data/pc/21w07a/proto.yml +29 -35
  124. package/minecraft-data/data/pc/21w07a/protocol.json +101 -86
  125. package/minecraft-data/data/pc/common/features.json +7 -2
  126. package/minecraft-data/data/pc/common/protocolVersions.json +9 -1
  127. package/minecraft-data/data/pc/latest/proto.yml +427 -572
  128. package/minecraft-data/doc/history.md +6 -0
  129. package/minecraft-data/doc/protocol.md +6 -4
  130. package/package.json +1 -1
  131. package/test/load.js +8 -0
@@ -34,12 +34,7 @@
34
34
  registryEntryHolder: native
35
35
  registryEntryHolderSet: native
36
36
  ByteArray: ["buffer", { "countType": "varint" }]
37
- string: [
38
- "pstring",
39
- {
40
- "countType": "varint"
41
- }
42
- ]
37
+ string: ["pstring", { "countType": "varint" }]
43
38
  vec2f:
44
39
  x: f32
45
40
  y: f32
@@ -61,136 +56,77 @@
61
56
  "otherwise": { name: "ids", type: "varint" }
62
57
  }]
63
58
  ContainerID: varint
64
- SoundEvent:
65
- soundName: string
66
- fixedRange?: f32
67
- RecipeDisplay:
68
- type: varint =>
69
- - crafting_shapeless
70
- - crafting_shaped
71
- - furnace
72
- - stonecutter
73
- - smithing
74
- data: type ?
75
- if crafting_shapeless:
76
- ingredients: SlotDisplay[]varint
77
- result: SlotDisplay
78
- craftingStation: SlotDisplay
79
- if crafting_shaped:
80
- width: varint
81
- height: varint
82
- ingredients: SlotDisplay[]varint
83
- result: SlotDisplay
84
- craftingStation: SlotDisplay
85
- if furnace:
86
- ingredient: SlotDisplay
87
- fuel: SlotDisplay
88
- result: SlotDisplay
89
- craftingStation: SlotDisplay
90
- duration: varint
91
- experience: f32
92
- if stonecutter:
93
- ingredient: SlotDisplay
94
- result: SlotDisplay
95
- craftingStation: SlotDisplay
96
- if smithing:
97
- template: SlotDisplay
98
- base: SlotDisplay
99
- addition: SlotDisplay
100
- result: SlotDisplay
101
- craftingStation: SlotDisplay
102
- SlotDisplay:
103
- type: varint =>
104
- - empty
105
- - any_fuel
106
- - item
107
- - item_stack
108
- - tag
109
- - smithing_trim
110
- - with_remainder
111
- - composite
112
- data: type ?
113
- if empty or any_fuel: void
114
- if item: varint
115
- if item_stack: Slot
116
- if tag: string
117
- if simthing_trim:
118
- base: SlotDisplay
119
- material: SlotDisplay
120
- pattern: SlotDisplay
121
- if with_remainder:
122
- input: SlotDisplay
123
- remainder: SlotDisplay
124
- if composite: SlotDisplay[]varint
125
59
  SlotComponentType: varint =>
126
- - custom_data
127
- - max_stack_size
128
- - max_damage
129
- - damage
130
- - unbreakable
131
- - custom_name
132
- - item_name
133
- - item_model
134
- - lore
135
- - rarity
136
- - enchantments
137
- - can_place_on
138
- - can_break
139
- - attribute_modifiers
140
- - custom_model_data
141
- - hide_additional_tooltip
142
- - hide_tooltip
143
- - repair_cost
144
- - creative_slot_lock
145
- - enchantment_glint_override
146
- - intangible_projectile
147
- - food
148
- - consumable
149
- - use_remainder
150
- - use_cooldown
151
- - damage_resistant
152
- - tool
153
- - enchantable
154
- - equippable
155
- - repairable
156
- - glider
157
- - tooltip_style
158
- - death_protection
159
- - stored_enchantments
160
- - dyed_color
161
- - map_color
162
- - map_id
163
- - map_decorations
164
- - map_post_processing
165
- - charged_projectiles
166
- - bundle_contents
167
- - potion_contents
168
- - suspicious_stew_effects
169
- - writable_book_content
170
- - written_book_content
171
- - trim
172
- - debug_stick_state
173
- - entity_data
174
- - bucket_entity_data
175
- - block_entity_data
176
- - instrument
177
- - ominous_bottle_amplifier
178
- - jukebox_playable
179
- - recipes
180
- - lodestone_tracker
181
- - firework_explosion
182
- - fireworks
183
- - profile
184
- - note_block_sound
185
- - banner_patterns
186
- - base_color
187
- - pot_decorations
188
- - container
189
- - block_state
190
- - bees
191
- - lock
192
- - container_loot
60
+ - custom_data
61
+ - max_stack_size
62
+ - max_damage
63
+ - damage
64
+ - unbreakable
65
+ - custom_name
66
+ - item_name
67
+ - item_model
68
+ - lore
69
+ - rarity
70
+ - enchantments
71
+ - can_place_on
72
+ - can_break
73
+ - attribute_modifiers
74
+ - custom_model_data
75
+ - hide_additional_tooltip
76
+ - hide_tooltip
77
+ - repair_cost
78
+ - creative_slot_lock
79
+ - enchantment_glint_override
80
+ - intangible_projectile
81
+ - food
82
+ - consumable
83
+ - use_remainder
84
+ - use_cooldown
85
+ - damage_resistant
86
+ - tool
87
+ - enchantable
88
+ - equippable
89
+ - repairable
90
+ - glider
91
+ - tooltip_style
92
+ - death_protection
93
+ - stored_enchantments
94
+ - dyed_color
95
+ - map_color
96
+ - map_id
97
+ - map_decorations
98
+ - map_post_processing
99
+ - charged_projectiles
100
+ - bundle_contents
101
+ - potion_contents
102
+ - suspicious_stew_effects
103
+ - writable_book_content
104
+ - written_book_content
105
+ - trim
106
+ - debug_stick_state
107
+ - entity_data
108
+ - bucket_entity_data
109
+ - block_entity_data
110
+ - instrument
111
+ - ominous_bottle_amplifier
112
+ - jukebox_playable
113
+ - recipes
114
+ - lodestone_tracker
115
+ - firework_explosion
116
+ - fireworks
117
+ - profile
118
+ - note_block_sound
119
+ - banner_patterns
120
+ - base_color
121
+ - pot_decorations
122
+ - container
123
+ - block_state
124
+ - bees
125
+ - lock
126
+ - container_loot
193
127
 
128
+ # Instead of sending NBT for items over the network, Minecraft since 1.20.5 sends a
129
+ # list of components that make up the item. This saves bandwidth by not encoding tag names.
194
130
  SlotComponent:
195
131
  type: SlotComponentType
196
132
  ## Ref: client/net/minecraft/core/component/DataComponents.java
@@ -216,7 +152,7 @@
216
152
  level: varint
217
153
  showTooltip: bool
218
154
  if can_place_on or can_break:
219
- predicates: BlockPredicate[]varint
155
+ predicates: ItemBlockPredicate[]varint
220
156
  showTooltip: bool
221
157
  if attribute_modifiers:
222
158
  attributes: []varint
@@ -239,13 +175,17 @@
239
175
  - armor
240
176
  - body
241
177
  showTooltip: bool
242
- if custom_model_data: varint
178
+ if custom_model_data:
179
+ floats: f32[]varint
180
+ flags: bool[]varint
181
+ strings: string[]varint
182
+ colors: i32[]varint
243
183
  if hide_additional_tooltip: void
244
184
  if hide_tooltip: void
245
185
  if repair_cost: varint
246
186
  if creative_slot_lock: void
247
187
  if enchantment_glint_override: bool
248
- if intangible_projectile: void
188
+ if intangible_projectile: anonymousNbt
249
189
  if food:
250
190
  nutrition: varint
251
191
  # How much saturation will be given after consuming the item.
@@ -265,12 +205,9 @@
265
205
  - spyglass
266
206
  - toot_horn
267
207
  - brush
268
- sound: ["registryEntryHolder", {
269
- "baseName": "soundId",
270
- "otherwise": { name: "data", type: "SoundEvent" }
271
- }]
208
+ sound: ItemSoundHolder
272
209
  makes_particles: bool
273
- effects: ConsumeEffect[]varint
210
+ effects: ItemConsumeEffect[]varint
274
211
  if use_remainder: Slot
275
212
  if use_cooldown:
276
213
  seconds: f32
@@ -297,10 +234,7 @@
297
234
  - chest
298
235
  - head
299
236
  - body
300
- sound: ["registryEntryHolder", {
301
- "baseName": "soundId",
302
- "otherwise": { name: "data", type: "SoundEvent" }
303
- }]
237
+ sound: ItemSoundHolder
304
238
  model?: string
305
239
  cameraOverlay?: string
306
240
  allowedEntities?: IDSet
@@ -309,9 +243,10 @@
309
243
  damageable: bool
310
244
  if repairable:
311
245
  items: IDSet
246
+ if glider: void
312
247
  if tooltip_style: string
313
248
  if death_protection:
314
- effects: ConsumeEffect[]varint
249
+ effects: ItemConsumeEffect[]varint
315
250
  if stored_enchantments:
316
251
  enchantments: []varint
317
252
  # The ID of the enchantment in the enchantment registry.
@@ -320,11 +255,11 @@
320
255
  # Whether the list of enchantments should be shown on the item's tooltip.
321
256
  showInTooltip: bool
322
257
  if dyed_color:
323
- color: varint
258
+ color: i32
324
259
  showTooltip: bool
325
- if map_color: varint
260
+ if map_color: i32
326
261
  if map_id: varint
327
- if map_decorations: anonOptionalNbt
262
+ if map_decorations: anonymousNbt
328
263
  if map_post_processing: varint
329
264
  if charged_projectiles:
330
265
  projectiles: Slot[]varint
@@ -334,220 +269,77 @@
334
269
  # True if this potion has an ID in the potion registry--it has the default effects associated with the potion type.
335
270
  potionId?: varint
336
271
  # The RGB components of the color, encoded as an integer.
337
- customColor?: varint
338
- customEffects: PotionEffect[]varint
339
- customName: string
340
- # Name Type Description
341
- # Number Of Effects VarInt Number of elements in the following array.
342
- # Effect Type ID Array VarInt Enum The ID of the effect in the potion effect type registry.
343
- # Duration VarInt The duration of the effect.
272
+ customColor?: i32
273
+ customEffects: ItemPotionEffect[]varint
274
+ customName?: string
344
275
  if suspicious_stew_effects:
345
276
  effects: []varint
277
+ # The ID of the effect in the potion effect type registry.
346
278
  effect: varint
279
+ # The duration of the effect.
347
280
  duration: varint
348
- # Name Type Description
349
- # Number Of Pages VarInt Number of elements in the following array.
350
- # Page Raw Content Array (100) String (1024) The raw text of the page.
351
- # Has Filtered Content Boolean
352
- # Filtered Content Optional String (1024) The content after passing through chat filters. Only present if Has Filtered Content is true.
353
281
  if writable_book_content:
354
- pages: BookPage[]varint
355
- # Name Type Description
356
- # Raw Title String (32) The raw title of the book.
357
- # Has Filtered Title Boolean
358
- # Filtered Title Optional String (32) The title after going through chat filters. Only present if Has Filtered Title is true.
359
- # Author String
360
- # Generation VarInt
361
- # Number Of Pages VarInt Number of elements in the following array.
362
- # Page Raw Content Array (100) TextComponent (1024) The raw text of the page.
363
- # Has Filtered Content Boolean
364
- # Filtered Content Optional Text Component (1024) The content after passing through chat filters. Only present if Has Filtered Content is true.
365
- # Resolved Boolean Whether entity selectors have already been resolved.
282
+ # Max 100 pages
283
+ pages: ItemBookPage[]varint
366
284
  if written_book_content:
367
285
  rawTitle: string
368
286
  filteredTitle?: string
369
287
  author: string
370
288
  generation: varint
371
- pages: BookPage[]varint
372
- # Whether entity selectors have already been resolved.
289
+ pages: ItemWrittenBookPage[]varint
373
290
  resolved: bool
374
- # Name Type Description
375
- # Trim Material Type VarInt Identifier used to determine the data that follows. It can be either:
376
- # 0 - Directly represents a trim material, with the necessary data following.
377
- # Anything else - References a trim material in its registry, by the ID of Trim Material Type - 1.
378
- # Asset Name Optional String See Armor Trim Material Registry. Only present if Trim Material Type is 0.
379
- # Ingredient Optional VarInt See Armor Trim Material Registry. Only present if Trim Material Type is 0.
380
- # Item Model Index Optional Float See Armor Trim Material Registry. Only present if Trim Material Type is 0.
381
- # Number of Overrides Optional VarInt See Armor Trim Material Registry. Only present if Trim Material Type is 0.
382
- # Override Armor Material Type Optional Array VarInt Enum See Armor Trim Material Registry. Only present if Trim Material Type is 0.
383
- # Overriden Asset Name String See Armor Trim Material Registry. Only present if Trim Material Type is 0.
384
- # Description Optional Text Component See Armor Trim Material Registry. Only present if Trim Material Type is 0.
385
- # Trim Pattern Type VarInt Identifier used to determine the data that follows. It can be either:
386
- # 0 - Directly represents a trim pattern, with the necessary data following.
387
- # Anything else - References a trim pattern in its registry, by the ID of Trim Pattern Type - 1.
388
- # Asset Name Optional String See Armor Trim Pattern Registry. Only present if Trim Pattern Type is 0.
389
- # Template Item Optional VarInt See Armor Trim Pattern Registry. Only present if Trim Pattern Type is 0.
390
- # Description Optional Text Component See Armor Trim Pattern Registry. Only present if Trim Pattern Type is 0.
391
- # Decal Optional Boolean See Armor Trim Pattern Registry. Only present if Trim Pattern Type is 0.
392
- # Show In Tooltip Boolean Whether the trim information should be shown on the item's tooltip.
393
291
  if trim:
394
- # Identifier used to determine the data that follows. It can be either:
395
- # 0 - Directly represents a trim material, with the necessary data following.
396
- # Anything else - References a trim material in its registry, by the ID of Trim Material Type - 1.
397
- materialType: varint
398
- _: materialType ?
399
- if 0:
400
- assetName: string
401
- ingredientId: varint
402
- itemModelIndex: f32
403
- numberOfOverrides: optvarint
404
- override: []varint
405
- armorMaterialType: varint
406
- overridenAssetName: string
407
- description: string
408
- trimPatternType: varint
409
- _: trimPatternType ?
410
- if 0:
411
- assetName: string
412
- templateItem: varint
413
- description: string
414
- decal: bool
292
+ material: ["registryEntryHolder", { "baseName": "materialId", "otherwise": { "name": "data", "type": "ArmorTrimMaterial" } }]
293
+ pattern: ["registryEntryHolder", { "baseName": "patternId", "otherwise": { "name": "data", "type": "ArmorTrimPattern" } }]
415
294
  showInTooltip: bool
416
295
  if debug_stick_state: anonymousNbt
417
296
  if entity_data: anonymousNbt
418
297
  if bucket_entity_data: anonymousNbt
419
298
  if block_entity_data: anonymousNbt
420
- # Name Type Description
421
- # Instrument Type VarInt Identifier used to determine the data that follows. It can be either:
422
- # 0 - Directly represents an instrument, with the necessary data following.
423
- # Anything else - References an instrument in its registry, by the ID of Instrument Type - 1.
424
- # Sound Event Optional Sound Event The sound to be played. Only present if Instrument Type is 0.
425
- # Use duration Optional Float The maximum range of the sound. Only present if Instrument Type is 0.
426
- # Range Optional Float The range of the instrument. Only present if Instrument Type is 0.
427
- if instrument:
428
- instrumentType: varint
429
- _: instrumentType ?
430
- if 0:
431
- soundEvent: string
432
- useDuration: f32
433
- range: f32
299
+ if instrument: ["registryEntryHolder", { "baseName": "instrumentId", "otherwise": { "name": "data", "type": "InstrumentData" } }]
434
300
  if ominous_bottle_amplifier: varint
435
- # Name Type Description
436
- # Direct Mode Boolean Whether the jukebox song is specified directly, or just referenced by name.
437
- # Jukebox Song Name Optional Identifier The name of the jukebox song in its respective registry. Only present if Direct Mode is false.
438
- # Jukebox Song Type Optional VarInt Identifier used to determine the data that follows. It can be either:
439
- # 0 - Directly represents a jukebox song, with the necessary data following.
440
- # Anything else - References a jukebox song in its registry, by the ID of Jukebox Song Type - 1.
441
- # Only present if Direct Mode is true.
442
- # Sound Event Optional Sound Event The sound to be played. Only present if Direct Mode is true and Jukebox Song Type is 0.
443
- # Description Optional Text Component The description shown in the item lore. Only present if Direct Mode is true and Jukebox Song Type is 0.
444
- # 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.
445
- # 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.
446
- # Show In Tooltip Boolean Whether the song should be shown on the item's tooltip.
447
301
  if jukebox_playable:
448
- directMode: bool
449
- _: directMode ?
450
- if true:
451
- jukeboxSongName: string
452
- jukeboxSongType: varint
453
- _: jukeboxSongType ?
454
- if 0:
455
- soundEvent:
456
- soundEventType: varint
457
- _: soundEventType ?
458
- if 0:
459
- soundName: string
460
- fixedRange?: f32
461
- description: anonymousNbt
462
- duration: f32
463
- output: varint
464
- if false:
465
- songLocation: string
302
+ hasHolder: bool
303
+ song: hasHolder ?
304
+ if true: ["registryEntryHolder", { "baseName": "songId", "otherwise": { "name": "data", "type": "JukeboxSongData" } }]
305
+ if false: string
466
306
  showInTooltip: bool
467
307
  if recipes: anonymousNbt
468
- # Name Type Description
469
- # Has Global Position Boolean Whether this lodestone points to a position, otherwise it spins randomly.
470
- # Dimension Identifier The dimension the compass points to. Only present if Has Global Position is true.
471
- # Position Position The position the compass points to. Only present if Has Global Position is true.
472
- # Tracked Boolean Whether the component is removed when the associated lodestone is broken.
473
308
  if lodestone_tracker:
309
+ # Specified if this lodestone points to a position; otherwise it spins randomly.
474
310
  globalPosition?:
475
311
  dimension: string
312
+ # The position the compass points to. Only present if Has Global Position is true.
476
313
  position: position
314
+ # Whether the component is removed when the associated lodestone is broken.
477
315
  tracked: bool
478
- # Name Type Description
479
- # Shape VarInt Enum Can be one of the following:
480
- # 0 - Small ball
481
- # 1 - Large ball
482
- # 2 - Star
483
- # 3 - Creeper
484
- # 4 - Burst
485
- # Number Of Colors VarInt The number of elements in the following array.
486
- # Colors Array of Int The RGB components of the color, encoded as an integer.
487
- # Number Of Fade Colors VarInt The number of elements in the following array.
488
- # Fade Colors Array of Int The RGB components of the color, encoded as an integer.
489
- # Has Trail Boolean
490
- # Has Twinkle Boolean
491
- if firework_explosion: FireworkExplosion
316
+ if firework_explosion: ItemFireworkExplosion
492
317
  if fireworks:
493
318
  flightDuration: varint
494
- explosions: FireworkExplosion[]varint
495
- # Name Type Description
496
- # Has Name Boolean
497
- # Name Optional String (16) Only present if Has Name is true.
498
- # Has Unique ID Boolean
499
- # Unique ID Optional UUID Only present if Has Unique ID is true.
500
- # Number of Properties VarInt Number of elements in the following array.
501
- # Property Name Array String (64)
502
- # Value String
503
- # Has Signature Boolean
504
- # Signature String (1024) Only present if Has Signature is true.
319
+ explosions: ItemFireworkExplosion[]varint
505
320
  if profile:
506
- hasName: bool
507
- name: string
508
- hasUniqueId: bool
509
- uniqueId: UUID
321
+ # If the profile has a name, max 16 characters.
322
+ name?: string
323
+ uuid?: UUID
510
324
  properties: []varint
511
- property: string
325
+ # Max 64 characters
326
+ name: string
512
327
  value: string
513
- hasSignature: bool
514
- signature: string
328
+ # Max 1024 characters
329
+ signature?: string
515
330
  if note_block_sound: string
516
- # Name Type Description
517
- # Number of Layers VarInt Number of elements in the following array.
518
- # Layer Pattern Type Array VarInt Identifier used to determine the data that follows. It can be either:
519
- # 0 - Directly represents a pattern, with the necessary data following.
520
- # Anything else - References a pattern in its registry, by the ID of Pattern Type - 1.
521
- # Asset ID Optional Identifier Identifier of the asset. Only present if Pattern Type is 0.
522
- # Translation Key Optional String Only present if Pattern Type is 0.
523
- # Color Dye Color See Dye Color.
524
331
  if banner_patterns:
525
- layers: []varint
526
- patternType: varint
527
- _: patternType ?
528
- if 0:
529
- assetId: string
530
- translationKey: string
531
- color: varint
332
+ layers: BannerPatternLayer[]varint
532
333
  if base_color: varint
533
334
  if pot_decorations:
534
335
  # The ID of the items in the item registry.
535
336
  decorations: varint[]varint
536
337
  if container:
537
338
  contents: Slot[]varint
538
- # Name Type Description
539
- # Number of Properties VarInt Number of elements in the following array.
540
- # Property Name Array String
541
- # Value String
542
339
  if block_state:
543
340
  properties: []varint
544
- property: string
341
+ name: string
545
342
  value: string
546
- # Name Type Description
547
- # Number of Bees VarInt Number of elements in the following array.
548
- # Bee Entity Data Array NBT
549
- # Ticks In Hive VarInt
550
- # Min Ticks In Hive VarInt
551
343
  if bees:
552
344
  bees: []varint
553
345
  # Custom data for the entity, always a Compound Tag. Same structure as the minecraft:custom_data component.
@@ -557,48 +349,70 @@
557
349
  if lock: anonymousNbt
558
350
  if container_loot: anonymousNbt
559
351
 
560
- Slot:
561
- itemCount: varint
562
- _: itemCount ?
563
- if 0: void
564
- default:
565
- itemId: varint
566
- # https://wiki.vg/Slot_Data#Structured_components
567
- addedComponentCount: varint
568
- removedComponentCount: varint
569
- components: SlotComponent[]$addedComponentCount
570
- removeComponents: []$removedComponentCount
571
- type: SlotComponentType
352
+ ItemSoundEvent:
353
+ soundName: string
354
+ fixedRange?: f32
355
+ ItemSoundHolder: ["registryEntryHolder", {
356
+ "baseName": "soundId",
357
+ "otherwise": { name: "data", type: "ItemSoundEvent" }
358
+ }]
572
359
 
573
- FireworkExplosion:
360
+ ItemFireworkExplosion:
574
361
  shape: varint =>
575
- - small_ball
576
- - large_ball
577
- - star
578
- - creeper
579
- - burst
362
+ - small_ball
363
+ - large_ball
364
+ - star
365
+ - creeper
366
+ - burst
367
+ # The RGB components of the color, encoded as an integer.
580
368
  colors: i32[]varint
369
+ # The RGB components of the color, encoded as an integer.
581
370
  fadeColors: i32[]varint
371
+ # Whether the firework has a trail.
582
372
  hasTrail: bool
373
+ # Whether the firework has a twinkle effect.
583
374
  hasTwinkle: bool
584
375
 
585
- BookPage:
586
- content: string
587
- filteredContent?: string
588
-
589
- EffectDetail:
376
+ ItemEffectDetail:
590
377
  amplifier: varint
591
378
  duration: varint
592
379
  ambient: bool
593
380
  showParticles: bool
594
381
  showIcon: bool
595
- hiddenEffect?: EffectDetail
382
+ hiddenEffect?: ItemEffectDetail
596
383
 
597
- PotionEffect:
384
+ ItemPotionEffect:
598
385
  id: varint
599
- details: EffectDetail
386
+ details: ItemEffectDetail
600
387
 
601
- ConsumeEffect:
388
+ ItemBlockProperty:
389
+ name: string
390
+ isExactMatch: bool
391
+ value: isExactMatch ?
392
+ if true:
393
+ exactValue: string
394
+ if false:
395
+ minValue: string
396
+ maxValue: string
397
+
398
+
399
+ ItemBlockPredicate:
400
+ blockSet?: ["registryEntryHolderSet", {
401
+ "base": { name: "name", type: "string" },
402
+ "otherwise": { name: "blockIds", type: "varint" }
403
+ }]
404
+ properties?: ItemBlockProperty[]varint
405
+ nbt: anonOptionalNbt
406
+
407
+ ItemBookPage:
408
+ # The raw text of the page. TextComponent, max 1024 characters.
409
+ content: string
410
+ filteredContent?: string
411
+ ItemWrittenBookPage:
412
+ content: anonymousNbt
413
+ filteredContent: anonOptionalNbt
414
+
415
+ ItemConsumeEffect: # 1.21.3
602
416
  type: varint =>
603
417
  - apply_effects
604
418
  - remove_effects
@@ -607,7 +421,7 @@
607
421
  - play_sound
608
422
  _: type ?
609
423
  if apply_effects:
610
- effects: PotionEffect[]varint
424
+ effects: ItemPotionEffect[]varint
611
425
  probability: f32
612
426
  if remove_effects:
613
427
  effects: IDSet
@@ -615,146 +429,169 @@
615
429
  if teleport_randomly:
616
430
  diameter: f32
617
431
  if play_sound:
618
- sound: ["registryEntryHolder", {
619
- "baseName": "soundId",
620
- "otherwise": { name: "data", type: "SoundEvent" }
621
- }]
432
+ sound: ItemSoundHolder
622
433
 
623
- BlockProperty:
624
- # Name of the block state property.
625
- name: string
626
- # Whether this is an exact value match, as opposed to ranged.
627
- isExactMatch: bool
628
- # Value of the block state property. Only present in exact match mode.
629
- exactValue?: string
630
- # Minimum value of the block state property range. Only present in ranged match mode.
631
- minValue?: string
632
- # Maximum value of the block state property range. Only present in ranged match mode.
633
- maxValue?: string
434
+ ArmorTrimMaterial:
435
+ assetName: string
436
+ ingredientId: varint
437
+ overrideArmorAssets: []varint
438
+ key: string
439
+ value: string
440
+ description: anonymousNbt
634
441
 
635
- BlockPredicate:
636
- blockSet?: ["registryEntryHolderSet", {
637
- "base": { name: "name", type: "string" },
638
- "otherwise": { name: "blockIds", type: "varint" }
639
- }]
640
- properties?: BlockProperty[]varint
641
- nbt: anonOptionalNbt
442
+ ArmorTrimPattern:
443
+ assetId: string
444
+ templateItemId: varint
445
+ description: anonymousNbt
446
+ decal: bool
447
+
448
+ InstrumentData:
449
+ soundEvent: ItemSoundHolder
450
+ useDuration: f32
451
+ range: f32
452
+ description: anonymousNbt
453
+
454
+ JukeboxSongData:
455
+ soundEvent: ItemSoundHolder
456
+ description: anonymousNbt
457
+ lengthInSeconds: f32
458
+ comparatorOutput: varint
459
+
460
+ BannerPattern:
461
+ assetId: string
462
+ translationKey: string
463
+ BannerPatternLayer:
464
+ pattern: ["registryEntryHolder", { "baseName": "patternId", "otherwise": { "name": "data", "type": "BannerPattern" } }]
465
+ colorId: varint
466
+
467
+ Slot:
468
+ itemCount: varint
469
+ _: itemCount ?
470
+ if 0: void
471
+ default:
472
+ itemId: varint
473
+ # https://wiki.vg/Slot_Data#Structured_components
474
+ addedComponentCount: varint
475
+ removedComponentCount: varint
476
+ components: SlotComponent[]$addedComponentCount
477
+ removeComponents: []$removedComponentCount
478
+ type: SlotComponentType
642
479
 
643
480
  Particle:
644
481
  # See client/net/minecraft/core/particles/ParticleTypes.java
645
482
  type: varint =>
646
- - angry_villager
647
- - block
648
- - block_marker
649
- - bubble
650
- - cloud
651
- - crit
652
- - damage_indicator
653
- - dragon_breath
654
- - dripping_lava
655
- - falling_lava
656
- - landing_lava
657
- - dripping_water
658
- - falling_water
659
- - dust
660
- - dust_color_transition
661
- - effect
662
- - elder_guardian
663
- - enchanted_hit
664
- - enchant
665
- - end_rod
666
- - entity_effect
667
- - explosion_emitter
668
- - explosion
669
- - gust
670
- - small_gust
671
- - gust_emitter_large
672
- - gust_emitter_small
673
- - sonic_boom
674
- - falling_dust
675
- - firework
676
- - fishing
677
- - flame
678
- - infested
679
- - cherry_leaves
680
- - pale_oak_leaves
681
- - sculk_soul
682
- - sculk_charge
683
- - sculk_charge_pop
684
- - soul_fire_flame
685
- - soul
686
- - flash
687
- - happy_villager
688
- - composter
689
- - heart
690
- - instant_effect
691
- - item
692
- - vibration
693
- - trail
694
- - item_slime
695
- - item_cobweb
696
- - item_snowball
697
- - large_smoke
698
- - lava
699
- - mycelium
700
- - note
701
- - poof
702
- - portal
703
- - rain
704
- - smoke
705
- - white_smoke
706
- - sneeze
707
- - spit
708
- - squid_ink
709
- - sweep_attack
710
- - totem_of_undying
711
- - underwater
712
- - splash
713
- - witch
714
- - bubble_pop
715
- - current_down
716
- - bubble_column_up
717
- - nautilus
718
- - dolphin
719
- - campfire_cosy_smoke
720
- - campfire_signal_smoke
721
- - dripping_honey
722
- - falling_honey
723
- - landing_honey
724
- - falling_nectar
725
- - falling_spore_blossom
726
- - ash
727
- - crimson_spore
728
- - warped_spore
729
- - spore_blossom_air
730
- - dripping_obsidian_tear
731
- - falling_obsidian_tear
732
- - landing_obsidian_tear
733
- - reverse_portal
734
- - white_ash
735
- - small_flame
736
- - snowflake
737
- - dripping_dripstone_lava
738
- - falling_dripstone_lava
739
- - dripping_dripstone_water
740
- - falling_dripstone_water
741
- - glow_squid_ink
742
- - glow
743
- - wax_on
744
- - wax_off
745
- - electric_spark
746
- - scrape
747
- - shriek
748
- - egg_crack
749
- - dust_plume
750
- - trial_spawner_detected_player
751
- - trial_spawner_detected_player_ominous
752
- - vault_connection
753
- - dust_pillar
754
- - ominous_spawning
755
- - raid_omen
756
- - trial_omen
757
- - block_crumble
483
+ - angry_villager
484
+ - block
485
+ - block_marker
486
+ - bubble
487
+ - cloud
488
+ - crit
489
+ - damage_indicator
490
+ - dragon_breath
491
+ - dripping_lava
492
+ - falling_lava
493
+ - landing_lava
494
+ - dripping_water
495
+ - falling_water
496
+ - dust
497
+ - dust_color_transition
498
+ - effect
499
+ - elder_guardian
500
+ - enchanted_hit
501
+ - enchant
502
+ - end_rod
503
+ - entity_effect
504
+ - explosion_emitter
505
+ - explosion
506
+ - gust
507
+ - small_gust
508
+ - gust_emitter_large
509
+ - gust_emitter_small
510
+ - sonic_boom
511
+ - falling_dust
512
+ - firework
513
+ - fishing
514
+ - flame
515
+ - infested
516
+ - cherry_leaves
517
+ - pale_oak_leaves
518
+ - sculk_soul
519
+ - sculk_charge
520
+ - sculk_charge_pop
521
+ - soul_fire_flame
522
+ - soul
523
+ - flash
524
+ - happy_villager
525
+ - composter
526
+ - heart
527
+ - instant_effect
528
+ - item
529
+ - vibration
530
+ - trail
531
+ - item_slime
532
+ - item_cobweb
533
+ - item_snowball
534
+ - large_smoke
535
+ - lava
536
+ - mycelium
537
+ - note
538
+ - poof
539
+ - portal
540
+ - rain
541
+ - smoke
542
+ - white_smoke
543
+ - sneeze
544
+ - spit
545
+ - squid_ink
546
+ - sweep_attack
547
+ - totem_of_undying
548
+ - underwater
549
+ - splash
550
+ - witch
551
+ - bubble_pop
552
+ - current_down
553
+ - bubble_column_up
554
+ - nautilus
555
+ - dolphin
556
+ - campfire_cosy_smoke
557
+ - campfire_signal_smoke
558
+ - dripping_honey
559
+ - falling_honey
560
+ - landing_honey
561
+ - falling_nectar
562
+ - falling_spore_blossom
563
+ - ash
564
+ - crimson_spore
565
+ - warped_spore
566
+ - spore_blossom_air
567
+ - dripping_obsidian_tear
568
+ - falling_obsidian_tear
569
+ - landing_obsidian_tear
570
+ - reverse_portal
571
+ - white_ash
572
+ - small_flame
573
+ - snowflake
574
+ - dripping_dripstone_lava
575
+ - falling_dripstone_lava
576
+ - dripping_dripstone_water
577
+ - falling_dripstone_water
578
+ - glow_squid_ink
579
+ - glow
580
+ - wax_on
581
+ - wax_off
582
+ - electric_spark
583
+ - scrape
584
+ - shriek
585
+ - egg_crack
586
+ - dust_plume
587
+ - trial_spawner_detected_player
588
+ - trial_spawner_detected_player_ominous
589
+ - vault_connection
590
+ - dust_pillar
591
+ - ominous_spawning
592
+ - raid_omen
593
+ - trial_omen
594
+ - block_crumble
758
595
  ## ## Tips for reviewing particle data (as of 1.20.5)
759
596
  ## Inside the registry code, each particle can have an associated "options" type and
760
597
  ## each options type can add additional data to be encoded.
@@ -789,14 +626,14 @@
789
626
  if sculk_charge: f32
790
627
  if shriek: varint
791
628
  if vibration:
792
- position_type: varint =>
629
+ positionType: varint =>
793
630
  - block
794
631
  - entity
795
- position: position_type ?
632
+ position: positionType ?
796
633
  if block: position
797
634
  if entity:
798
635
  entityId: varint
799
- entity_eye_height: f32
636
+ entityEyeHeight: f32
800
637
  ticks: varint
801
638
  if trail:
802
639
  target: vec3f64
@@ -978,7 +815,7 @@
978
815
  game_profile:
979
816
  name: string
980
817
  properties: []varint
981
- key: string
818
+ name: string
982
819
  value: string
983
820
  signature?: string
984
821
  command_node:
@@ -1278,6 +1115,20 @@
1278
1115
  # These are packets that are shared between multiple states.
1279
1116
  # They are defined here to avoid duplication.
1280
1117
  # =====
1118
+ # MC: ServerboundClientInformationPacket
1119
+ packet_common_settings:
1120
+ locale: string
1121
+ viewDistance: i8
1122
+ chatFlags: varint
1123
+ chatColors: bool
1124
+ skinParts: u8
1125
+ mainHand: varint
1126
+ enableTextFiltering: bool
1127
+ enableServerListing: bool
1128
+ particleStatus: varint =>
1129
+ - all
1130
+ - decreased
1131
+ - minimal
1281
1132
  # MC: ClientboundCookieRequestPacket
1282
1133
  packet_common_cookie_request:
1283
1134
  cookie: string
@@ -1317,16 +1168,16 @@
1317
1168
  promptMessage?: anonymousNbt
1318
1169
 
1319
1170
  ServerLinkType: varint =>
1320
- - bug_report
1321
- - community_guidelines
1322
- - support
1323
- - status
1324
- - feedback
1325
- - community
1326
- - website
1327
- - forums
1328
- - news
1329
- - announcements
1171
+ - bug_report
1172
+ - community_guidelines
1173
+ - support
1174
+ - status
1175
+ - feedback
1176
+ - community
1177
+ - website
1178
+ - forums
1179
+ - news
1180
+ - announcements
1330
1181
  # MC: ClientboundServerLinksPacket
1331
1182
  # This packet contains a list of links that the Notchian client will display in the menu
1332
1183
  # available from the pause menu. Link labels can be built-in or custom (i.e., any text).
@@ -1554,17 +1405,7 @@
1554
1405
  if custom_report_details: packet_common_custom_report_details
1555
1406
  if server_links: packet_common_server_links
1556
1407
  ^configuration.toServer.types:
1557
- # MC: ServerboundClientInformationPacket
1558
- packet_settings:
1559
- locale: string
1560
- viewDistance: i8
1561
- chatFlags: varint
1562
- chatColors: bool
1563
- skinParts: u8
1564
- mainHand: varint
1565
- enableTextFiltering: bool
1566
- enableServerListing: bool
1567
- particles: varint
1408
+ ## (Settings is Common) ##
1568
1409
  ## (Cookie Response is Common) ##
1569
1410
  # MC: ServerboundCustomPayloadPacket
1570
1411
  packet_custom_payload:
@@ -1596,7 +1437,7 @@
1596
1437
  - custom_report_details
1597
1438
  - server_links
1598
1439
  params: name ?
1599
- if settings: packet_settings
1440
+ if settings: packet_common_settings
1600
1441
  if cookie_response: packet_common_cookie_response
1601
1442
  if custom_payload: packet_custom_payload
1602
1443
  if finish_configuration: packet_finish_configuration
@@ -1607,7 +1448,64 @@
1607
1448
  if custom_report_details: packet_common_custom_report_details
1608
1449
  if server_links: packet_common_server_links
1609
1450
  ^play.toClient.types:
1610
- # World state information for spawn and respawn packets
1451
+ SlotDisplay:
1452
+ type: varint =>
1453
+ - empty
1454
+ - any_fuel
1455
+ - item
1456
+ - item_stack
1457
+ - tag
1458
+ - smithing_trim
1459
+ - with_remainder
1460
+ - composite
1461
+ data: type ?
1462
+ if empty or any_fuel: void
1463
+ if item: varint
1464
+ if item_stack: Slot
1465
+ if tag: string
1466
+ if simthing_trim:
1467
+ base: SlotDisplay
1468
+ material: SlotDisplay
1469
+ pattern: SlotDisplay
1470
+ if with_remainder:
1471
+ input: SlotDisplay
1472
+ remainder: SlotDisplay
1473
+ if composite: SlotDisplay[]varint
1474
+ RecipeDisplay:
1475
+ type: varint =>
1476
+ - crafting_shapeless
1477
+ - crafting_shaped
1478
+ - furnace
1479
+ - stonecutter
1480
+ - smithing
1481
+ data: type ?
1482
+ if crafting_shapeless:
1483
+ ingredients: SlotDisplay[]varint
1484
+ result: SlotDisplay
1485
+ craftingStation: SlotDisplay
1486
+ if crafting_shaped:
1487
+ width: varint
1488
+ height: varint
1489
+ ingredients: SlotDisplay[]varint
1490
+ result: SlotDisplay
1491
+ craftingStation: SlotDisplay
1492
+ if furnace:
1493
+ ingredient: SlotDisplay
1494
+ fuel: SlotDisplay
1495
+ result: SlotDisplay
1496
+ craftingStation: SlotDisplay
1497
+ duration: varint
1498
+ experience: f32
1499
+ if stonecutter:
1500
+ ingredient: SlotDisplay
1501
+ result: SlotDisplay
1502
+ craftingStation: SlotDisplay
1503
+ if smithing:
1504
+ template: SlotDisplay
1505
+ base: SlotDisplay
1506
+ addition: SlotDisplay
1507
+ result: SlotDisplay
1508
+ craftingStation: SlotDisplay
1611
1509
  # World state information for spawn and respawn packets
1612
1510
  SpawnInfo:
1613
1511
  dimension: varint
@@ -1807,18 +1705,14 @@
1807
1705
  parameters: ChatTypeParameterType[]varint
1808
1706
  style: anonymousNbt
1809
1707
  ChatTypes:
1810
- # 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
1811
- registryIndex: varint
1812
- _: registryIndex ?
1813
- if 0:
1814
- chat: ChatType
1815
- narration: ChatType
1816
- default: void
1708
+ chat: ChatType
1709
+ narration: ChatType
1710
+ ChatTypesHolder: ["registryEntryHolder", { "baseName": "chatType", "otherwise": { name: "data", type: "ChatTypes" } }]
1817
1711
 
1818
1712
  # MC: ClientboundDisguisedChatPacket
1819
1713
  packet_profileless_chat:
1820
1714
  message: anonymousNbt
1821
- type: ChatTypes
1715
+ type: ChatTypesHolder
1822
1716
  name: anonymousNbt
1823
1717
  target?: anonymousNbt
1824
1718
  # MC: ClientboundEntityEventPacket
@@ -1839,16 +1733,12 @@
1839
1733
  onGround: bool
1840
1734
  # MC: ClientboundExplodePacket
1841
1735
  packet_explosion:
1842
- center: vec3f
1736
+ x: f64
1737
+ y: f64
1738
+ z: f64
1843
1739
  playerKnockback?: vec3f
1844
1740
  explosionParticle: Particle
1845
- soundId: varint
1846
- _: soundId ?
1847
- if 0:
1848
- soundName: string
1849
- range?: f32
1850
- default:
1851
-
1741
+ sound: ItemSoundHolder
1852
1742
  # MC: ClientboundForgetLevelChunkPacket
1853
1743
  packet_unload_chunk:
1854
1744
  chunkZ: i32
@@ -2016,7 +1906,7 @@
2016
1906
  pitch: i8
2017
1907
  onGround: bool
2018
1908
  # MC: ClientboundMoveMinecartPacket
2019
- packet_move_minecart:
1909
+ packet_move_minecart: # 1.21.3
2020
1910
  entityId: varint
2021
1911
  steps: []varint
2022
1912
  position: vec3f
@@ -2083,7 +1973,7 @@
2083
1973
  filterTypeMask: filterType ?
2084
1974
  if 2: i64[]varint
2085
1975
  default: void
2086
- type: ChatTypes
1976
+ type: ChatTypesHolder
2087
1977
  networkName: anonymousNbt
2088
1978
  networkTargetName?: anonymousNbt
2089
1979
  # MC: ClientboundPlayerCombatEndPacket
@@ -2101,6 +1991,7 @@
2101
1991
  players: UUID[]varint
2102
1992
  # MC: ClientboundPlayerInfoUpdatePacket
2103
1993
  packet_player_info:
1994
+ ## ClientboundPlayerInfoUpdatePacket.java#L160
2104
1995
  action: ["bitflags", {
2105
1996
  "type": "u8",
2106
1997
  "flags": [
@@ -2111,7 +2002,7 @@
2111
2002
  "update_latency",
2112
2003
  "update_display_name",
2113
2004
  "update_hat",
2114
- "update_priority"
2005
+ "update_list_order"
2115
2006
  ]
2116
2007
  }]
2117
2008
  data: []varint
@@ -2132,9 +2023,9 @@
2132
2023
  if true: varint
2133
2024
  default: void
2134
2025
  displayName: ../action/update_display_name ?
2135
- if true: anonOptionalNbt
2026
+ if true: ["option", "anonymousNbt"]
2136
2027
  default: void
2137
- listPriority: ../action/update_priority ?
2028
+ listPriority: ../action/update_list_order ?
2138
2029
  if true: varint
2139
2030
  default: void
2140
2031
  showHat: ../action/update_hat ?
@@ -2160,19 +2051,6 @@
2160
2051
  "type": "u32",
2161
2052
  "flags": ["x", "y", "z", "yaw", "pitch", "dx", "dy", "dz", "yawDelta"]
2162
2053
  }]
2163
- # PositionUpdateRelatives: ["bitfield", [
2164
- # # unused bits on top
2165
- # { "name": "unused", "size": 23, "signed": false },
2166
- # { "name": "yawDelta", "size": 1, "signed": false },
2167
- # { "name": "dz", "size": 1, "signed": false },
2168
- # { "name": "dy", "size": 1, "signed": false },
2169
- # { "name": "dx", "size": 1, "signed": false },
2170
- # { "name": "pitch", "size": 1, "signed": false },
2171
- # { "name": "yaw", "size": 1, "signed": false },
2172
- # { "name": "z", "size": 1, "signed": false },
2173
- # { "name": "y", "size": 1, "signed": false },
2174
- # { "name": "x", "size": 1, "signed": false },
2175
- # ]]
2176
2054
  # MC: ClientboundPlayerPositionPacket
2177
2055
  packet_position:
2178
2056
  teleportId: varint
@@ -2243,6 +2121,7 @@
2243
2121
  packet_reset_score:
2244
2122
  entity_name: string
2245
2123
  objective_name?: string
2124
+ ## (remove_resource_pack is common)
2246
2125
  # MC: ClientboundRespawnPacket
2247
2126
  packet_respawn:
2248
2127
  worldState: SpawnInfo
@@ -2466,12 +2345,7 @@
2466
2345
  fadeOut: i32
2467
2346
  # MC: ClientboundSoundEntityPacket
2468
2347
  packet_entity_sound_effect:
2469
- soundId: varint
2470
- soundEvent: soundId ?
2471
- if 0:
2472
- resource: string
2473
- range?: f32
2474
- default: void
2348
+ sound: ItemSoundHolder
2475
2349
  soundCategory: soundSource
2476
2350
  entityId: varint
2477
2351
  volume: f32
@@ -2479,12 +2353,7 @@
2479
2353
  seed: i64
2480
2354
  # MC: ClientboundSoundPacket
2481
2355
  packet_sound_effect:
2482
- soundId: varint
2483
- soundEvent: soundId ?
2484
- if 0:
2485
- resource: string
2486
- range?: f32
2487
- default: void
2356
+ sound: ItemSoundHolder
2488
2357
  soundCategory: soundSource
2489
2358
  x: i32
2490
2359
  y: i32
@@ -2980,20 +2849,6 @@
2980
2849
  # MC: ServerboundClientTickEndPacket
2981
2850
  packet_tick_end:
2982
2851
  # Empty
2983
- # MC: ServerboundClientInformationPacket
2984
- packet_settings:
2985
- locale: string
2986
- viewDistance: i8
2987
- chatFlags: varint
2988
- chatColors: bool
2989
- skinParts: u8
2990
- mainHand: varint
2991
- enableTextFiltering: bool
2992
- enableServerListing: bool
2993
- particleStatus: varint =>
2994
- - all
2995
- - decreased
2996
- - minimal
2997
2852
  # MC: ServerboundCommandSuggestionPacket
2998
2853
  packet_tab_complete:
2999
2854
  transactionId: varint
@@ -3336,7 +3191,7 @@
3336
3191
  if chunk_batch_received: packet_chunk_batch_received
3337
3192
  if client_command: packet_client_command
3338
3193
  if tick_end: packet_tick_end
3339
- if settings: packet_settings
3194
+ if settings: packet_common_settings
3340
3195
  if tab_complete: packet_tab_complete
3341
3196
  if configuration_acknowledged: packet_configuration_acknowledged
3342
3197
  if enchant_item: packet_enchant_item