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
@@ -23,6 +23,7 @@
23
23
  entityMetadataLoop: native
24
24
  topBitSetTerminatedArray: native
25
25
  bitfield: native
26
+ bitflags: native
26
27
  container: native
27
28
  switch: native
28
29
  void: native
@@ -32,14 +33,8 @@
32
33
  anonOptionalNbt: native
33
34
  registryEntryHolder: native
34
35
  registryEntryHolderSet: native
35
- arrayWithLengthOffset: 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
@@ -60,69 +55,71 @@
60
55
  "base": { name: "name", type: "string" },
61
56
  "otherwise": { name: "ids", type: "varint" }
62
57
  }]
58
+ ContainerID: u8
63
59
  SlotComponentType: varint =>
64
- - custom_data
65
- - max_stack_size
66
- - max_damage
67
- - damage
68
- - unbreakable
69
- - custom_name
70
- - item_name
71
- - lore
72
- - rarity
73
- - enchantments
74
- - can_place_on
75
- - can_break
76
- - attribute_modifiers
77
- - custom_model_data
78
- - hide_additional_tooltip
79
- - hide_tooltip
80
- - repair_cost
81
- - creative_slot_lock
82
- - enchantment_glint_override
83
- - intangible_projectile
84
- - food
85
- - fire_resistant
86
- - tool
87
- - stored_enchantments
88
- - dyed_color
89
- - map_color
90
- - map_id
91
- - map_decorations
92
- - map_post_processing
93
- - charged_projectiles
94
- - bundle_contents
95
- - potion_contents
96
- - suspicious_stew_effects
97
- - writable_book_content
98
- - written_book_content
99
- - trim
100
- - debug_stick_state
101
- - entity_data
102
- - bucket_entity_data
103
- - block_entity_data
104
- - instrument
105
- - ominous_bottle_amplifier
106
- - jukebox_playable
107
- - recipes
108
- - lodestone_tracker
109
- - firework_explosion
110
- - fireworks
111
- - profile
112
- - note_block_sound
113
- - banner_patterns
114
- - base_color
115
- - pot_decorations
116
- - container
117
- - block_state
118
- - bees
119
- - lock
120
- - container_loot
60
+ - custom_data
61
+ - max_stack_size
62
+ - max_damage
63
+ - damage
64
+ - unbreakable
65
+ - custom_name
66
+ - item_name
67
+ - lore
68
+ - rarity
69
+ - enchantments
70
+ - can_place_on
71
+ - can_break
72
+ - attribute_modifiers
73
+ - custom_model_data
74
+ - hide_additional_tooltip
75
+ - hide_tooltip
76
+ - repair_cost
77
+ - creative_slot_lock
78
+ - enchantment_glint_override
79
+ - intangible_projectile
80
+ - food
81
+ - fire_resistant
82
+ - tool
83
+ - stored_enchantments
84
+ - dyed_color
85
+ - map_color
86
+ - map_id
87
+ - map_decorations
88
+ - map_post_processing
89
+ - charged_projectiles
90
+ - bundle_contents
91
+ - potion_contents
92
+ - suspicious_stew_effects
93
+ - writable_book_content
94
+ - written_book_content
95
+ - trim
96
+ - debug_stick_state
97
+ - entity_data
98
+ - bucket_entity_data
99
+ - block_entity_data
100
+ - instrument
101
+ - ominous_bottle_amplifier
102
+ - jukebox_playable
103
+ - recipes
104
+ - lodestone_tracker
105
+ - firework_explosion
106
+ - fireworks
107
+ - profile
108
+ - note_block_sound
109
+ - banner_patterns
110
+ - base_color
111
+ - pot_decorations
112
+ - container
113
+ - block_state
114
+ - bees
115
+ - lock
116
+ - container_loot
121
117
 
122
118
  SlotComponent:
123
119
  type: SlotComponentType
120
+ ## Ref: client/net/minecraft/core/component/DataComponents.java
124
121
  data: type ?
125
- # TODO: look into how nbt works here
122
+ ## TODO: look into how nbt works here
126
123
  if custom_data: anonymousNbt
127
124
  if max_stack_size: varint
128
125
  if max_damage: varint
@@ -142,12 +139,11 @@
142
139
  level: varint
143
140
  showTooltip: bool
144
141
  if can_place_on or can_break:
145
- predicates: BlockPredicate[]varint
142
+ predicates: ItemBlockPredicate[]varint
146
143
  showTooltip: bool
147
144
  if attribute_modifiers:
148
145
  attributes: []varint
149
146
  typeId: varint
150
- uniqueId: UUID
151
147
  name: string
152
148
  value: f64
153
149
  operation: varint =>
@@ -172,19 +168,12 @@
172
168
  if repair_cost: varint
173
169
  if creative_slot_lock: void
174
170
  if enchantment_glint_override: bool
175
- if intangible_projectile: void
176
- # Name Type Description
177
- # Nutrition VarInt Non-negative
178
- # Saturation Modifier Float How much saturation will be given after consuming the item.
179
- # Can Always Eat Boolean Whether the item can always be eaten, even at full hunger.
180
- # Seconds To Eat Float How long it takes to consume the item.
181
- # Using converts to Slot Data This specifies the item produced after consuming the current item. In the Notchian server, this is used for stews, which turn into bowls. Set this to Air if the item should be consumed normally without leaving any other item after.
182
- # Number of effects VarInt Number of elements in the following array.
183
- # Effect Type ID Array Potion Effect The potion effect. See Potion Effect.
184
- # Probability Float The probability for this effect to be chosen.
171
+ if intangible_projectile: anonymousNbt
185
172
  if food:
186
173
  nutrition: varint
174
+ # How much saturation will be given after consuming the item.
187
175
  saturationModifier: f32
176
+ # Whether the item can always be eaten, even at full hunger.
188
177
  canAlwaysEat: bool
189
178
  secondsToEat: f32
190
179
  usingConvertsTo: Slot
@@ -192,272 +181,109 @@
192
181
  effect: varint
193
182
  probability: f32
194
183
  if fire_resistant: void
195
- # Name Type Description
196
- # Number of Rules VarInt The number of elements in the following array.
197
- # Rule
198
- # Blocks Array Block Set The block this rule applies to. See Block Set.
199
- # Has Speed Boolean
200
- # Speed Optional Float The speed at which the tool breaks this rules' blocks. Only present if Has Speed is true.
201
- # Has Correct Drop For Blocks Boolean
202
- # Correct Drop For Blocks Optional Boolean Whether items should drop only if this is the correct tool. Only present if Has Correct Drop For Blocks is true.
203
- # Default Mining Speed Float The mining speed in case none of the previous rule were matched.
204
- # Damage Per Block VarInt The amount of damage the item takes per block break.
205
184
  if tool:
206
185
  rules: []varint
207
- blocks: BlockSet[]varint
208
- hasSpeed: bool
209
- speed: f32
210
- hasCorrectDropForBlocks: bool
211
- correctDropForBlocks: bool
186
+ blocks: IDSet
187
+ # The speed at which the tool breaks this rules' blocks.
188
+ speed?: f32
189
+ # Whether items should drop only if this is the correct tool.
190
+ correctDropForBlocks?: bool
191
+ # The mining speed in case none of the previous rule were matched.
212
192
  defaultMiningSpeed: f32
213
193
  damagePerBlock: varint
214
- # Name Type Description
215
- # Number of enchantments VarInt Number of elements in the following array.
216
- # Enchantment Type ID Array VarInt Enum The ID of the enchantment in the enchantment registry.
217
- # Level VarInt The level of the enchantment.
218
- # Show In Tooltip Boolean Whether the list of enchantments should be shown on the item's tooltip.
219
194
  if stored_enchantments:
220
195
  enchantments: []varint
196
+ # The ID of the enchantment in the enchantment registry.
221
197
  id: varint
222
198
  level: varint
199
+ # Whether the list of enchantments should be shown on the item's tooltip.
223
200
  showInTooltip: bool
224
201
  if dyed_color:
225
- color: varint
202
+ color: i32
226
203
  showTooltip: bool
227
- if map_color: varint
204
+ if map_color: i32
228
205
  if map_id: varint
229
- if map_decorations: anonOptionalNbt
206
+ if map_decorations: anonymousNbt
230
207
  if map_post_processing: varint
231
208
  if charged_projectiles:
232
209
  projectiles: Slot[]varint
233
210
  if bundle_contents:
234
211
  contents: Slot[]varint
235
- # Name Type Description
236
- # Has Potion ID Boolean Whether this potion has an ID in the potion registry. If true, it has the default effects associated with the potion type.
237
- # Potion ID Optional VarInt The ID of the potion type in the potion registry. Only present if Has Potion ID is true.
238
- # Has Custom Color Boolean Whether this potion has a custom color. If false, it uses the default color associated with the potion type.
239
- # Custom Color Optional Int The RGB components of the color, encoded as an integer. Only present if Has Custom Color is true.
240
- # Number Of Custom Effects VarInt The number of elements in the following array.
241
- # Custom Effects Array of Potion Effect Any custom effects the potion might have. See Potion Effect.
242
212
  if potion_contents:
243
- hasPotionId: bool
244
- potionId: optvarint
245
- hasCustomColor: bool
246
- customColor: optvarint
247
- customEffects: []varint
248
- effect: varint
249
- details: EffectDetail
250
- # Name Type Description
251
- # Number Of Effects VarInt Number of elements in the following array.
252
- # Effect Type ID Array VarInt Enum The ID of the effect in the potion effect type registry.
253
- # Duration VarInt The duration of the effect.
213
+ # True if this potion has an ID in the potion registry--it has the default effects associated with the potion type.
214
+ potionId?: varint
215
+ # The RGB components of the color, encoded as an integer.
216
+ customColor?: i32
217
+ customEffects: ItemPotionEffect[]varint
218
+ customName?: string
254
219
  if suspicious_stew_effects:
255
220
  effects: []varint
221
+ # The ID of the effect in the potion effect type registry.
256
222
  effect: varint
223
+ # The duration of the effect.
257
224
  duration: varint
258
- # Name Type Description
259
- # Number Of Pages VarInt Number of elements in the following array.
260
- # Page Raw Content Array (100) String (1024) The raw text of the page.
261
- # Has Filtered Content Boolean
262
- # Filtered Content Optional String (1024) The content after passing through chat filters. Only present if Has Filtered Content is true.
263
225
  if writable_book_content:
264
- pages: BookPage[]varint
265
- # Name Type Description
266
- # Raw Title String (32) The raw title of the book.
267
- # Has Filtered Title Boolean
268
- # Filtered Title Optional String (32) The title after going through chat filters. Only present if Has Filtered Title is true.
269
- # Author String
270
- # Generation VarInt
271
- # Number Of Pages VarInt Number of elements in the following array.
272
- # Page Raw Content Array (100) TextComponent (1024) The raw text of the page.
273
- # Has Filtered Content Boolean
274
- # Filtered Content Optional Text Component (1024) The content after passing through chat filters. Only present if Has Filtered Content is true.
275
- # Resolved Boolean Whether entity selectors have already been resolved.
226
+ # Max 100 pages
227
+ pages: ItemBookPage[]varint
276
228
  if written_book_content:
277
229
  rawTitle: string
278
230
  filteredTitle?: string
279
231
  author: string
280
232
  generation: varint
281
- pages: BookPage[]varint
282
- # Whether entity selectors have already been resolved.
233
+ pages: ItemWrittenBookPage[]varint
283
234
  resolved: bool
284
- # Name Type Description
285
- # Trim Material Type VarInt Identifier used to determine the data that follows. It can be either:
286
- # 0 - Directly represents a trim material, with the necessary data following.
287
- # Anything else - References a trim material in its registry, by the ID of Trim Material Type - 1.
288
- # Asset Name Optional String See Armor Trim Material Registry. Only present if Trim Material Type is 0.
289
- # Ingredient Optional VarInt See Armor Trim Material Registry. Only present if Trim Material Type is 0.
290
- # Item Model Index Optional Float See Armor Trim Material Registry. Only present if Trim Material Type is 0.
291
- # Number of Overrides Optional VarInt See Armor Trim Material Registry. Only present if Trim Material Type is 0.
292
- # Override Armor Material Type Optional Array VarInt Enum See Armor Trim Material Registry. Only present if Trim Material Type is 0.
293
- # Overriden Asset Name String See Armor Trim Material Registry. Only present if Trim Material Type is 0.
294
- # Description Optional Text Component See Armor Trim Material Registry. Only present if Trim Material Type is 0.
295
- # Trim Pattern Type VarInt Identifier used to determine the data that follows. It can be either:
296
- # 0 - Directly represents a trim pattern, with the necessary data following.
297
- # Anything else - References a trim pattern in its registry, by the ID of Trim Pattern Type - 1.
298
- # Asset Name Optional String See Armor Trim Pattern Registry. Only present if Trim Pattern Type is 0.
299
- # Template Item Optional VarInt See Armor Trim Pattern Registry. Only present if Trim Pattern Type is 0.
300
- # Description Optional Text Component See Armor Trim Pattern Registry. Only present if Trim Pattern Type is 0.
301
- # Decal Optional Boolean See Armor Trim Pattern Registry. Only present if Trim Pattern Type is 0.
302
- # Show In Tooltip Boolean Whether the trim information should be shown on the item's tooltip.
303
235
  if trim:
304
- # Identifier used to determine the data that follows. It can be either:
305
- # 0 - Directly represents a trim material, with the necessary data following.
306
- # Anything else - References a trim material in its registry, by the ID of Trim Material Type - 1.
307
- materialType: varint
308
- _: materialType ?
309
- if 0:
310
- assetName: string
311
- ingredientId: varint
312
- itemModelIndex: f32
313
- numberOfOverrides: optvarint
314
- override: []varint
315
- armorMaterialType: varint
316
- overridenAssetName: string
317
- description: string
318
- trimPatternType: varint
319
- _: trimPatternType ?
320
- if 0:
321
- assetName: string
322
- templateItem: varint
323
- description: string
324
- decal: bool
236
+ material: ["registryEntryHolder", { "baseName": "materialId", "otherwise": { "name": "data", "type": "ArmorTrimMaterial" } }]
237
+ pattern: ["registryEntryHolder", { "baseName": "patternId", "otherwise": { "name": "data", "type": "ArmorTrimPattern" } }]
325
238
  showInTooltip: bool
326
239
  if debug_stick_state: anonymousNbt
327
240
  if entity_data: anonymousNbt
328
241
  if bucket_entity_data: anonymousNbt
329
242
  if block_entity_data: anonymousNbt
330
- # Name Type Description
331
- # Instrument Type VarInt Identifier used to determine the data that follows. It can be either:
332
- # 0 - Directly represents an instrument, with the necessary data following.
333
- # Anything else - References an instrument in its registry, by the ID of Instrument Type - 1.
334
- # Sound Event Optional Sound Event The sound to be played. Only present if Instrument Type is 0.
335
- # Use duration Optional Float The maximum range of the sound. Only present if Instrument Type is 0.
336
- # Range Optional Float The range of the instrument. Only present if Instrument Type is 0.
337
- if instrument:
338
- instrumentType: varint
339
- _: instrumentType ?
340
- if 0:
341
- soundEvent: string
342
- useDuration: f32
343
- range: f32
243
+ if instrument: ["registryEntryHolder", { "baseName": "instrumentId", "otherwise": { "name": "data", "type": "InstrumentData" } }]
344
244
  if ominous_bottle_amplifier: varint
345
- # Name Type Description
346
- # Direct Mode Boolean Whether the jukebox song is specified directly, or just referenced by name.
347
- # Jukebox Song Name Optional Identifier The name of the jukebox song in its respective registry. Only present if Direct Mode is false.
348
- # Jukebox Song Type Optional VarInt Identifier used to determine the data that follows. It can be either:
349
- # 0 - Directly represents a jukebox song, with the necessary data following.
350
- # Anything else - References a jukebox song in its registry, by the ID of Jukebox Song Type - 1.
351
- # Only present if Direct Mode is true.
352
- # Sound Event Optional Sound Event The sound to be played. Only present if Direct Mode is true and Jukebox Song Type is 0.
353
- # Description Optional Text Component The description shown in the item lore. Only present if Direct Mode is true and Jukebox Song Type is 0.
354
- # Duration Optional Float The duration the songs should play for, in seconds. Only present if Direct Mode is true and Jukebox Song Type is 0.
355
- # Output Optional VarInt The output strength given by a comparator. Between 0 and 15. Only present if Direct Mode is true and Jukebox Song Type is 0.
356
- # Show In Tooltip Boolean Whether the song should be shown on the item's tooltip.
357
245
  if jukebox_playable:
358
- directMode: bool
359
- _: directMode ?
360
- if true:
361
- jukeboxSongName: string
362
- jukeboxSongType: varint
363
- _: jukeboxSongType ?
364
- if 0:
365
- soundEvent:
366
- soundEventType: varint
367
- _: soundEventType ?
368
- if 0:
369
- soundName: string
370
- fixedRange?: f32
371
- description: anonymousNbt
372
- duration: f32
373
- output: varint
374
- if false:
375
- songLocation: string
246
+ hasHolder: bool
247
+ song: hasHolder ?
248
+ if true: ["registryEntryHolder", { "baseName": "songId", "otherwise": { "name": "data", "type": "JukeboxSongData" } }]
249
+ if false: string
376
250
  showInTooltip: bool
377
251
  if recipes: anonymousNbt
378
- # Name Type Description
379
- # Has Global Position Boolean Whether this lodestone points to a position, otherwise it spins randomly.
380
- # Dimension Identifier The dimension the compass points to. Only present if Has Global Position is true.
381
- # Position Position The position the compass points to. Only present if Has Global Position is true.
382
- # Tracked Boolean Whether the component is removed when the associated lodestone is broken.
383
252
  if lodestone_tracker:
253
+ # Specified if this lodestone points to a position; otherwise it spins randomly.
384
254
  globalPosition?:
385
255
  dimension: string
386
- position: vec3f
256
+ # The position the compass points to. Only present if Has Global Position is true.
257
+ position: position
258
+ # Whether the component is removed when the associated lodestone is broken.
387
259
  tracked: bool
388
- # Name Type Description
389
- # Shape VarInt Enum Can be one of the following:
390
- # 0 - Small ball
391
- # 1 - Large ball
392
- # 2 - Star
393
- # 3 - Creeper
394
- # 4 - Burst
395
- # Number Of Colors VarInt The number of elements in the following array.
396
- # Colors Array of Int The RGB components of the color, encoded as an integer.
397
- # Number Of Fade Colors VarInt The number of elements in the following array.
398
- # Fade Colors Array of Int The RGB components of the color, encoded as an integer.
399
- # Has Trail Boolean
400
- # Has Twinkle Boolean
401
- if firework_explosion: FireworkExplosion
260
+ if firework_explosion: ItemFireworkExplosion
402
261
  if fireworks:
403
262
  flightDuration: varint
404
- explosions: FireworkExplosion[]varint
405
- # Name Type Description
406
- # Has Name Boolean
407
- # Name Optional String (16) Only present if Has Name is true.
408
- # Has Unique ID Boolean
409
- # Unique ID Optional UUID Only present if Has Unique ID is true.
410
- # Number of Properties VarInt Number of elements in the following array.
411
- # Property Name Array String (64)
412
- # Value String
413
- # Has Signature Boolean
414
- # Signature String (1024) Only present if Has Signature is true.
263
+ explosions: ItemFireworkExplosion[]varint
415
264
  if profile:
416
- hasName: bool
417
- name: string
418
- hasUniqueId: bool
419
- uniqueId: UUID
265
+ # If the profile has a name, max 16 characters.
266
+ name?: string
267
+ uuid?: UUID
420
268
  properties: []varint
421
- property: string
269
+ # Max 64 characters
270
+ name: string
422
271
  value: string
423
- hasSignature: bool
424
- signature: string
272
+ # Max 1024 characters
273
+ signature?: string
425
274
  if note_block_sound: string
426
- # Name Type Description
427
- # Number of Layers VarInt Number of elements in the following array.
428
- # Layer Pattern Type Array VarInt Identifier used to determine the data that follows. It can be either:
429
- # 0 - Directly represents a pattern, with the necessary data following.
430
- # Anything else - References a pattern in its registry, by the ID of Pattern Type - 1.
431
- # Asset ID Optional Identifier Identifier of the asset. Only present if Pattern Type is 0.
432
- # Translation Key Optional String Only present if Pattern Type is 0.
433
- # Color Dye Color See Dye Color.
434
275
  if banner_patterns:
435
- layers: []varint
436
- patternType: varint
437
- _: patternType ?
438
- if 0:
439
- assetId: string
440
- translationKey: string
441
- color: varint
276
+ layers: BannerPatternLayer[]varint
442
277
  if base_color: varint
443
278
  if pot_decorations:
444
279
  # The ID of the items in the item registry.
445
280
  decorations: varint[]varint
446
281
  if container:
447
282
  contents: Slot[]varint
448
- # Name Type Description
449
- # Number of Properties VarInt Number of elements in the following array.
450
- # Property Name Array String
451
- # Value String
452
283
  if block_state:
453
284
  properties: []varint
454
285
  property: string
455
286
  value: string
456
- # Name Type Description
457
- # Number of Bees VarInt Number of elements in the following array.
458
- # Bee Entity Data Array NBT
459
- # Ticks In Hive VarInt
460
- # Min Ticks In Hive VarInt
461
287
  if bees:
462
288
  bees: []varint
463
289
  # Custom data for the entity, always a Compound Tag. Same structure as the minecraft:custom_data component.
@@ -467,238 +293,227 @@
467
293
  if lock: anonymousNbt
468
294
  if container_loot: anonymousNbt
469
295
 
470
- Slot:
471
- itemCount: i8
472
- _: itemCount ?
473
- if 0: void
474
- default:
475
- itemId: varint
476
- # https://wiki.vg/Slot_Data#Structured_components
477
- # + public static final DataComponentType<CompoundTag> CUSTOM_DATA = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
478
- # + public static final IntComponentType MAX_STACK_SIZE = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
479
- # + public static final IntComponentType MAX_DAMAGE = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
480
- # + public static final IntComponentType DAMAGE = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
481
- # + public static final BooleanComponentType UNBREAKABLE = new BooleanComponentType(ByteBuf::readBoolean, ByteBuf::writeBoolean, BooleanDataComponent::new);
482
- # + public static final DataComponentType<Component> CUSTOM_NAME = new DataComponentType<>(ItemCodecHelper::readComponent, ItemCodecHelper::writeComponent, ObjectDataComponent::new);
483
- # + public static final DataComponentType<Component> ITEM_NAME = new DataComponentType<>(ItemCodecHelper::readComponent, ItemCodecHelper::writeComponent, ObjectDataComponent::new);
484
- # + public static final DataComponentType<List<Component>> LORE = new DataComponentType<>(listReader(ItemCodecHelper::readComponent), listWriter(ItemCodecHelper::writeComponent), ObjectDataComponent::new);
485
- # + public static final IntComponentType RARITY = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
486
- # + public static final DataComponentType<ItemEnchantments> ENCHANTMENTS = new DataComponentType<>(ItemCodecHelper::readItemEnchantments, ItemCodecHelper::writeItemEnchantments, ObjectDataComponent::new);
487
- # + public static final DataComponentType<AdventureModePredicate> CAN_PLACE_ON = new DataComponentType<>(ItemCodecHelper::readAdventureModePredicate, ItemCodecHelper::writeAdventureModePredicate, ObjectDataComponent::new);
488
- # + public static final DataComponentType<AdventureModePredicate> CAN_BREAK = new DataComponentType<>(ItemCodecHelper::readAdventureModePredicate, ItemCodecHelper::writeAdventureModePredicate, ObjectDataComponent::new);
489
- # + public static final DataComponentType<ItemAttributeModifiers> ATTRIBUTE_MODIFIERS = new DataComponentType<>(ItemCodecHelper::readItemAttributeModifiers, ItemCodecHelper::writeItemAttributeModifiers, ObjectDataComponent::new);
490
- # + public static final IntComponentType CUSTOM_MODEL_DATA = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
491
- # + public static final DataComponentType<Unit> HIDE_ADDITIONAL_TOOLTIP = new DataComponentType<>(unitReader(), unitWriter(), ObjectDataComponent::new);
492
- # + public static final DataComponentType<Unit> HIDE_TOOLTIP = new DataComponentType<>(unitReader(), unitWriter(), ObjectDataComponent::new);
493
- # + public static final IntComponentType REPAIR_COST = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
494
- # + public static final DataComponentType<Unit> CREATIVE_SLOT_LOCK = new DataComponentType<>(unitReader(), unitWriter(), ObjectDataComponent::new);
495
- # + public static final BooleanComponentType ENCHANTMENT_GLINT_OVERRIDE = new BooleanComponentType(ByteBuf::readBoolean, ByteBuf::writeBoolean, BooleanDataComponent::new);
496
- # + public static final DataComponentType<CompoundTag> INTANGIBLE_PROJECTILE = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
497
- # + public static final DataComponentType<FoodProperties> FOOD = new DataComponentType<>(ItemCodecHelper::readFoodProperties, ItemCodecHelper::writeFoodProperties, ObjectDataComponent::new);
498
- # + public static final DataComponentType<Unit> FIRE_RESISTANT = new DataComponentType<>(unitReader(), unitWriter(), ObjectDataComponent::new);
499
- # + public static final DataComponentType<ToolData> TOOL = new DataComponentType<>(ItemCodecHelper::readToolData, ItemCodecHelper::writeToolData, ObjectDataComponent::new);
500
- # + public static final DataComponentType<ItemEnchantments> STORED_ENCHANTMENTS = new DataComponentType<>(ItemCodecHelper::readItemEnchantments, ItemCodecHelper::writeItemEnchantments, ObjectDataComponent::new);
501
- # + public static final DataComponentType<DyedItemColor> DYED_COLOR = new DataComponentType<>(ItemCodecHelper::readDyedItemColor, ItemCodecHelper::writeDyedItemColor, ObjectDataComponent::new);
502
- # + public static final IntComponentType MAP_COLOR = new IntComponentType((helper, input) -> input.readInt(), (helper, output, value) -> output.writeInt(value), IntDataComponent::new);
503
- # + public static final IntComponentType MAP_ID = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
504
- # + public static final DataComponentType<CompoundTag> MAP_DECORATIONS = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
505
- # + public static final IntComponentType MAP_POST_PROCESSING = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
506
- # + public static final DataComponentType<List<ItemStack>> CHARGED_PROJECTILES = new DataComponentType<>(listReader(ItemCodecHelper::readItemStack), listWriter(ItemCodecHelper::writeItemStack), ObjectDataComponent::new);
507
- # + public static final DataComponentType<List<ItemStack>> BUNDLE_CONTENTS = new DataComponentType<>(listReader(ItemCodecHelper::readItemStack), listWriter(ItemCodecHelper::writeItemStack), ObjectDataComponent::new);
508
- # + public static final DataComponentType<PotionContents> POTION_CONTENTS = new DataComponentType<>(ItemCodecHelper::readPotionContents, ItemCodecHelper::writePotionContents, ObjectDataComponent::new);
509
- # + public static final DataComponentType<List<SuspiciousStewEffect>> SUSPICIOUS_STEW_EFFECTS = new DataComponentType<>(listReader(ItemCodecHelper::readStewEffect), listWriter(ItemCodecHelper::writeStewEffect), ObjectDataComponent::new);
510
- # + public static final DataComponentType<WritableBookContent> WRITABLE_BOOK_CONTENT = new DataComponentType<>(ItemCodecHelper::readWritableBookContent, ItemCodecHelper::writeWritableBookContent, ObjectDataComponent::new);
511
- # + public static final DataComponentType<WrittenBookContent> WRITTEN_BOOK_CONTENT = new DataComponentType<>(ItemCodecHelper::readWrittenBookContent, ItemCodecHelper::writeWrittenBookContent, ObjectDataComponent::new);
512
- # + public static final DataComponentType<ArmorTrim> TRIM = new DataComponentType<>(ItemCodecHelper::readArmorTrim, ItemCodecHelper::writeArmorTrim, ObjectDataComponent::new);
513
- # + public static final DataComponentType<CompoundTag> DEBUG_STICK_STATE = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
514
- # + public static final DataComponentType<CompoundTag> ENTITY_DATA = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
515
- # + public static final DataComponentType<CompoundTag> BUCKET_ENTITY_DATA = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
516
- # + public static final DataComponentType<CompoundTag> BLOCK_ENTITY_DATA = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
517
- # + public static final DataComponentType<Holder<Instrument>> INSTRUMENT = new DataComponentType<>(ItemCodecHelper::readInstrument, ItemCodecHelper::writeInstrument, ObjectDataComponent::new);
518
- # + public static final IntComponentType OMINOUS_BOTTLE_AMPLIFIER = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
519
- # + public static final DataComponentType<ListTag> RECIPES = new DataComponentType<>(ItemCodecHelper::readRecipes, ItemCodecHelper::writeRecipes, ObjectDataComponent::new);
520
- # + public static final DataComponentType<LodestoneTracker> LODESTONE_TRACKER = new DataComponentType<>(ItemCodecHelper::readLodestoneTarget, ItemCodecHelper::writeLodestoneTarget, ObjectDataComponent::new);
521
- # + public static final DataComponentType<Fireworks.FireworkExplosion> FIREWORK_EXPLOSION = new DataComponentType<>(ItemCodecHelper::readFireworkExplosion, ItemCodecHelper::writeFireworkExplosion, ObjectDataComponent::new);
522
- # + public static final DataComponentType<Fireworks> FIREWORKS = new DataComponentType<>(ItemCodecHelper::readFireworks, ItemCodecHelper::writeFireworks, ObjectDataComponent::new);
523
- # + public static final DataComponentType<GameProfile> PROFILE = new DataComponentType<>(ItemCodecHelper::readResolvableProfile, ItemCodecHelper::writeResolvableProfile, ObjectDataComponent::new);
524
- # + public static final DataComponentType<String> NOTE_BLOCK_SOUND = new DataComponentType<>(ItemCodecHelper::readResourceLocation, ItemCodecHelper::writeResourceLocation, ObjectDataComponent::new);
525
- # + public static final DataComponentType<List<BannerPatternLayer>> BANNER_PATTERNS = new DataComponentType<>(listReader(ItemCodecHelper::readBannerPatternLayer), listWriter(ItemCodecHelper::writeBannerPatternLayer), ObjectDataComponent::new);
526
- # + public static final IntComponentType BASE_COLOR = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
527
- # + public static final DataComponentType<List<Integer>> POT_DECORATIONS = new DataComponentType<>(listReader(ItemCodecHelper::readVarInt), listWriter(ItemCodecHelper::writeVarInt), ObjectDataComponent::new);
528
- # + public static final DataComponentType<List<ItemStack>> CONTAINER = new DataComponentType<>(listReader(ItemCodecHelper::readOptionalItemStack), listWriter(MinecraftCodecHelper::writeOptionalItemStack), ObjectDataComponent::new);
529
- # + public static final DataComponentType<BlockStateProperties> BLOCK_STATE = new DataComponentType<>(ItemCodecHelper::readBlockStateProperties, ItemCodecHelper::writeBlockStateProperties, ObjectDataComponent::new);
530
- # + public static final DataComponentType<List<BeehiveOccupant>> BEES = new DataComponentType<>(listReader(ItemCodecHelper::readBeehiveOccupant), listWriter(ItemCodecHelper::writeBeehiveOccupant), ObjectDataComponent::new);
531
- # + public static final DataComponentType<StringTag> LOCK = new DataComponentType<>(ItemCodecHelper::readLock, ItemCodecHelper::writeLock, ObjectDataComponent::new);
532
- # + public static final DataComponentType<CompoundTag> CONTAINER_LOOT = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
533
- addedComponentCount: varint
534
- removedComponentCount: varint
535
- components: SlotComponent[]$addedComponentCount
536
- removeComponents: []$removedComponentCount
537
- type: SlotComponentType
296
+ ItemSoundEvent:
297
+ soundName: string
298
+ fixedRange?: f32
299
+ ItemSoundHolder: ["registryEntryHolder", {
300
+ "baseName": "soundId",
301
+ "otherwise": { name: "data", type: "ItemSoundEvent" }
302
+ }]
538
303
 
539
- FireworkExplosion:
304
+ ItemFireworkExplosion:
540
305
  shape: varint =>
541
- - small_ball
542
- - large_ball
543
- - star
544
- - creeper
545
- - burst
306
+ - small_ball
307
+ - large_ball
308
+ - star
309
+ - creeper
310
+ - burst
311
+ # The RGB components of the color, encoded as an integer.
546
312
  colors: i32[]varint
313
+ # The RGB components of the color, encoded as an integer.
547
314
  fadeColors: i32[]varint
315
+ # Whether the firework has a trail.
548
316
  hasTrail: bool
317
+ # Whether the firework has a twinkle effect.
549
318
  hasTwinkle: bool
550
319
 
551
- BookPage:
552
- content: string
553
- filteredContent?: string
554
-
555
- EffectDetail:
320
+ ItemEffectDetail:
556
321
  amplifier: varint
557
322
  duration: varint
558
323
  ambient: bool
559
324
  showParticles: bool
560
325
  showIcon: bool
561
- hiddenEffect?: EffectDetail
326
+ hiddenEffect?: ItemEffectDetail
562
327
 
563
- BlockSet:
564
- type: varint
565
- name: type ?
566
- if 0: string
567
- default: void
568
- # TODO: This will require a custom type ; we need type - 1 length of blockIds
569
- blockIds: type ?
570
- if 0: void
571
- default: ["arrayWithLengthOffset", {"count": "type", "type": "varint", "lengthOffset": -1}]
328
+ ItemPotionEffect:
329
+ id: varint
330
+ details: ItemEffectDetail
572
331
 
573
- BlockProperty:
574
- # Name of the block state property.
332
+ ItemBlockProperty:
575
333
  name: string
576
- # Whether this is an exact value match, as opposed to ranged.
577
334
  isExactMatch: bool
578
- # Value of the block state property. Only present in exact match mode.
579
- exactValue?: string
580
- # Minimum value of the block state property range. Only present in ranged match mode.
581
- minValue?: string
582
- # Maximum value of the block state property range. Only present in ranged match mode.
583
- maxValue?: string
335
+ value: isExactMatch ?
336
+ if true:
337
+ exactValue: string
338
+ if false:
339
+ minValue: string
340
+ maxValue: string
341
+
584
342
 
585
- BlockPredicate:
586
- blockSet?: BlockSet[]varint
587
- properties?: BlockProperty[]varint
343
+ ItemBlockPredicate:
344
+ blockSet?: ["registryEntryHolderSet", {
345
+ "base": { name: "name", type: "string" },
346
+ "otherwise": { name: "blockIds", type: "varint" }
347
+ }]
348
+ properties?: ItemBlockProperty[]varint
588
349
  nbt: anonOptionalNbt
589
350
 
351
+ ItemBookPage:
352
+ # The raw text of the page. TextComponent, max 1024 characters.
353
+ content: string
354
+ filteredContent?: string
355
+ ItemWrittenBookPage:
356
+ content: anonymousNbt
357
+ filteredContent: anonOptionalNbt
358
+
359
+ ArmorTrimMaterial:
360
+ assetName: string
361
+ ingredientId: varint
362
+ overrideArmorAssets: []varint
363
+ key: string
364
+ value: string
365
+ description: anonymousNbt
366
+
367
+ ArmorTrimPattern:
368
+ assetId: string
369
+ templateItemId: varint
370
+ description: anonymousNbt
371
+ decal: bool
372
+
373
+ InstrumentData:
374
+ soundEvent: ItemSoundHolder
375
+ useDuration: f32
376
+ range: f32
377
+ description: anonymousNbt
378
+
379
+ JukeboxSongData:
380
+ soundEvent: ItemSoundHolder
381
+ description: anonymousNbt
382
+ lengthInSeconds: f32
383
+ comparatorOutput: varint
384
+
385
+ BannerPattern:
386
+ assetId: string
387
+ translationKey: string
388
+ BannerPatternLayer:
389
+ pattern: ["registryEntryHolder", { "baseName": "patternId", "otherwise": { "name": "data", "type": "BannerPattern" } }]
390
+ colorId: varint
391
+
392
+ Slot:
393
+ itemCount: varint
394
+ _: itemCount ?
395
+ if 0: void
396
+ default:
397
+ itemId: varint
398
+ # https://wiki.vg/Slot_Data#Structured_components
399
+ addedComponentCount: varint
400
+ removedComponentCount: varint
401
+ components: SlotComponent[]$addedComponentCount
402
+ removeComponents: []$removedComponentCount
403
+ type: SlotComponentType
404
+
590
405
  Particle:
591
406
  # See client/net/minecraft/core/particles/ParticleTypes.java
592
407
  type: varint =>
593
- - angry_villager
594
- - block
595
- - block_marker
596
- - bubble
597
- - cloud
598
- - crit
599
- - damage_indicator
600
- - dragon_breath
601
- - dripping_lava
602
- - falling_lava
603
- - landing_lava
604
- - dripping_water
605
- - falling_water
606
- - dust
607
- - dust_color_transition
608
- - effect
609
- - elder_guardian
610
- - enchanted_hit
611
- - enchant
612
- - end_rod
613
- - entity_effect
614
- - explosion_emitter
615
- - explosion
616
- - gust
617
- - small_gust
618
- - gust_emitter_large
619
- - gust_emitter_small
620
- - sonic_boom
621
- - falling_dust
622
- - firework
623
- - fishing
624
- - flame
625
- - infested
626
- - cherry_leaves
627
- - sculk_soul
628
- - sculk_charge
629
- - sculk_charge_pop
630
- - soul_fire_flame
631
- - soul
632
- - flash
633
- - happy_villager
634
- - composter
635
- - heart
636
- - instant_effect
637
- - item
638
- - vibration
639
- - item_slime
640
- - item_cobweb
641
- - item_snowball
642
- - large_smoke
643
- - lava
644
- - mycelium
645
- - note
646
- - poof
647
- - portal
648
- - rain
649
- - smoke
650
- - white_smoke
651
- - sneeze
652
- - spit
653
- - squid_ink
654
- - sweep_attack
655
- - totem_of_undying
656
- - underwater
657
- - splash
658
- - witch
659
- - bubble_pop
660
- - current_down
661
- - bubble_column_up
662
- - nautilus
663
- - dolphin
664
- - campfire_cosy_smoke
665
- - campfire_signal_smoke
666
- - dripping_honey
667
- - falling_honey
668
- - landing_honey
669
- - falling_nectar
670
- - falling_spore_blossom
671
- - ash
672
- - crimson_spore
673
- - warped_spore
674
- - spore_blossom_air
675
- - dripping_obsidian_tear
676
- - falling_obsidian_tear
677
- - landing_obsidian_tear
678
- - reverse_portal
679
- - white_ash
680
- - small_flame
681
- - snowflake
682
- - dripping_dripstone_lava
683
- - falling_dripstone_lava
684
- - dripping_dripstone_water
685
- - falling_dripstone_water
686
- - glow_squid_ink
687
- - glow
688
- - wax_on
689
- - wax_off
690
- - electric_spark
691
- - scrape
692
- - shriek
693
- - egg_crack
694
- - dust_plume
695
- - trial_spawner_detected_player
696
- - trial_spawner_detected_player_ominous
697
- - vault_connection
698
- - dust_pillar
699
- - ominous_spawning
700
- - raid_omen
701
- - trial_omen
408
+ - angry_villager
409
+ - block
410
+ - block_marker
411
+ - bubble
412
+ - cloud
413
+ - crit
414
+ - damage_indicator
415
+ - dragon_breath
416
+ - dripping_lava
417
+ - falling_lava
418
+ - landing_lava
419
+ - dripping_water
420
+ - falling_water
421
+ - dust
422
+ - dust_color_transition
423
+ - effect
424
+ - elder_guardian
425
+ - enchanted_hit
426
+ - enchant
427
+ - end_rod
428
+ - entity_effect
429
+ - explosion_emitter
430
+ - explosion
431
+ - gust
432
+ - small_gust
433
+ - gust_emitter_large
434
+ - gust_emitter_small
435
+ - sonic_boom
436
+ - falling_dust
437
+ - firework
438
+ - fishing
439
+ - flame
440
+ - infested
441
+ - cherry_leaves
442
+ - sculk_soul
443
+ - sculk_charge
444
+ - sculk_charge_pop
445
+ - soul_fire_flame
446
+ - soul
447
+ - flash
448
+ - happy_villager
449
+ - composter
450
+ - heart
451
+ - instant_effect
452
+ - item
453
+ - vibration
454
+ - item_slime
455
+ - item_cobweb
456
+ - item_snowball
457
+ - large_smoke
458
+ - lava
459
+ - mycelium
460
+ - note
461
+ - poof
462
+ - portal
463
+ - rain
464
+ - smoke
465
+ - white_smoke
466
+ - sneeze
467
+ - spit
468
+ - squid_ink
469
+ - sweep_attack
470
+ - totem_of_undying
471
+ - underwater
472
+ - splash
473
+ - witch
474
+ - bubble_pop
475
+ - current_down
476
+ - bubble_column_up
477
+ - nautilus
478
+ - dolphin
479
+ - campfire_cosy_smoke
480
+ - campfire_signal_smoke
481
+ - dripping_honey
482
+ - falling_honey
483
+ - landing_honey
484
+ - falling_nectar
485
+ - falling_spore_blossom
486
+ - ash
487
+ - crimson_spore
488
+ - warped_spore
489
+ - spore_blossom_air
490
+ - dripping_obsidian_tear
491
+ - falling_obsidian_tear
492
+ - landing_obsidian_tear
493
+ - reverse_portal
494
+ - white_ash
495
+ - small_flame
496
+ - snowflake
497
+ - dripping_dripstone_lava
498
+ - falling_dripstone_lava
499
+ - dripping_dripstone_water
500
+ - falling_dripstone_water
501
+ - glow_squid_ink
502
+ - glow
503
+ - wax_on
504
+ - wax_off
505
+ - electric_spark
506
+ - scrape
507
+ - shriek
508
+ - egg_crack
509
+ - dust_plume
510
+ - trial_spawner_detected_player
511
+ - trial_spawner_detected_player_ominous
512
+ - vault_connection
513
+ - dust_pillar
514
+ - ominous_spawning
515
+ - raid_omen
516
+ - trial_omen
702
517
  ## ## Tips for reviewing particle data (as of 1.20.5)
703
518
  ## Inside the registry code, each particle can have an associated "options" type and
704
519
  ## each options type can add additional data to be encoded.
@@ -733,14 +548,14 @@
733
548
  if sculk_charge: f32
734
549
  if shriek: varint
735
550
  if vibration:
736
- position_type: varint =>
551
+ positionType: varint =>
737
552
  - block
738
553
  - entity
739
- position: position_type ?
554
+ position: positionType ?
740
555
  if block: position
741
556
  if entity:
742
557
  entityId: varint
743
- entity_eye_height: f32
558
+ entityEyeHeight: f32
744
559
  ticks: varint
745
560
  ingredient: Slot[]varint
746
561
  position: [
@@ -857,19 +672,26 @@
857
672
  }]
858
673
  if frog_variant: varint
859
674
  if optional_global_pos: ["option", "string"]
860
- if painting_variant:
861
- width: varint
862
- height: varint
863
- assetId: string
675
+ if painting_variant: ["registryEntryHolder", {
676
+ "baseName": "variantId",
677
+ "otherwise": { name: "variantData", type: "EntityMetadataPaintingVariant" }
678
+ }]
864
679
  if sniffer_state: varint
865
680
  if armadillo_state: varint
866
681
  if vector3: vec3f
867
682
  if quaternion: vec4f
683
+ EntityMetadataPaintingVariant:
684
+ width: i32
685
+ height: i32
686
+ assetId: string
687
+ title?: anonymousNbt
688
+ author?: anonymousNbt
868
689
  EntityMetadataWolfVariant:
869
690
  wildTexture: string
870
691
  tameTexture: string
871
692
  angryTexture: string
872
693
  biome: IDSet
694
+
873
695
  entityMetadata: ["entityMetadataLoop", { "endVal": 255, "type": "entityMetadataEntry" }]
874
696
  minecraft_simple_recipe_format:
875
697
  category: varint
@@ -921,7 +743,7 @@
921
743
  game_profile:
922
744
  name: string
923
745
  properties: []varint
924
- key: string
746
+ name: string
925
747
  value: string
926
748
  signature?: string
927
749
  command_node:
@@ -1221,6 +1043,16 @@
1221
1043
  # These are packets that are shared between multiple states.
1222
1044
  # They are defined here to avoid duplication.
1223
1045
  # =====
1046
+ # MC: ServerboundClientInformationPacket
1047
+ packet_common_settings:
1048
+ locale: string
1049
+ viewDistance: i8
1050
+ chatFlags: varint
1051
+ chatColors: bool
1052
+ skinParts: u8
1053
+ mainHand: varint
1054
+ enableTextFiltering: bool
1055
+ enableServerListing: bool
1224
1056
  # MC: ClientboundCookieRequestPacket
1225
1057
  packet_common_cookie_request:
1226
1058
  cookie: string
@@ -1243,23 +1075,33 @@
1243
1075
  namespace: string
1244
1076
  id: string
1245
1077
  version: string
1078
+ # MC: ClientboundResourcePackPopPacket
1079
+ packet_common_remove_resource_pack:
1080
+ uuid?: UUID
1081
+ # MC: ClientboundResourcePackPushPacket
1082
+ packet_common_add_resource_pack:
1083
+ uuid: UUID
1084
+ url: string
1085
+ hash: string
1086
+ forced: bool
1087
+ promptMessage?: anonymousNbt
1246
1088
  # MC: ClientboundCustomReportDetailsPacket
1247
- packet_common_custom_report_details:
1089
+ packet_common_custom_report_details: # 1.21.1
1248
1090
  details: []varint
1249
1091
  key: string
1250
1092
  value: string
1251
1093
 
1252
1094
  ServerLinkType: varint =>
1253
- - bug_report
1254
- - community_guidelines
1255
- - support
1256
- - status
1257
- - feedback
1258
- - community
1259
- - website
1260
- - forums
1261
- - news
1262
- - announcements
1095
+ - bug_report
1096
+ - community_guidelines
1097
+ - support
1098
+ - status
1099
+ - feedback
1100
+ - community
1101
+ - website
1102
+ - forums
1103
+ - news
1104
+ - announcements
1263
1105
  # MC: ClientboundServerLinksPacket
1264
1106
  # This packet contains a list of links that the Notchian client will display in the menu
1265
1107
  # available from the pause menu. Link labels can be built-in or custom (i.e., any text).
@@ -1440,16 +1282,6 @@
1440
1282
  entries: []varint
1441
1283
  key: string
1442
1284
  value?: anonymousNbt
1443
- # MC: ClientboundResourcePackPopPacket
1444
- packet_remove_resource_pack:
1445
- uuid?: UUID
1446
- # MC: ClientboundResourcePackPushPacket
1447
- packet_add_resource_pack:
1448
- uuid: UUID
1449
- url: string
1450
- hash: string
1451
- forced: bool
1452
- promptMessage?: anonymousNbt
1453
1285
  ## (Store cookie and Transfer are Common) ##
1454
1286
  # MC: ClientboundUpdateEnabledFeaturesPacket
1455
1287
  packet_feature_flags:
@@ -1488,8 +1320,8 @@
1488
1320
  if ping: packet_ping
1489
1321
  if reset_chat: packet_reset_chat
1490
1322
  if registry_data: packet_registry_data
1491
- if remove_resource_pack: packet_remove_resource_pack
1492
- if add_resource_pack: packet_add_resource_pack
1323
+ if remove_resource_pack: packet_common_remove_resource_pack
1324
+ if add_resource_pack: packet_common_add_resource_pack
1493
1325
  if store_cookie: packet_common_store_cookie
1494
1326
  if transfer: packet_common_transfer
1495
1327
  if feature_flags: packet_feature_flags
@@ -1498,16 +1330,7 @@
1498
1330
  if custom_report_details: packet_common_custom_report_details
1499
1331
  if server_links: packet_common_server_links
1500
1332
  ^configuration.toServer.types:
1501
- # MC: ServerboundClientInformationPacket
1502
- packet_settings:
1503
- locale: string
1504
- viewDistance: i8
1505
- chatFlags: varint
1506
- chatColors: bool
1507
- skinParts: u8
1508
- mainHand: varint
1509
- enableTextFiltering: bool
1510
- enableServerListing: bool
1333
+ ## (Settings is Common) ##
1511
1334
  ## (Cookie Response is Common) ##
1512
1335
  # MC: ServerboundCustomPayloadPacket
1513
1336
  packet_custom_payload:
@@ -1539,7 +1362,7 @@
1539
1362
  - custom_report_details
1540
1363
  - server_links
1541
1364
  params: name ?
1542
- if settings: packet_settings
1365
+ if settings: packet_common_settings
1543
1366
  if cookie_response: packet_common_cookie_response
1544
1367
  if custom_payload: packet_custom_payload
1545
1368
  if finish_configuration: packet_finish_configuration
@@ -1550,7 +1373,6 @@
1550
1373
  if custom_report_details: packet_common_custom_report_details
1551
1374
  if server_links: packet_common_server_links
1552
1375
  ^play.toClient.types:
1553
- # World state information for spawn and respawn packets
1554
1376
  # World state information for spawn and respawn packets
1555
1377
  SpawnInfo:
1556
1378
  dimension: varint
@@ -1680,21 +1502,21 @@
1680
1502
  rootIndex: varint
1681
1503
  # MC: ClientboundContainerClosePacket
1682
1504
  packet_close_window:
1683
- windowId: u8
1505
+ windowId: ContainerID
1684
1506
  # MC: ClientboundContainerSetContentPacket
1685
1507
  packet_window_items:
1686
- windowId: u8
1508
+ windowId: ContainerID
1687
1509
  stateId: varint
1688
1510
  items: Slot[]varint
1689
1511
  carriedItem: Slot
1690
1512
  # MC: ClientboundContainerSetDataPacket
1691
1513
  packet_craft_progress_bar:
1692
- windowId: u8
1514
+ windowId: ContainerID
1693
1515
  property: i16
1694
1516
  value: i16
1695
1517
  # MC: ClientboundContainerSetSlotPacket
1696
1518
  packet_set_slot:
1697
- windowId: i8
1519
+ windowId: ContainerID
1698
1520
  stateId: varint
1699
1521
  slot: i16
1700
1522
  item: Slot
@@ -1748,18 +1570,14 @@
1748
1570
  parameters: ChatTypeParameterType[]varint
1749
1571
  style: anonymousNbt
1750
1572
  ChatTypes:
1751
- # Either the extra data is retrieved from the registry (via this ID+1 if non-zero), or it's supplied inline in the chat packet
1752
- registryIndex: varint
1753
- _: registryIndex ?
1754
- if 0:
1755
- chat: ChatType
1756
- narration: ChatType
1757
- default: void
1573
+ chat: ChatType
1574
+ narration: ChatType
1575
+ ChatTypesHolder: ["registryEntryHolder", { "baseName": "chatType", "otherwise": { name: "data", type: "ChatTypes" } }]
1758
1576
 
1759
1577
  # MC: ClientboundDisguisedChatPacket
1760
1578
  packet_profileless_chat:
1761
1579
  message: anonymousNbt
1762
- type: ChatTypes
1580
+ type: ChatTypesHolder
1763
1581
  name: anonymousNbt
1764
1582
  target?: anonymousNbt
1765
1583
  # MC: ClientboundEntityEventPacket
@@ -1782,13 +1600,7 @@
1782
1600
  block_interaction_type: varint
1783
1601
  small_explosion_particle: Particle
1784
1602
  large_explosion_particle: Particle
1785
- soundId: varint
1786
- _: soundId ?
1787
- if 0:
1788
- soundName: string
1789
- range?: f32
1790
- default:
1791
-
1603
+ sound: ItemSoundHolder
1792
1604
  # MC: ClientboundForgetLevelChunkPacket
1793
1605
  packet_unload_chunk:
1794
1606
  chunkZ: i32
@@ -1799,7 +1611,7 @@
1799
1611
  gameMode: f32
1800
1612
  # MC: ClientboundHorseScreenOpenPacket
1801
1613
  packet_open_horse_window:
1802
- windowId: u8
1614
+ windowId: ContainerID
1803
1615
  nbSlots: varint
1804
1616
  entityId: i32
1805
1617
  # MC: ClientboundHurtAnimationPacket
@@ -1913,7 +1725,7 @@
1913
1725
  ]
1914
1726
  # MC: ClientboundMerchantOffersPacket
1915
1727
  packet_trade_list:
1916
- windowId: varint
1728
+ windowId: ContainerID
1917
1729
  ## https://github.com/extremeheat/extracted_minecraft_data/blob/client1.20.5/client/net/minecraft/world/item/trading/MerchantOffer.java#L210
1918
1730
  trades: []varint
1919
1731
  inputItem1:
@@ -1987,7 +1799,7 @@
1987
1799
  id: i64
1988
1800
  # MC: ClientboundPlaceGhostRecipePacket
1989
1801
  packet_craft_recipe_response:
1990
- windowId: i8
1802
+ windowId: ContainerID
1991
1803
  recipe: string
1992
1804
  # MC: ClientboundPlayerAbilitiesPacket
1993
1805
  packet_abilities:
@@ -2013,7 +1825,7 @@
2013
1825
  filterTypeMask: filterType ?
2014
1826
  if 2: i64[]varint
2015
1827
  default: void
2016
- type: ChatTypes
1828
+ type: ChatTypesHolder
2017
1829
  networkName: anonymousNbt
2018
1830
  networkTargetName?: anonymousNbt
2019
1831
  # MC: ClientboundPlayerCombatEndPacket
@@ -2031,308 +1843,37 @@
2031
1843
  players: UUID[]varint
2032
1844
  # MC: ClientboundPlayerInfoUpdatePacket
2033
1845
  packet_player_info:
2034
- action: i8
1846
+ ## ClientboundPlayerInfoUpdatePacket.java#L160
1847
+ action: ["bitflags", {
1848
+ "type": "u8",
1849
+ "flags": [
1850
+ "add_player",
1851
+ "initialize_chat",
1852
+ "update_game_mode",
1853
+ "update_listed",
1854
+ "update_latency",
1855
+ "update_display_name"
1856
+ ]
1857
+ }]
2035
1858
  data: []varint
2036
1859
  uuid: UUID
2037
- player: ../action ?
2038
- if 1: game_profile
2039
- if 3: game_profile
2040
- if 5: game_profile
2041
- if 7: game_profile
2042
- if 9: game_profile
2043
- if 11: game_profile
2044
- if 13: game_profile
2045
- if 15: game_profile
2046
- if 17: game_profile
2047
- if 19: game_profile
2048
- if 21: game_profile
2049
- if 23: game_profile
2050
- if 25: game_profile
2051
- if 27: game_profile
2052
- if 29: game_profile
2053
- if 31: game_profile
2054
- if 33: game_profile
2055
- if 35: game_profile
2056
- if 37: game_profile
2057
- if 39: game_profile
2058
- if 41: game_profile
2059
- if 43: game_profile
2060
- if 45: game_profile
2061
- if 47: game_profile
2062
- if 49: game_profile
2063
- if 51: game_profile
2064
- if 53: game_profile
2065
- if 55: game_profile
2066
- if 57: game_profile
2067
- if 59: game_profile
2068
- if 61: game_profile
2069
- if 63: game_profile
1860
+ player: ../action/add_player ?
1861
+ if true: game_profile
2070
1862
  default: void
2071
- chatSession: ../action ?
2072
- if 2: chat_session
2073
- if 3: chat_session
2074
- if 6: chat_session
2075
- if 7: chat_session
2076
- if 10: chat_session
2077
- if 11: chat_session
2078
- if 14: chat_session
2079
- if 15: chat_session
2080
- if 18: chat_session
2081
- if 19: chat_session
2082
- if 22: chat_session
2083
- if 23: chat_session
2084
- if 26: chat_session
2085
- if 27: chat_session
2086
- if 30: chat_session
2087
- if 31: chat_session
2088
- if 34: chat_session
2089
- if 35: chat_session
2090
- if 38: chat_session
2091
- if 39: chat_session
2092
- if 42: chat_session
2093
- if 43: chat_session
2094
- if 46: chat_session
2095
- if 47: chat_session
2096
- if 50: chat_session
2097
- if 51: chat_session
2098
- if 54: chat_session
2099
- if 55: chat_session
2100
- if 58: chat_session
2101
- if 59: chat_session
2102
- if 62: chat_session
2103
- if 63: chat_session
1863
+ chatSession: ../action/initialize_chat ?
1864
+ if true: chat_session
2104
1865
  default: void
2105
- gamemode: ../action ?
2106
- if 4: varint
2107
- if 5: varint
2108
- if 6: varint
2109
- if 7: varint
2110
- if 12: varint
2111
- if 13: varint
2112
- if 14: varint
2113
- if 15: varint
2114
- if 20: varint
2115
- if 21: varint
2116
- if 22: varint
2117
- if 23: varint
2118
- if 28: varint
2119
- if 29: varint
2120
- if 30: varint
2121
- if 31: varint
2122
- if 36: varint
2123
- if 37: varint
2124
- if 38: varint
2125
- if 39: varint
2126
- if 44: varint
2127
- if 45: varint
2128
- if 46: varint
2129
- if 47: varint
2130
- if 52: varint
2131
- if 53: varint
2132
- if 54: varint
2133
- if 55: varint
2134
- if 60: varint
2135
- if 61: varint
2136
- if 62: varint
2137
- if 63: varint
1866
+ gamemode: ../action/update_game_mode ?
1867
+ if true: varint
2138
1868
  default: void
2139
- listed: ../action ?
2140
- if 8: bool
2141
- if 9: bool
2142
- if 10: bool
2143
- if 11: bool
2144
- if 12: bool
2145
- if 13: bool
2146
- if 14: bool
2147
- if 15: bool
2148
- if 24: bool
2149
- if 25: bool
2150
- if 26: bool
2151
- if 27: bool
2152
- if 28: bool
2153
- if 29: bool
2154
- if 30: bool
2155
- if 31: bool
2156
- if 40: bool
2157
- if 41: bool
2158
- if 42: bool
2159
- if 43: bool
2160
- if 44: bool
2161
- if 45: bool
2162
- if 46: bool
2163
- if 47: bool
2164
- if 56: bool
2165
- if 57: bool
2166
- if 58: bool
2167
- if 59: bool
2168
- if 60: bool
2169
- if 61: bool
2170
- if 62: bool
2171
- if 63: bool
1869
+ listed: ../action/update_listed ?
1870
+ if true: varint
2172
1871
  default: void
2173
- latency: ../action ?
2174
- if 16: varint
2175
- if 17: varint
2176
- if 18: varint
2177
- if 19: varint
2178
- if 20: varint
2179
- if 21: varint
2180
- if 22: varint
2181
- if 23: varint
2182
- if 24: varint
2183
- if 25: varint
2184
- if 26: varint
2185
- if 27: varint
2186
- if 28: varint
2187
- if 29: varint
2188
- if 30: varint
2189
- if 31: varint
2190
- if 48: varint
2191
- if 49: varint
2192
- if 50: varint
2193
- if 51: varint
2194
- if 52: varint
2195
- if 53: varint
2196
- if 54: varint
2197
- if 55: varint
2198
- if 56: varint
2199
- if 57: varint
2200
- if 58: varint
2201
- if 59: varint
2202
- if 60: varint
2203
- if 61: varint
2204
- if 62: varint
2205
- if 63: varint
1872
+ latency: ../action/update_latency ?
1873
+ if true: varint
2206
1874
  default: void
2207
- displayName: ../action ?
2208
- if 32: [
2209
- "option",
2210
- "anonymousNbt"
2211
- ]
2212
- if 33: [
2213
- "option",
2214
- "anonymousNbt"
2215
- ]
2216
- if 34: [
2217
- "option",
2218
- "anonymousNbt"
2219
- ]
2220
- if 35: [
2221
- "option",
2222
- "anonymousNbt"
2223
- ]
2224
- if 36: [
2225
- "option",
2226
- "anonymousNbt"
2227
- ]
2228
- if 37: [
2229
- "option",
2230
- "anonymousNbt"
2231
- ]
2232
- if 38: [
2233
- "option",
2234
- "anonymousNbt"
2235
- ]
2236
- if 39: [
2237
- "option",
2238
- "anonymousNbt"
2239
- ]
2240
- if 40: [
2241
- "option",
2242
- "anonymousNbt"
2243
- ]
2244
- if 41: [
2245
- "option",
2246
- "anonymousNbt"
2247
- ]
2248
- if 42: [
2249
- "option",
2250
- "anonymousNbt"
2251
- ]
2252
- if 43: [
2253
- "option",
2254
- "anonymousNbt"
2255
- ]
2256
- if 44: [
2257
- "option",
2258
- "anonymousNbt"
2259
- ]
2260
- if 45: [
2261
- "option",
2262
- "anonymousNbt"
2263
- ]
2264
- if 46: [
2265
- "option",
2266
- "anonymousNbt"
2267
- ]
2268
- if 47: [
2269
- "option",
2270
- "anonymousNbt"
2271
- ]
2272
- if 48: [
2273
- "option",
2274
- "anonymousNbt"
2275
- ]
2276
- if 49: [
2277
- "option",
2278
- "anonymousNbt"
2279
- ]
2280
- if 50: [
2281
- "option",
2282
- "anonymousNbt"
2283
- ]
2284
- if 51: [
2285
- "option",
2286
- "anonymousNbt"
2287
- ]
2288
- if 52: [
2289
- "option",
2290
- "anonymousNbt"
2291
- ]
2292
- if 53: [
2293
- "option",
2294
- "anonymousNbt"
2295
- ]
2296
- if 54: [
2297
- "option",
2298
- "anonymousNbt"
2299
- ]
2300
- if 55: [
2301
- "option",
2302
- "anonymousNbt"
2303
- ]
2304
- if 56: [
2305
- "option",
2306
- "anonymousNbt"
2307
- ]
2308
- if 57: [
2309
- "option",
2310
- "anonymousNbt"
2311
- ]
2312
- if 58: [
2313
- "option",
2314
- "anonymousNbt"
2315
- ]
2316
- if 59: [
2317
- "option",
2318
- "anonymousNbt"
2319
- ]
2320
- if 60: [
2321
- "option",
2322
- "anonymousNbt"
2323
- ]
2324
- if 61: [
2325
- "option",
2326
- "anonymousNbt"
2327
- ]
2328
- if 62: [
2329
- "option",
2330
- "anonymousNbt"
2331
- ]
2332
- if 63: [
2333
- "option",
2334
- "anonymousNbt"
2335
- ]
1875
+ displayName: ../action/update_display_name ?
1876
+ if true: ["option", "anonymousNbt"]
2336
1877
  default: void
2337
1878
  # MC: ClientboundPlayerLookAtPacket
2338
1879
  packet_face_player:
@@ -2347,6 +1888,12 @@
2347
1888
  entity_feet_eyes: isEntity ?
2348
1889
  if true: varint
2349
1890
  default: void
1891
+
1892
+ # Relative.java
1893
+ PositionUpdateRelatives: ["bitflags", {
1894
+ "type": "u8",
1895
+ "flags": ["x", "y", "z", "yaw", "pitch"]
1896
+ }]
2350
1897
  # MC: ClientboundPlayerPositionPacket
2351
1898
  packet_position:
2352
1899
  x: f64
@@ -2354,7 +1901,7 @@
2354
1901
  z: f64
2355
1902
  yaw: f32
2356
1903
  pitch: f32
2357
- flags: i8
1904
+ flags: PositionUpdateRelatives
2358
1905
  teleportId: varint
2359
1906
  # MC: ClientboundRecipePacket
2360
1907
  packet_unlock_recipes:
@@ -2382,16 +1929,6 @@
2382
1929
  packet_reset_score:
2383
1930
  entity_name: string
2384
1931
  objective_name?: string
2385
- # MC: ClientboundResourcePackPopPacket
2386
- packet_remove_resource_pack:
2387
- uuid?: UUID
2388
- # MC: ClientboundResourcePackPushPacket
2389
- packet_add_resource_pack:
2390
- uuid: UUID
2391
- url: string
2392
- hash: string
2393
- forced: bool
2394
- promptMessage?: anonymousNbt
2395
1932
  # MC: ClientboundRespawnPacket
2396
1933
  packet_respawn:
2397
1934
  worldState: SpawnInfo
@@ -2607,12 +2144,7 @@
2607
2144
  fadeOut: i32
2608
2145
  # MC: ClientboundSoundEntityPacket
2609
2146
  packet_entity_sound_effect:
2610
- soundId: varint
2611
- soundEvent: soundId ?
2612
- if 0:
2613
- resource: string
2614
- range?: f32
2615
- default: void
2147
+ sound: ItemSoundHolder
2616
2148
  soundCategory: soundSource
2617
2149
  entityId: varint
2618
2150
  volume: f32
@@ -2620,12 +2152,7 @@
2620
2152
  seed: i64
2621
2153
  # MC: ClientboundSoundPacket
2622
2154
  packet_sound_effect:
2623
- soundId: varint
2624
- soundEvent: soundId ?
2625
- if 0:
2626
- resource: string
2627
- range?: f32
2628
- default: void
2155
+ sound: ItemSoundHolder
2629
2156
  soundCategory: soundSource
2630
2157
  x: i32
2631
2158
  y: i32
@@ -2798,10 +2325,10 @@
2798
2325
  if minecraft:crafting_shaped:
2799
2326
  group: string
2800
2327
  category: varint
2801
- width: varint
2802
- height: varint
2803
- ingredients: []$width
2804
- _: ingredient[]$height
2328
+ gridWidth: varint
2329
+ gridHeight: varint
2330
+ ingredients: []$gridWidth
2331
+ _: ingredient[]$gridHeight
2805
2332
  result: Slot
2806
2333
  showNotification: bool
2807
2334
  if minecraft:crafting_special_armordye: minecraft_simple_recipe_format
@@ -3039,8 +2566,8 @@
3039
2566
  if entity_destroy: packet_entity_destroy
3040
2567
  if remove_entity_effect: packet_remove_entity_effect
3041
2568
  if reset_score: packet_reset_score
3042
- if remove_resource_pack: packet_remove_resource_pack
3043
- if add_resource_pack: packet_add_resource_pack
2569
+ if remove_resource_pack: packet_common_remove_resource_pack
2570
+ if add_resource_pack: packet_common_add_resource_pack
3044
2571
  if respawn: packet_respawn
3045
2572
  if entity_head_rotation: packet_entity_head_rotation
3046
2573
  if multi_block_change: packet_multi_block_change
@@ -3159,16 +2686,6 @@
3159
2686
  # MC: ServerboundClientCommandPacket
3160
2687
  packet_client_command:
3161
2688
  actionId: varint
3162
- # MC: ServerboundClientInformationPacket
3163
- packet_settings:
3164
- locale: string
3165
- viewDistance: i8
3166
- chatFlags: varint
3167
- chatColors: bool
3168
- skinParts: u8
3169
- mainHand: varint
3170
- enableTextFiltering: bool
3171
- enableServerListing: bool
3172
2689
  # MC: ServerboundCommandSuggestionPacket
3173
2690
  packet_tab_complete:
3174
2691
  transactionId: varint
@@ -3178,11 +2695,11 @@
3178
2695
  # Empty
3179
2696
  # MC: ServerboundContainerButtonClickPacket
3180
2697
  packet_enchant_item:
3181
- windowId: i8
2698
+ windowId: ContainerID
3182
2699
  enchantment: i8
3183
2700
  # MC: ServerboundContainerClickPacket
3184
2701
  packet_window_click:
3185
- windowId: u8
2702
+ windowId: ContainerID
3186
2703
  stateId: varint
3187
2704
  slot: i16
3188
2705
  mouseButton: i8
@@ -3193,7 +2710,7 @@
3193
2710
  cursorItem: Slot
3194
2711
  # MC: ServerboundContainerClosePacket
3195
2712
  packet_close_window:
3196
- windowId: u8
2713
+ windowId: ContainerID
3197
2714
  # MC: ServerboundContainerSlotStateChangedPacket
3198
2715
  packet_set_slot_state:
3199
2716
  slot_id: varint
@@ -3285,7 +2802,7 @@
3285
2802
  id: i64
3286
2803
  # MC: ServerboundPlaceRecipePacket
3287
2804
  packet_craft_recipe_request:
3288
- windowId: i8
2805
+ windowId: ContainerID
3289
2806
  recipe: string
3290
2807
  makeAll: bool
3291
2808
  # MC: ServerboundPlayerAbilitiesPacket
@@ -3485,7 +3002,7 @@
3485
3002
  if chat_session_update: packet_chat_session_update
3486
3003
  if chunk_batch_received: packet_chunk_batch_received
3487
3004
  if client_command: packet_client_command
3488
- if settings: packet_settings
3005
+ if settings: packet_common_settings
3489
3006
  if tab_complete: packet_tab_complete
3490
3007
  if configuration_acknowledged: packet_configuration_acknowledged
3491
3008
  if enchant_item: packet_enchant_item