minecraft-data 3.91.0 → 3.93.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 (140) hide show
  1. package/data.js +50 -1
  2. package/doc/history.md +8 -0
  3. package/index.d.ts +5 -2
  4. package/minecraft-data/README.md +1 -1
  5. package/minecraft-data/data/bedrock/1.21.90/proto.yml +4600 -0
  6. package/minecraft-data/data/bedrock/1.21.90/types.yml +2806 -0
  7. package/minecraft-data/data/bedrock/1.21.93/protocol.json +14314 -0
  8. package/minecraft-data/data/bedrock/1.21.93/version.json +6 -0
  9. package/minecraft-data/data/bedrock/common/protocolVersions.json +6 -0
  10. package/minecraft-data/data/bedrock/common/versions.json +2 -1
  11. package/minecraft-data/data/bedrock/latest/proto.yml +1 -1
  12. package/minecraft-data/data/dataPaths.json +50 -1
  13. package/minecraft-data/data/pc/1.10/proto.yml +29 -35
  14. package/minecraft-data/data/pc/1.10/protocol.json +101 -86
  15. package/minecraft-data/data/pc/1.10-pre1/proto.yml +29 -35
  16. package/minecraft-data/data/pc/1.10-pre1/protocol.json +101 -86
  17. package/minecraft-data/data/pc/1.11/proto.yml +29 -35
  18. package/minecraft-data/data/pc/1.11/protocol.json +101 -86
  19. package/minecraft-data/data/pc/1.12/proto.yml +29 -35
  20. package/minecraft-data/data/pc/1.12/protocol.json +101 -86
  21. package/minecraft-data/data/pc/1.12-pre4/proto.yml +29 -35
  22. package/minecraft-data/data/pc/1.12-pre4/protocol.json +101 -86
  23. package/minecraft-data/data/pc/1.12.1/proto.yml +29 -35
  24. package/minecraft-data/data/pc/1.12.1/protocol.json +101 -86
  25. package/minecraft-data/data/pc/1.12.2/proto.yml +29 -35
  26. package/minecraft-data/data/pc/1.12.2/protocol.json +101 -86
  27. package/minecraft-data/data/pc/1.13/proto.yml +29 -35
  28. package/minecraft-data/data/pc/1.13/protocol.json +101 -86
  29. package/minecraft-data/data/pc/1.13.1/proto.yml +29 -35
  30. package/minecraft-data/data/pc/1.13.1/protocol.json +101 -86
  31. package/minecraft-data/data/pc/1.13.2/proto.yml +29 -35
  32. package/minecraft-data/data/pc/1.13.2/protocol.json +101 -86
  33. package/minecraft-data/data/pc/1.13.2-pre1/proto.yml +29 -35
  34. package/minecraft-data/data/pc/1.13.2-pre1/protocol.json +101 -86
  35. package/minecraft-data/data/pc/1.13.2-pre2/proto.yml +29 -35
  36. package/minecraft-data/data/pc/1.13.2-pre2/protocol.json +101 -86
  37. package/minecraft-data/data/pc/1.14/proto.yml +29 -35
  38. package/minecraft-data/data/pc/1.14/protocol.json +101 -86
  39. package/minecraft-data/data/pc/1.14.1/proto.yml +29 -35
  40. package/minecraft-data/data/pc/1.14.1/protocol.json +101 -86
  41. package/minecraft-data/data/pc/1.14.3/proto.yml +29 -35
  42. package/minecraft-data/data/pc/1.14.3/protocol.json +101 -86
  43. package/minecraft-data/data/pc/1.14.4/proto.yml +29 -35
  44. package/minecraft-data/data/pc/1.14.4/protocol.json +101 -86
  45. package/minecraft-data/data/pc/1.15/proto.yml +29 -35
  46. package/minecraft-data/data/pc/1.15/protocol.json +101 -86
  47. package/minecraft-data/data/pc/1.15.1/proto.yml +29 -35
  48. package/minecraft-data/data/pc/1.15.1/protocol.json +101 -86
  49. package/minecraft-data/data/pc/1.15.2/proto.yml +29 -35
  50. package/minecraft-data/data/pc/1.15.2/protocol.json +101 -86
  51. package/minecraft-data/data/pc/1.16/proto.yml +29 -35
  52. package/minecraft-data/data/pc/1.16/protocol.json +101 -86
  53. package/minecraft-data/data/pc/1.16-rc1/proto.yml +29 -35
  54. package/minecraft-data/data/pc/1.16-rc1/protocol.json +101 -86
  55. package/minecraft-data/data/pc/1.16.1/proto.yml +29 -35
  56. package/minecraft-data/data/pc/1.16.1/protocol.json +101 -86
  57. package/minecraft-data/data/pc/1.16.2/proto.yml +29 -35
  58. package/minecraft-data/data/pc/1.16.2/protocol.json +101 -86
  59. package/minecraft-data/data/pc/1.17/proto.yml +30 -36
  60. package/minecraft-data/data/pc/1.17/protocol.json +102 -87
  61. package/minecraft-data/data/pc/1.17.1/proto.yml +30 -36
  62. package/minecraft-data/data/pc/1.17.1/protocol.json +102 -87
  63. package/minecraft-data/data/pc/1.18/proto.yml +30 -36
  64. package/minecraft-data/data/pc/1.18/protocol.json +102 -87
  65. package/minecraft-data/data/pc/1.18.2/proto.yml +30 -36
  66. package/minecraft-data/data/pc/1.18.2/protocol.json +102 -87
  67. package/minecraft-data/data/pc/1.19/proto.yml +34 -67
  68. package/minecraft-data/data/pc/1.19/protocol.json +123 -127
  69. package/minecraft-data/data/pc/1.19.2/proto.yml +35 -68
  70. package/minecraft-data/data/pc/1.19.2/protocol.json +123 -127
  71. package/minecraft-data/data/pc/1.19.3/proto.yml +39 -309
  72. package/minecraft-data/data/pc/1.19.3/protocol.json +65 -324
  73. package/minecraft-data/data/pc/1.19.4/proto.yml +39 -309
  74. package/minecraft-data/data/pc/1.19.4/protocol.json +65 -324
  75. package/minecraft-data/data/pc/1.20/proto.yml +40 -310
  76. package/minecraft-data/data/pc/1.20/protocol.json +65 -324
  77. package/minecraft-data/data/pc/1.20.2/proto.yml +40 -310
  78. package/minecraft-data/data/pc/1.20.2/protocol.json +65 -324
  79. package/minecraft-data/data/pc/1.20.3/proto.yml +156 -327
  80. package/minecraft-data/data/pc/1.20.3/protocol.json +186 -369
  81. package/minecraft-data/data/pc/1.20.5/proto.yml +427 -845
  82. package/minecraft-data/data/pc/1.20.5/protocol.json +669 -931
  83. package/minecraft-data/data/pc/1.21.1/proto.yml +415 -898
  84. package/minecraft-data/data/pc/1.21.1/protocol.json +585 -1058
  85. package/minecraft-data/data/pc/1.21.3/proto.yml +429 -572
  86. package/minecraft-data/data/pc/1.21.3/protocol.json +760 -920
  87. package/minecraft-data/data/pc/1.21.4/materials.json +45 -45
  88. package/minecraft-data/data/pc/1.21.4/protocol.json +766 -917
  89. package/minecraft-data/data/pc/1.21.6/attributes.json +247 -0
  90. package/minecraft-data/data/pc/1.21.6/biomes.json +652 -0
  91. package/minecraft-data/data/pc/1.21.6/blockCollisionShapes.json +142541 -0
  92. package/minecraft-data/data/pc/1.21.6/blocks.json +41360 -0
  93. package/minecraft-data/data/pc/1.21.6/effects.json +236 -0
  94. package/minecraft-data/data/pc/1.21.6/enchantments.json +959 -0
  95. package/minecraft-data/data/pc/1.21.6/entities.json +1512 -0
  96. package/minecraft-data/data/pc/1.21.6/foods.json +402 -0
  97. package/minecraft-data/data/pc/1.21.6/instruments.json +94 -0
  98. package/minecraft-data/data/pc/1.21.6/items.json +9278 -0
  99. package/minecraft-data/data/pc/1.21.6/language.json +7389 -0
  100. package/minecraft-data/data/pc/1.21.6/materials.json +206 -0
  101. package/minecraft-data/data/pc/1.21.6/particles.json +458 -0
  102. package/minecraft-data/data/pc/1.21.6/recipes.json +30473 -0
  103. package/minecraft-data/data/pc/1.21.6/sounds.json +6910 -0
  104. package/minecraft-data/data/pc/1.21.6/tints.json +465 -0
  105. package/minecraft-data/data/pc/1.21.6/version.json +6 -0
  106. package/minecraft-data/data/pc/1.7/proto.yml +3 -6
  107. package/minecraft-data/data/pc/1.7/protocol.json +7 -0
  108. package/minecraft-data/data/pc/1.8/proto.yml +29 -35
  109. package/minecraft-data/data/pc/1.8/protocol.json +101 -86
  110. package/minecraft-data/data/pc/1.9/proto.yml +29 -35
  111. package/minecraft-data/data/pc/1.9/protocol.json +101 -86
  112. package/minecraft-data/data/pc/1.9.1-pre2/proto.yml +29 -35
  113. package/minecraft-data/data/pc/1.9.1-pre2/protocol.json +101 -86
  114. package/minecraft-data/data/pc/1.9.2/proto.yml +29 -35
  115. package/minecraft-data/data/pc/1.9.2/protocol.json +101 -86
  116. package/minecraft-data/data/pc/1.9.4/proto.yml +29 -35
  117. package/minecraft-data/data/pc/1.9.4/protocol.json +101 -86
  118. package/minecraft-data/data/pc/15w40b/proto.yml +29 -35
  119. package/minecraft-data/data/pc/15w40b/protocol.json +101 -86
  120. package/minecraft-data/data/pc/16w20a/proto.yml +29 -35
  121. package/minecraft-data/data/pc/16w20a/protocol.json +101 -86
  122. package/minecraft-data/data/pc/16w35a/proto.yml +29 -35
  123. package/minecraft-data/data/pc/16w35a/protocol.json +101 -86
  124. package/minecraft-data/data/pc/17w15a/proto.yml +29 -35
  125. package/minecraft-data/data/pc/17w15a/protocol.json +101 -86
  126. package/minecraft-data/data/pc/17w18b/proto.yml +29 -35
  127. package/minecraft-data/data/pc/17w18b/protocol.json +101 -86
  128. package/minecraft-data/data/pc/17w50a/proto.yml +29 -35
  129. package/minecraft-data/data/pc/17w50a/protocol.json +101 -86
  130. package/minecraft-data/data/pc/20w13b/proto.yml +29 -35
  131. package/minecraft-data/data/pc/20w13b/protocol.json +101 -86
  132. package/minecraft-data/data/pc/21w07a/proto.yml +29 -35
  133. package/minecraft-data/data/pc/21w07a/protocol.json +101 -86
  134. package/minecraft-data/data/pc/common/features.json +7 -2
  135. package/minecraft-data/data/pc/common/protocolVersions.json +9 -1
  136. package/minecraft-data/data/pc/latest/proto.yml +427 -572
  137. package/minecraft-data/doc/history.md +11 -0
  138. package/minecraft-data/doc/protocol.md +6 -4
  139. package/package.json +1 -1
  140. 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,71 @@
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
+ # TODO: add to ClientboundExplodePacket and ClientboundSoundEntityPacket and ClientboundSoundPacket (and maybe other) packet which also use HolderSet
353
+ ItemSoundEvent:
354
+ soundName: string
355
+ fixedRange?: f32
356
+ ItemSoundHolder: ["registryEntryHolder", {
357
+ "baseName": "soundId",
358
+ "otherwise": { name: "data", type: "ItemSoundEvent" }
359
+ }]
572
360
 
573
- FireworkExplosion:
361
+ ItemFireworkExplosion:
574
362
  shape: varint =>
575
- - small_ball
576
- - large_ball
577
- - star
578
- - creeper
579
- - burst
363
+ - small_ball
364
+ - large_ball
365
+ - star
366
+ - creeper
367
+ - burst
368
+ # The RGB components of the color, encoded as an integer.
580
369
  colors: i32[]varint
370
+ # The RGB components of the color, encoded as an integer.
581
371
  fadeColors: i32[]varint
372
+ # Whether the firework has a trail.
582
373
  hasTrail: bool
374
+ # Whether the firework has a twinkle effect.
583
375
  hasTwinkle: bool
584
376
 
585
- BookPage:
586
- content: string
587
- filteredContent?: string
588
-
589
- EffectDetail:
377
+ ItemEffectDetail:
590
378
  amplifier: varint
591
379
  duration: varint
592
380
  ambient: bool
593
381
  showParticles: bool
594
382
  showIcon: bool
595
- hiddenEffect?: EffectDetail
383
+ hiddenEffect?: ItemEffectDetail
596
384
 
597
- PotionEffect:
385
+ ItemPotionEffect:
598
386
  id: varint
599
- details: EffectDetail
387
+ details: ItemEffectDetail
600
388
 
601
- ConsumeEffect:
389
+ ItemBlockProperty:
390
+ name: string
391
+ isExactMatch: bool
392
+ value: isExactMatch ?
393
+ if true:
394
+ exactValue: string
395
+ if false:
396
+ minValue: string
397
+ maxValue: string
398
+
399
+
400
+ ItemBlockPredicate:
401
+ blockSet?: ["registryEntryHolderSet", {
402
+ "base": { name: "name", type: "string" },
403
+ "otherwise": { name: "blockIds", type: "varint" }
404
+ }]
405
+ properties?: ItemBlockProperty[]varint
406
+ nbt: anonOptionalNbt
407
+
408
+ ItemBookPage:
409
+ # The raw text of the page. TextComponent, max 1024 characters.
410
+ content: string
411
+ filteredContent?: string
412
+ ItemWrittenBookPage:
413
+ content: anonymousNbt
414
+ filteredContent: anonOptionalNbt
415
+
416
+ ItemConsumeEffect: # 1.21.3
602
417
  type: varint =>
603
418
  - apply_effects
604
419
  - remove_effects
@@ -607,7 +422,7 @@
607
422
  - play_sound
608
423
  _: type ?
609
424
  if apply_effects:
610
- effects: PotionEffect[]varint
425
+ effects: ItemPotionEffect[]varint
611
426
  probability: f32
612
427
  if remove_effects:
613
428
  effects: IDSet
@@ -615,145 +430,168 @@
615
430
  if teleport_randomly:
616
431
  diameter: f32
617
432
  if play_sound:
618
- sound: ["registryEntryHolder", {
619
- "baseName": "soundId",
620
- "otherwise": { name: "data", type: "SoundEvent" }
621
- }]
433
+ sound: ItemSoundHolder
622
434
 
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
435
+ ArmorTrimMaterial:
436
+ assetName: string
437
+ ingredientId: varint
438
+ overrideArmorAssets: []varint
439
+ key: string
440
+ value: string
441
+ description: anonymousNbt
634
442
 
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
443
+ ArmorTrimPattern:
444
+ assetId: string
445
+ templateItemId: varint
446
+ description: anonymousNbt
447
+ decal: bool
448
+
449
+ InstrumentData:
450
+ soundEvent: ItemSoundHolder
451
+ useDuration: f32
452
+ range: f32
453
+ description: anonymousNbt
454
+
455
+ JukeboxSongData:
456
+ soundEvent: ItemSoundHolder
457
+ description: anonymousNbt
458
+ lengthInSeconds: f32
459
+ comparatorOutput: varint
460
+
461
+ BannerPattern:
462
+ assetId: string
463
+ translationKey: string
464
+ BannerPatternLayer:
465
+ pattern: ItemSoundHolder
466
+ colorId: varint
467
+
468
+ Slot:
469
+ itemCount: varint
470
+ _: itemCount ?
471
+ if 0: void
472
+ default:
473
+ itemId: varint
474
+ # https://wiki.vg/Slot_Data#Structured_components
475
+ addedComponentCount: varint
476
+ removedComponentCount: varint
477
+ components: SlotComponent[]$addedComponentCount
478
+ removeComponents: []$removedComponentCount
479
+ type: SlotComponentType
642
480
 
643
481
  Particle:
644
482
  # See client/net/minecraft/core/particles/ParticleTypes.java
645
483
  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
- - sculk_soul
681
- - sculk_charge
682
- - sculk_charge_pop
683
- - soul_fire_flame
684
- - soul
685
- - flash
686
- - happy_villager
687
- - composter
688
- - heart
689
- - instant_effect
690
- - item
691
- - vibration
692
- - trail
693
- - item_slime
694
- - item_cobweb
695
- - item_snowball
696
- - large_smoke
697
- - lava
698
- - mycelium
699
- - note
700
- - poof
701
- - portal
702
- - rain
703
- - smoke
704
- - white_smoke
705
- - sneeze
706
- - spit
707
- - squid_ink
708
- - sweep_attack
709
- - totem_of_undying
710
- - underwater
711
- - splash
712
- - witch
713
- - bubble_pop
714
- - current_down
715
- - bubble_column_up
716
- - nautilus
717
- - dolphin
718
- - campfire_cosy_smoke
719
- - campfire_signal_smoke
720
- - dripping_honey
721
- - falling_honey
722
- - landing_honey
723
- - falling_nectar
724
- - falling_spore_blossom
725
- - ash
726
- - crimson_spore
727
- - warped_spore
728
- - spore_blossom_air
729
- - dripping_obsidian_tear
730
- - falling_obsidian_tear
731
- - landing_obsidian_tear
732
- - reverse_portal
733
- - white_ash
734
- - small_flame
735
- - snowflake
736
- - dripping_dripstone_lava
737
- - falling_dripstone_lava
738
- - dripping_dripstone_water
739
- - falling_dripstone_water
740
- - glow_squid_ink
741
- - glow
742
- - wax_on
743
- - wax_off
744
- - electric_spark
745
- - scrape
746
- - shriek
747
- - egg_crack
748
- - dust_plume
749
- - trial_spawner_detected_player
750
- - trial_spawner_detected_player_ominous
751
- - vault_connection
752
- - dust_pillar
753
- - ominous_spawning
754
- - raid_omen
755
- - trial_omen
756
- - block_crumble
484
+ - angry_villager
485
+ - block
486
+ - block_marker
487
+ - bubble
488
+ - cloud
489
+ - crit
490
+ - damage_indicator
491
+ - dragon_breath
492
+ - dripping_lava
493
+ - falling_lava
494
+ - landing_lava
495
+ - dripping_water
496
+ - falling_water
497
+ - dust
498
+ - dust_color_transition
499
+ - effect
500
+ - elder_guardian
501
+ - enchanted_hit
502
+ - enchant
503
+ - end_rod
504
+ - entity_effect
505
+ - explosion_emitter
506
+ - explosion
507
+ - gust
508
+ - small_gust
509
+ - gust_emitter_large
510
+ - gust_emitter_small
511
+ - sonic_boom
512
+ - falling_dust
513
+ - firework
514
+ - fishing
515
+ - flame
516
+ - infested
517
+ - cherry_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
757
595
  ## ## Tips for reviewing particle data (as of 1.20.5)
758
596
  ## Inside the registry code, each particle can have an associated "options" type and
759
597
  ## each options type can add additional data to be encoded.
@@ -788,14 +626,14 @@
788
626
  if sculk_charge: f32
789
627
  if shriek: varint
790
628
  if vibration:
791
- position_type: varint =>
629
+ positionType: varint =>
792
630
  - block
793
631
  - entity
794
- position: position_type ?
632
+ position: positionType ?
795
633
  if block: position
796
634
  if entity:
797
635
  entityId: varint
798
- entity_eye_height: f32
636
+ entityEyeHeight: f32
799
637
  ticks: varint
800
638
  if trail:
801
639
  target: vec3f64
@@ -977,7 +815,7 @@
977
815
  game_profile:
978
816
  name: string
979
817
  properties: []varint
980
- key: string
818
+ name: string
981
819
  value: string
982
820
  signature?: string
983
821
  command_node:
@@ -1277,6 +1115,20 @@
1277
1115
  # These are packets that are shared between multiple states.
1278
1116
  # They are defined here to avoid duplication.
1279
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
1280
1132
  # MC: ClientboundCookieRequestPacket
1281
1133
  packet_common_cookie_request:
1282
1134
  cookie: string
@@ -1316,16 +1168,16 @@
1316
1168
  promptMessage?: anonymousNbt
1317
1169
 
1318
1170
  ServerLinkType: varint =>
1319
- - bug_report
1320
- - community_guidelines
1321
- - support
1322
- - status
1323
- - feedback
1324
- - community
1325
- - website
1326
- - forums
1327
- - news
1328
- - announcements
1171
+ - bug_report
1172
+ - community_guidelines
1173
+ - support
1174
+ - status
1175
+ - feedback
1176
+ - community
1177
+ - website
1178
+ - forums
1179
+ - news
1180
+ - announcements
1329
1181
  # MC: ClientboundServerLinksPacket
1330
1182
  # This packet contains a list of links that the Notchian client will display in the menu
1331
1183
  # available from the pause menu. Link labels can be built-in or custom (i.e., any text).
@@ -1553,17 +1405,7 @@
1553
1405
  if custom_report_details: packet_common_custom_report_details
1554
1406
  if server_links: packet_common_server_links
1555
1407
  ^configuration.toServer.types:
1556
- # MC: ServerboundClientInformationPacket
1557
- packet_settings:
1558
- locale: string
1559
- viewDistance: i8
1560
- chatFlags: varint
1561
- chatColors: bool
1562
- skinParts: u8
1563
- mainHand: varint
1564
- enableTextFiltering: bool
1565
- enableServerListing: bool
1566
- particles: varint
1408
+ ## (Settings is Common) ##
1567
1409
  ## (Cookie Response is Common) ##
1568
1410
  # MC: ServerboundCustomPayloadPacket
1569
1411
  packet_custom_payload:
@@ -1595,7 +1437,7 @@
1595
1437
  - custom_report_details
1596
1438
  - server_links
1597
1439
  params: name ?
1598
- if settings: packet_settings
1440
+ if settings: packet_common_settings
1599
1441
  if cookie_response: packet_common_cookie_response
1600
1442
  if custom_payload: packet_custom_payload
1601
1443
  if finish_configuration: packet_finish_configuration
@@ -1606,7 +1448,64 @@
1606
1448
  if custom_report_details: packet_common_custom_report_details
1607
1449
  if server_links: packet_common_server_links
1608
1450
  ^play.toClient.types:
1609
- # 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 smithing_trim:
1467
+ base: SlotDisplay
1468
+ material: SlotDisplay
1469
+ pattern: SlotDisplay
1470
+ if with_remainder:
1471
+ input: SlotDisplay
1472
+ remainder: SlotDisplay
1473
+ if composite: SlotDisplay[]varint
1474
+ RecipeDisplay:
1475
+ type: varint =>
1476
+ - crafting_shapeless
1477
+ - crafting_shaped
1478
+ - furnace
1479
+ - stonecutter
1480
+ - smithing
1481
+ data: type ?
1482
+ if crafting_shapeless:
1483
+ ingredients: SlotDisplay[]varint
1484
+ result: SlotDisplay
1485
+ craftingStation: SlotDisplay
1486
+ if crafting_shaped:
1487
+ width: varint
1488
+ height: varint
1489
+ ingredients: SlotDisplay[]varint
1490
+ result: SlotDisplay
1491
+ craftingStation: SlotDisplay
1492
+ if furnace:
1493
+ ingredient: SlotDisplay
1494
+ fuel: SlotDisplay
1495
+ result: SlotDisplay
1496
+ craftingStation: SlotDisplay
1497
+ duration: varint
1498
+ experience: f32
1499
+ if stonecutter:
1500
+ ingredient: SlotDisplay
1501
+ result: SlotDisplay
1502
+ craftingStation: SlotDisplay
1503
+ if smithing:
1504
+ template: SlotDisplay
1505
+ base: SlotDisplay
1506
+ addition: SlotDisplay
1507
+ result: SlotDisplay
1508
+ craftingStation: SlotDisplay
1610
1509
  # World state information for spawn and respawn packets
1611
1510
  SpawnInfo:
1612
1511
  dimension: varint
@@ -1806,18 +1705,14 @@
1806
1705
  parameters: ChatTypeParameterType[]varint
1807
1706
  style: anonymousNbt
1808
1707
  ChatTypes:
1809
- # 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
1810
- registryIndex: varint
1811
- _: registryIndex ?
1812
- if 0:
1813
- chat: ChatType
1814
- narration: ChatType
1815
- default: void
1708
+ chat: ChatType
1709
+ narration: ChatType
1710
+ ChatTypesHolder: ["registryEntryHolder", { "baseName": "chatType", "otherwise": { name: "data", type: "ChatTypes" } }]
1816
1711
 
1817
1712
  # MC: ClientboundDisguisedChatPacket
1818
1713
  packet_profileless_chat:
1819
1714
  message: anonymousNbt
1820
- type: ChatTypes
1715
+ type: ChatTypesHolder
1821
1716
  name: anonymousNbt
1822
1717
  target?: anonymousNbt
1823
1718
  # MC: ClientboundEntityEventPacket
@@ -1838,16 +1733,12 @@
1838
1733
  onGround: bool
1839
1734
  # MC: ClientboundExplodePacket
1840
1735
  packet_explosion:
1841
- center: vec3f
1736
+ x: f64
1737
+ y: f64
1738
+ z: f64
1842
1739
  playerKnockback?: vec3f
1843
1740
  explosionParticle: Particle
1844
- soundId: varint
1845
- _: soundId ?
1846
- if 0:
1847
- soundName: string
1848
- range?: f32
1849
- default:
1850
-
1741
+ sound: ItemSoundHolder
1851
1742
  # MC: ClientboundForgetLevelChunkPacket
1852
1743
  packet_unload_chunk:
1853
1744
  chunkZ: i32
@@ -2014,7 +1905,7 @@
2014
1905
  pitch: i8
2015
1906
  onGround: bool
2016
1907
  # MC: ClientboundMoveMinecartPacket
2017
- packet_move_minecart:
1908
+ packet_move_minecart: # 1.21.3
2018
1909
  entityId: varint
2019
1910
  steps: []varint
2020
1911
  position: vec3f
@@ -2081,7 +1972,7 @@
2081
1972
  filterTypeMask: filterType ?
2082
1973
  if 2: i64[]varint
2083
1974
  default: void
2084
- type: ChatTypes
1975
+ type: ChatTypesHolder
2085
1976
  networkName: anonymousNbt
2086
1977
  networkTargetName?: anonymousNbt
2087
1978
  # MC: ClientboundPlayerCombatEndPacket
@@ -2099,6 +1990,7 @@
2099
1990
  players: UUID[]varint
2100
1991
  # MC: ClientboundPlayerInfoUpdatePacket
2101
1992
  packet_player_info:
1993
+ ## ClientboundPlayerInfoUpdatePacket.java#L160
2102
1994
  action: ["bitflags", {
2103
1995
  "type": "u8",
2104
1996
  "flags": [
@@ -2108,7 +2000,7 @@
2108
2000
  "update_listed",
2109
2001
  "update_latency",
2110
2002
  "update_display_name",
2111
- "update_priority"
2003
+ "update_list_order"
2112
2004
  ]
2113
2005
  }]
2114
2006
  data: []varint
@@ -2129,9 +2021,9 @@
2129
2021
  if true: varint
2130
2022
  default: void
2131
2023
  displayName: ../action/update_display_name ?
2132
- if true: anonOptionalNbt
2024
+ if true: ["option", "anonymousNbt"]
2133
2025
  default: void
2134
- listPriority: ../action/update_priority ?
2026
+ listPriority: ../action/update_list_order ?
2135
2027
  if true: varint
2136
2028
  default: void
2137
2029
 
@@ -2154,19 +2046,6 @@
2154
2046
  "type": "u32",
2155
2047
  "flags": ["x", "y", "z", "yaw", "pitch", "dx", "dy", "dz", "yawDelta"]
2156
2048
  }]
2157
- # PositionUpdateRelatives: ["bitfield", [
2158
- # # unused bits on top
2159
- # { "name": "unused", "size": 23, "signed": false },
2160
- # { "name": "yawDelta", "size": 1, "signed": false },
2161
- # { "name": "dz", "size": 1, "signed": false },
2162
- # { "name": "dy", "size": 1, "signed": false },
2163
- # { "name": "dx", "size": 1, "signed": false },
2164
- # { "name": "pitch", "size": 1, "signed": false },
2165
- # { "name": "yaw", "size": 1, "signed": false },
2166
- # { "name": "z", "size": 1, "signed": false },
2167
- # { "name": "y", "size": 1, "signed": false },
2168
- # { "name": "x", "size": 1, "signed": false },
2169
- # ]]
2170
2049
  # MC: ClientboundPlayerPositionPacket
2171
2050
  packet_position:
2172
2051
  teleportId: varint
@@ -2237,6 +2116,7 @@
2237
2116
  packet_reset_score:
2238
2117
  entity_name: string
2239
2118
  objective_name?: string
2119
+ ## (remove_resource_pack is common)
2240
2120
  # MC: ClientboundRespawnPacket
2241
2121
  packet_respawn:
2242
2122
  worldState: SpawnInfo
@@ -2460,12 +2340,7 @@
2460
2340
  fadeOut: i32
2461
2341
  # MC: ClientboundSoundEntityPacket
2462
2342
  packet_entity_sound_effect:
2463
- soundId: varint
2464
- soundEvent: soundId ?
2465
- if 0:
2466
- resource: string
2467
- range?: f32
2468
- default: void
2343
+ sound: ItemSoundHolder
2469
2344
  soundCategory: soundSource
2470
2345
  entityId: varint
2471
2346
  volume: f32
@@ -2473,12 +2348,7 @@
2473
2348
  seed: i64
2474
2349
  # MC: ClientboundSoundPacket
2475
2350
  packet_sound_effect:
2476
- soundId: varint
2477
- soundEvent: soundId ?
2478
- if 0:
2479
- resource: string
2480
- range?: f32
2481
- default: void
2351
+ sound: ItemSoundHolder
2482
2352
  soundCategory: soundSource
2483
2353
  x: i32
2484
2354
  y: i32
@@ -2974,20 +2844,7 @@
2974
2844
  # MC: ServerboundClientTickEndPacket
2975
2845
  packet_tick_end:
2976
2846
  # Empty
2977
- # MC: ServerboundClientInformationPacket
2978
- packet_settings:
2979
- locale: string
2980
- viewDistance: i8
2981
- chatFlags: varint
2982
- chatColors: bool
2983
- skinParts: u8
2984
- mainHand: varint
2985
- enableTextFiltering: bool
2986
- enableServerListing: bool
2987
- particleStatus: varint =>
2988
- - all
2989
- - decreased
2990
- - minimal
2847
+ ## (Settings is common) ##
2991
2848
  # MC: ServerboundCommandSuggestionPacket
2992
2849
  packet_tab_complete:
2993
2850
  transactionId: varint
@@ -3319,7 +3176,7 @@
3319
3176
  if chunk_batch_received: packet_chunk_batch_received
3320
3177
  if client_command: packet_client_command
3321
3178
  if tick_end: packet_tick_end
3322
- if settings: packet_settings
3179
+ if settings: packet_common_settings
3323
3180
  if tab_complete: packet_tab_complete
3324
3181
  if configuration_acknowledged: packet_configuration_acknowledged
3325
3182
  if enchant_item: packet_enchant_item
@@ -3365,4 +3222,4 @@
3365
3222
  if arm_animation: packet_arm_animation
3366
3223
  if spectate: packet_spectate
3367
3224
  if block_place: packet_block_place
3368
- if use_item: packet_use_item
3225
+ if use_item: packet_use_item