minecraft-data 3.91.0 → 3.92.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/data.js +27 -0
  2. package/doc/history.md +4 -0
  3. package/index.d.ts +5 -2
  4. package/minecraft-data/data/dataPaths.json +27 -0
  5. package/minecraft-data/data/pc/1.10/proto.yml +29 -35
  6. package/minecraft-data/data/pc/1.10/protocol.json +101 -86
  7. package/minecraft-data/data/pc/1.10-pre1/proto.yml +29 -35
  8. package/minecraft-data/data/pc/1.10-pre1/protocol.json +101 -86
  9. package/minecraft-data/data/pc/1.11/proto.yml +29 -35
  10. package/minecraft-data/data/pc/1.11/protocol.json +101 -86
  11. package/minecraft-data/data/pc/1.12/proto.yml +29 -35
  12. package/minecraft-data/data/pc/1.12/protocol.json +101 -86
  13. package/minecraft-data/data/pc/1.12-pre4/proto.yml +29 -35
  14. package/minecraft-data/data/pc/1.12-pre4/protocol.json +101 -86
  15. package/minecraft-data/data/pc/1.12.1/proto.yml +29 -35
  16. package/minecraft-data/data/pc/1.12.1/protocol.json +101 -86
  17. package/minecraft-data/data/pc/1.12.2/proto.yml +29 -35
  18. package/minecraft-data/data/pc/1.12.2/protocol.json +101 -86
  19. package/minecraft-data/data/pc/1.13/proto.yml +29 -35
  20. package/minecraft-data/data/pc/1.13/protocol.json +101 -86
  21. package/minecraft-data/data/pc/1.13.1/proto.yml +29 -35
  22. package/minecraft-data/data/pc/1.13.1/protocol.json +101 -86
  23. package/minecraft-data/data/pc/1.13.2/proto.yml +29 -35
  24. package/minecraft-data/data/pc/1.13.2/protocol.json +101 -86
  25. package/minecraft-data/data/pc/1.13.2-pre1/proto.yml +29 -35
  26. package/minecraft-data/data/pc/1.13.2-pre1/protocol.json +101 -86
  27. package/minecraft-data/data/pc/1.13.2-pre2/proto.yml +29 -35
  28. package/minecraft-data/data/pc/1.13.2-pre2/protocol.json +101 -86
  29. package/minecraft-data/data/pc/1.14/proto.yml +29 -35
  30. package/minecraft-data/data/pc/1.14/protocol.json +101 -86
  31. package/minecraft-data/data/pc/1.14.1/proto.yml +29 -35
  32. package/minecraft-data/data/pc/1.14.1/protocol.json +101 -86
  33. package/minecraft-data/data/pc/1.14.3/proto.yml +29 -35
  34. package/minecraft-data/data/pc/1.14.3/protocol.json +101 -86
  35. package/minecraft-data/data/pc/1.14.4/proto.yml +29 -35
  36. package/minecraft-data/data/pc/1.14.4/protocol.json +101 -86
  37. package/minecraft-data/data/pc/1.15/proto.yml +29 -35
  38. package/minecraft-data/data/pc/1.15/protocol.json +101 -86
  39. package/minecraft-data/data/pc/1.15.1/proto.yml +29 -35
  40. package/minecraft-data/data/pc/1.15.1/protocol.json +101 -86
  41. package/minecraft-data/data/pc/1.15.2/proto.yml +29 -35
  42. package/minecraft-data/data/pc/1.15.2/protocol.json +101 -86
  43. package/minecraft-data/data/pc/1.16/proto.yml +29 -35
  44. package/minecraft-data/data/pc/1.16/protocol.json +101 -86
  45. package/minecraft-data/data/pc/1.16-rc1/proto.yml +29 -35
  46. package/minecraft-data/data/pc/1.16-rc1/protocol.json +101 -86
  47. package/minecraft-data/data/pc/1.16.1/proto.yml +29 -35
  48. package/minecraft-data/data/pc/1.16.1/protocol.json +101 -86
  49. package/minecraft-data/data/pc/1.16.2/proto.yml +29 -35
  50. package/minecraft-data/data/pc/1.16.2/protocol.json +101 -86
  51. package/minecraft-data/data/pc/1.17/proto.yml +30 -36
  52. package/minecraft-data/data/pc/1.17/protocol.json +102 -87
  53. package/minecraft-data/data/pc/1.17.1/proto.yml +30 -36
  54. package/minecraft-data/data/pc/1.17.1/protocol.json +102 -87
  55. package/minecraft-data/data/pc/1.18/proto.yml +30 -36
  56. package/minecraft-data/data/pc/1.18/protocol.json +102 -87
  57. package/minecraft-data/data/pc/1.18.2/proto.yml +30 -36
  58. package/minecraft-data/data/pc/1.18.2/protocol.json +102 -87
  59. package/minecraft-data/data/pc/1.19/proto.yml +34 -67
  60. package/minecraft-data/data/pc/1.19/protocol.json +123 -127
  61. package/minecraft-data/data/pc/1.19.2/proto.yml +35 -68
  62. package/minecraft-data/data/pc/1.19.2/protocol.json +123 -127
  63. package/minecraft-data/data/pc/1.19.3/proto.yml +39 -309
  64. package/minecraft-data/data/pc/1.19.3/protocol.json +65 -324
  65. package/minecraft-data/data/pc/1.19.4/proto.yml +39 -309
  66. package/minecraft-data/data/pc/1.19.4/protocol.json +65 -324
  67. package/minecraft-data/data/pc/1.20/proto.yml +40 -310
  68. package/minecraft-data/data/pc/1.20/protocol.json +65 -324
  69. package/minecraft-data/data/pc/1.20.2/proto.yml +40 -310
  70. package/minecraft-data/data/pc/1.20.2/protocol.json +65 -324
  71. package/minecraft-data/data/pc/1.20.3/proto.yml +156 -327
  72. package/minecraft-data/data/pc/1.20.3/protocol.json +186 -369
  73. package/minecraft-data/data/pc/1.20.5/proto.yml +427 -845
  74. package/minecraft-data/data/pc/1.20.5/protocol.json +669 -931
  75. package/minecraft-data/data/pc/1.21.1/proto.yml +415 -898
  76. package/minecraft-data/data/pc/1.21.1/protocol.json +585 -1058
  77. package/minecraft-data/data/pc/1.21.3/proto.yml +429 -572
  78. package/minecraft-data/data/pc/1.21.3/protocol.json +760 -920
  79. package/minecraft-data/data/pc/1.21.4/protocol.json +766 -917
  80. package/minecraft-data/data/pc/1.21.6/attributes.json +247 -0
  81. package/minecraft-data/data/pc/1.21.6/biomes.json +652 -0
  82. package/minecraft-data/data/pc/1.21.6/blockCollisionShapes.json +142541 -0
  83. package/minecraft-data/data/pc/1.21.6/blocks.json +41360 -0
  84. package/minecraft-data/data/pc/1.21.6/effects.json +236 -0
  85. package/minecraft-data/data/pc/1.21.6/enchantments.json +959 -0
  86. package/minecraft-data/data/pc/1.21.6/entities.json +1512 -0
  87. package/minecraft-data/data/pc/1.21.6/foods.json +402 -0
  88. package/minecraft-data/data/pc/1.21.6/instruments.json +94 -0
  89. package/minecraft-data/data/pc/1.21.6/items.json +9278 -0
  90. package/minecraft-data/data/pc/1.21.6/language.json +7389 -0
  91. package/minecraft-data/data/pc/1.21.6/materials.json +206 -0
  92. package/minecraft-data/data/pc/1.21.6/particles.json +458 -0
  93. package/minecraft-data/data/pc/1.21.6/recipes.json +30473 -0
  94. package/minecraft-data/data/pc/1.21.6/sounds.json +6910 -0
  95. package/minecraft-data/data/pc/1.21.6/tints.json +465 -0
  96. package/minecraft-data/data/pc/1.21.6/version.json +6 -0
  97. package/minecraft-data/data/pc/1.7/proto.yml +3 -6
  98. package/minecraft-data/data/pc/1.7/protocol.json +7 -0
  99. package/minecraft-data/data/pc/1.8/proto.yml +29 -35
  100. package/minecraft-data/data/pc/1.8/protocol.json +101 -86
  101. package/minecraft-data/data/pc/1.9/proto.yml +29 -35
  102. package/minecraft-data/data/pc/1.9/protocol.json +101 -86
  103. package/minecraft-data/data/pc/1.9.1-pre2/proto.yml +29 -35
  104. package/minecraft-data/data/pc/1.9.1-pre2/protocol.json +101 -86
  105. package/minecraft-data/data/pc/1.9.2/proto.yml +29 -35
  106. package/minecraft-data/data/pc/1.9.2/protocol.json +101 -86
  107. package/minecraft-data/data/pc/1.9.4/proto.yml +29 -35
  108. package/minecraft-data/data/pc/1.9.4/protocol.json +101 -86
  109. package/minecraft-data/data/pc/15w40b/proto.yml +29 -35
  110. package/minecraft-data/data/pc/15w40b/protocol.json +101 -86
  111. package/minecraft-data/data/pc/16w20a/proto.yml +29 -35
  112. package/minecraft-data/data/pc/16w20a/protocol.json +101 -86
  113. package/minecraft-data/data/pc/16w35a/proto.yml +29 -35
  114. package/minecraft-data/data/pc/16w35a/protocol.json +101 -86
  115. package/minecraft-data/data/pc/17w15a/proto.yml +29 -35
  116. package/minecraft-data/data/pc/17w15a/protocol.json +101 -86
  117. package/minecraft-data/data/pc/17w18b/proto.yml +29 -35
  118. package/minecraft-data/data/pc/17w18b/protocol.json +101 -86
  119. package/minecraft-data/data/pc/17w50a/proto.yml +29 -35
  120. package/minecraft-data/data/pc/17w50a/protocol.json +101 -86
  121. package/minecraft-data/data/pc/20w13b/proto.yml +29 -35
  122. package/minecraft-data/data/pc/20w13b/protocol.json +101 -86
  123. package/minecraft-data/data/pc/21w07a/proto.yml +29 -35
  124. package/minecraft-data/data/pc/21w07a/protocol.json +101 -86
  125. package/minecraft-data/data/pc/common/features.json +7 -2
  126. package/minecraft-data/data/pc/common/protocolVersions.json +9 -1
  127. package/minecraft-data/data/pc/latest/proto.yml +427 -572
  128. package/minecraft-data/doc/history.md +6 -0
  129. package/minecraft-data/doc/protocol.md +6 -4
  130. package/package.json +1 -1
  131. package/test/load.js +8 -0
@@ -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
@@ -30,14 +31,10 @@
30
31
  restBuffer: native
31
32
  anonymousNbt: native
32
33
  anonOptionalNbt: native
33
- arrayWithLengthOffset: native
34
+ registryEntryHolder: native
35
+ registryEntryHolderSet: native
34
36
  ByteArray: ["buffer", { "countType": "varint" }]
35
- string: [
36
- "pstring",
37
- {
38
- "countType": "varint"
39
- }
40
- ]
37
+ string: ["pstring", { "countType": "varint" }]
41
38
  vec3f:
42
39
  x: f32
43
40
  y: f32
@@ -51,69 +48,74 @@
51
48
  x: f64
52
49
  y: f64
53
50
  z: f64
54
-
51
+ IDSet: ["registryEntryHolderSet", {
52
+ "base": { name: "name", type: "string" },
53
+ "otherwise": { name: "ids", type: "varint" }
54
+ }]
55
+ ContainerID: u8
55
56
  SlotComponentType: varint =>
56
- - custom_data
57
- - max_stack_size
58
- - max_damage
59
- - damage
60
- - unbreakable
61
- - custom_name
62
- - item_name
63
- - lore
64
- - rarity
65
- - enchantments
66
- - can_place_on
67
- - can_break
68
- - attribute_modifiers
69
- - custom_model_data
70
- - hide_additional_tooltip
71
- - hide_tooltip
72
- - repair_cost
73
- - creative_slot_lock
74
- - enchantment_glint_override
75
- - intangible_projectile
76
- - food
77
- - fire_resistant
78
- - tool
79
- - stored_enchantments
80
- - dyed_color
81
- - map_color
82
- - map_id
83
- - map_decorations
84
- - map_post_processing
85
- - charged_projectiles
86
- - bundle_contents
87
- - potion_contents
88
- - suspicious_stew_effects
89
- - writable_book_content
90
- - written_book_content
91
- - trim
92
- - debug_stick_state
93
- - entity_data
94
- - bucket_entity_data
95
- - block_entity_data
96
- - instrument
97
- - ominous_bottle_amplifier
98
- - recipes
99
- - lodestone_tracker
100
- - firework_explosion
101
- - fireworks
102
- - profile
103
- - note_block_sound
104
- - banner_patterns
105
- - base_color
106
- - pot_decorations
107
- - container
108
- - block_state
109
- - bees
110
- - lock
111
- - container_loot
57
+ - custom_data
58
+ - max_stack_size
59
+ - max_damage
60
+ - damage
61
+ - unbreakable
62
+ - custom_name
63
+ - item_name
64
+ - lore
65
+ - rarity
66
+ - enchantments
67
+ - can_place_on
68
+ - can_break
69
+ - attribute_modifiers
70
+ - custom_model_data
71
+ - hide_additional_tooltip
72
+ - hide_tooltip
73
+ - repair_cost
74
+ - creative_slot_lock
75
+ - enchantment_glint_override
76
+ - intangible_projectile
77
+ - food
78
+ - fire_resistant
79
+ - tool
80
+ - stored_enchantments
81
+ - dyed_color
82
+ - map_color
83
+ - map_id
84
+ - map_decorations
85
+ - map_post_processing
86
+ - charged_projectiles
87
+ - bundle_contents
88
+ - potion_contents
89
+ - suspicious_stew_effects
90
+ - writable_book_content
91
+ - written_book_content
92
+ - trim
93
+ - debug_stick_state
94
+ - entity_data
95
+ - bucket_entity_data
96
+ - block_entity_data
97
+ - instrument
98
+ - ominous_bottle_amplifier
99
+ - recipes
100
+ - lodestone_tracker
101
+ - firework_explosion
102
+ - fireworks
103
+ - profile
104
+ - note_block_sound
105
+ - banner_patterns
106
+ - base_color
107
+ - pot_decorations
108
+ - container
109
+ - block_state
110
+ - bees
111
+ - lock
112
+ - container_loot
112
113
 
113
114
  SlotComponent:
114
115
  type: SlotComponentType
116
+ ## Ref: client/net/minecraft/core/component/DataComponents.java
115
117
  data: type ?
116
- # TODO: look into how nbt works here
118
+ ## TODO: look into how nbt works here
117
119
  if custom_data: anonymousNbt
118
120
  if max_stack_size: varint
119
121
  if max_damage: varint
@@ -133,12 +135,12 @@
133
135
  level: varint
134
136
  showTooltip: bool
135
137
  if can_place_on or can_break:
136
- predicates: BlockPredicate[]varint
138
+ predicates: ItemBlockPredicate[]varint
137
139
  showTooltip: bool
138
140
  if attribute_modifiers:
139
141
  attributes: []varint
140
142
  typeId: varint
141
- uniqueId: UUID
143
+ uuid: UUID
142
144
  name: string
143
145
  value: f64
144
146
  operation: varint =>
@@ -163,19 +165,12 @@
163
165
  if repair_cost: varint
164
166
  if creative_slot_lock: void
165
167
  if enchantment_glint_override: bool
166
- if intangible_projectile: void
167
- # Name Type Description
168
- # Nutrition VarInt Non-negative
169
- # Saturation Modifier Float How much saturation will be given after consuming the item.
170
- # Can Always Eat Boolean Whether the item can always be eaten, even at full hunger.
171
- # Seconds To Eat Float How long it takes to consume the item.
172
- # 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.
173
- # Number of effects VarInt Number of elements in the following array.
174
- # Effect Type ID Array Potion Effect The potion effect. See Potion Effect.
175
- # Probability Float The probability for this effect to be chosen.
168
+ if intangible_projectile: anonymousNbt
176
169
  if food:
177
170
  nutrition: varint
171
+ # How much saturation will be given after consuming the item.
178
172
  saturationModifier: f32
173
+ # Whether the item can always be eaten, even at full hunger.
179
174
  canAlwaysEat: bool
180
175
  secondsToEat: f32
181
176
  usingConvertsTo: Slot
@@ -183,240 +178,103 @@
183
178
  effect: varint
184
179
  probability: f32
185
180
  if fire_resistant: void
186
- # Name Type Description
187
- # Number of Rules VarInt The number of elements in the following array.
188
- # Rule
189
- # Blocks Array Block Set The block this rule applies to. See Block Set.
190
- # Has Speed Boolean
191
- # Speed Optional Float The speed at which the tool breaks this rules' blocks. Only present if Has Speed is true.
192
- # Has Correct Drop For Blocks Boolean
193
- # 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.
194
- # Default Mining Speed Float The mining speed in case none of the previous rule were matched.
195
- # Damage Per Block VarInt The amount of damage the item takes per block break.
196
181
  if tool:
197
182
  rules: []varint
198
- blocks: BlockSet[]varint
199
- hasSpeed: bool
200
- speed: f32
201
- hasCorrectDropForBlocks: bool
202
- correctDropForBlocks: bool
183
+ blocks: IDSet
184
+ # The speed at which the tool breaks this rules' blocks.
185
+ speed?: f32
186
+ # Whether items should drop only if this is the correct tool.
187
+ correctDropForBlocks?: bool
188
+ # The mining speed in case none of the previous rule were matched.
203
189
  defaultMiningSpeed: f32
204
190
  damagePerBlock: varint
205
- # Name Type Description
206
- # Number of enchantments VarInt Number of elements in the following array.
207
- # Enchantment Type ID Array VarInt Enum The ID of the enchantment in the enchantment registry.
208
- # Level VarInt The level of the enchantment.
209
- # Show In Tooltip Boolean Whether the list of enchantments should be shown on the item's tooltip.
210
191
  if stored_enchantments:
211
192
  enchantments: []varint
193
+ # The ID of the enchantment in the enchantment registry.
212
194
  id: varint
213
195
  level: varint
196
+ # Whether the list of enchantments should be shown on the item's tooltip.
214
197
  showInTooltip: bool
215
198
  if dyed_color:
216
- color: varint
199
+ color: i32
217
200
  showTooltip: bool
218
- if map_color: varint
201
+ if map_color: i32
219
202
  if map_id: varint
220
- if map_decorations: anonOptionalNbt
203
+ if map_decorations: anonymousNbt
221
204
  if map_post_processing: varint
222
205
  if charged_projectiles:
223
206
  projectiles: Slot[]varint
224
207
  if bundle_contents:
225
208
  contents: Slot[]varint
226
- # Name Type Description
227
- # 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.
228
- # Potion ID Optional VarInt The ID of the potion type in the potion registry. Only present if Has Potion ID is true.
229
- # Has Custom Color Boolean Whether this potion has a custom color. If false, it uses the default color associated with the potion type.
230
- # Custom Color Optional Int The RGB components of the color, encoded as an integer. Only present if Has Custom Color is true.
231
- # Number Of Custom Effects VarInt The number of elements in the following array.
232
- # Custom Effects Array of Potion Effect Any custom effects the potion might have. See Potion Effect.
233
209
  if potion_contents:
234
- hasPotionId: bool
235
- potionId: optvarint
236
- hasCustomColor: bool
237
- customColor: optvarint
238
- customEffects: []varint
239
- effect: varint
240
- details: EffectDetail
241
- # Name Type Description
242
- # Number Of Effects VarInt Number of elements in the following array.
243
- # Effect Type ID Array VarInt Enum The ID of the effect in the potion effect type registry.
244
- # Duration VarInt The duration of the effect.
210
+ # True if this potion has an ID in the potion registry--it has the default effects associated with the potion type.
211
+ potionId?: varint
212
+ # The RGB components of the color, encoded as an integer.
213
+ customColor?: i32
214
+ customEffects: ItemPotionEffect[]varint
215
+ customName?: string
245
216
  if suspicious_stew_effects:
246
217
  effects: []varint
218
+ # The ID of the effect in the potion effect type registry.
247
219
  effect: varint
220
+ # The duration of the effect.
248
221
  duration: varint
249
- # Name Type Description
250
- # Number Of Pages VarInt Number of elements in the following array.
251
- # Page Raw Content Array (100) String (1024) The raw text of the page.
252
- # Has Filtered Content Boolean
253
- # Filtered Content Optional String (1024) The content after passing through chat filters. Only present if Has Filtered Content is true.
254
222
  if writable_book_content:
255
- pages: BookPage[]varint
256
- # Name Type Description
257
- # Raw Title String (32) The raw title of the book.
258
- # Has Filtered Title Boolean
259
- # Filtered Title Optional String (32) The title after going through chat filters. Only present if Has Filtered Title is true.
260
- # Author String
261
- # Generation VarInt
262
- # Number Of Pages VarInt Number of elements in the following array.
263
- # Page Raw Content Array (100) TextComponent (1024) The raw text of the page.
264
- # Has Filtered Content Boolean
265
- # Filtered Content Optional Text Component (1024) The content after passing through chat filters. Only present if Has Filtered Content is true.
266
- # Resolved Boolean Whether entity selectors have already been resolved.
223
+ # Max 100 pages
224
+ pages: ItemBookPage[]varint
267
225
  if written_book_content:
268
226
  rawTitle: string
269
227
  filteredTitle?: string
270
228
  author: string
271
229
  generation: varint
272
- pages: BookPage[]varint
273
- # Whether entity selectors have already been resolved.
230
+ pages: ItemWrittenBookPage[]varint
274
231
  resolved: bool
275
- # Name Type Description
276
- # Trim Material Type VarInt Identifier used to determine the data that follows. It can be either:
277
- # 0 - Directly represents a trim material, with the necessary data following.
278
- # Anything else - References a trim material in its registry, by the ID of Trim Material Type - 1.
279
- # Asset Name Optional String See Armor Trim Material Registry. Only present if Trim Material Type is 0.
280
- # Ingredient Optional VarInt See Armor Trim Material Registry. Only present if Trim Material Type is 0.
281
- # Item Model Index Optional Float See Armor Trim Material Registry. Only present if Trim Material Type is 0.
282
- # Number of Overrides Optional VarInt See Armor Trim Material Registry. Only present if Trim Material Type is 0.
283
- # Override Armor Material Type Optional Array VarInt Enum See Armor Trim Material Registry. Only present if Trim Material Type is 0.
284
- # Overriden Asset Name String See Armor Trim Material Registry. Only present if Trim Material Type is 0.
285
- # Description Optional Text Component See Armor Trim Material Registry. Only present if Trim Material Type is 0.
286
- # Trim Pattern Type VarInt Identifier used to determine the data that follows. It can be either:
287
- # 0 - Directly represents a trim pattern, with the necessary data following.
288
- # Anything else - References a trim pattern in its registry, by the ID of Trim Pattern Type - 1.
289
- # Asset Name Optional String See Armor Trim Pattern Registry. Only present if Trim Pattern Type is 0.
290
- # Template Item Optional VarInt See Armor Trim Pattern Registry. Only present if Trim Pattern Type is 0.
291
- # Description Optional Text Component See Armor Trim Pattern Registry. Only present if Trim Pattern Type is 0.
292
- # Decal Optional Boolean See Armor Trim Pattern Registry. Only present if Trim Pattern Type is 0.
293
- # Show In Tooltip Boolean Whether the trim information should be shown on the item's tooltip.
294
232
  if trim:
295
- # Identifier used to determine the data that follows. It can be either:
296
- # 0 - Directly represents a trim material, with the necessary data following.
297
- # Anything else - References a trim material in its registry, by the ID of Trim Material Type - 1.
298
- materialType: varint
299
- _: materialType ?
300
- if 0:
301
- assetName: string
302
- ingredientId: varint
303
- itemModelIndex: f32
304
- numberOfOverrides: optvarint
305
- override: []varint
306
- armorMaterialType: varint
307
- overridenAssetName: string
308
- description: string
309
- trimPatternType: varint
310
- _: trimPatternType ?
311
- if 0:
312
- assetName: string
313
- templateItem: varint
314
- description: string
315
- decal: bool
233
+ material: ["registryEntryHolder", { "baseName": "materialId", "otherwise": { "name": "data", "type": "ArmorTrimMaterial" } }]
234
+ pattern: ["registryEntryHolder", { "baseName": "patternId", "otherwise": { "name": "data", "type": "ArmorTrimPattern" } }]
316
235
  showInTooltip: bool
317
236
  if debug_stick_state: anonymousNbt
318
237
  if entity_data: anonymousNbt
319
238
  if bucket_entity_data: anonymousNbt
320
239
  if block_entity_data: anonymousNbt
321
- # Name Type Description
322
- # Instrument Type VarInt Identifier used to determine the data that follows. It can be either:
323
- # 0 - Directly represents an instrument, with the necessary data following.
324
- # Anything else - References an instrument in its registry, by the ID of Instrument Type - 1.
325
- # Sound Event Optional Sound Event The sound to be played. Only present if Instrument Type is 0.
326
- # Use duration Optional Float The maximum range of the sound. Only present if Instrument Type is 0.
327
- # Range Optional Float The range of the instrument. Only present if Instrument Type is 0.
328
- if instrument:
329
- instrumentType: varint
330
- _: instrumentType ?
331
- if 0:
332
- soundEvent: string
333
- useDuration: f32
334
- range: f32
240
+ if instrument: ["registryEntryHolder", { "baseName": "instrumentId", "otherwise": { "name": "data", "type": "InstrumentData" } }]
335
241
  if ominous_bottle_amplifier: varint
336
242
  if recipes: anonymousNbt
337
- # Name Type Description
338
- # Has Global Position Boolean Whether this lodestone points to a position, otherwise it spins randomly.
339
- # Dimension Identifier The dimension the compass points to. Only present if Has Global Position is true.
340
- # Position Position The position the compass points to. Only present if Has Global Position is true.
341
- # Tracked Boolean Whether the component is removed when the associated lodestone is broken.
342
243
  if lodestone_tracker:
244
+ # Specified if this lodestone points to a position; otherwise it spins randomly.
343
245
  globalPosition?:
344
246
  dimension: string
345
- position: vec3f
247
+ # The position the compass points to. Only present if Has Global Position is true.
248
+ position: position
249
+ # Whether the component is removed when the associated lodestone is broken.
346
250
  tracked: bool
347
- # Name Type Description
348
- # Shape VarInt Enum Can be one of the following:
349
- # 0 - Small ball
350
- # 1 - Large ball
351
- # 2 - Star
352
- # 3 - Creeper
353
- # 4 - Burst
354
- # Number Of Colors VarInt The number of elements in the following array.
355
- # Colors Array of Int The RGB components of the color, encoded as an integer.
356
- # Number Of Fade Colors VarInt The number of elements in the following array.
357
- # Fade Colors Array of Int The RGB components of the color, encoded as an integer.
358
- # Has Trail Boolean
359
- # Has Twinkle Boolean
360
- if firework_explosion: FireworkExplosion
251
+ if firework_explosion: ItemFireworkExplosion
361
252
  if fireworks:
362
253
  flightDuration: varint
363
- explosions: FireworkExplosion[]varint
364
- # Name Type Description
365
- # Has Name Boolean
366
- # Name Optional String (16) Only present if Has Name is true.
367
- # Has Unique ID Boolean
368
- # Unique ID Optional UUID Only present if Has Unique ID is true.
369
- # Number of Properties VarInt Number of elements in the following array.
370
- # Property Name Array String (64)
371
- # Value String
372
- # Has Signature Boolean
373
- # Signature String (1024) Only present if Has Signature is true.
254
+ explosions: ItemFireworkExplosion[]varint
374
255
  if profile:
375
- hasName: bool
376
- name: string
377
- hasUniqueId: bool
378
- uniqueId: UUID
256
+ # If the profile has a name, max 16 characters.
257
+ name?: string
258
+ uuid?: UUID
379
259
  properties: []varint
380
- property: string
260
+ # Max 64 characters
261
+ name: string
381
262
  value: string
382
- hasSignature: bool
383
- signature: string
263
+ # Max 1024 characters
264
+ signature?: string
384
265
  if note_block_sound: string
385
- # Name Type Description
386
- # Number of Layers VarInt Number of elements in the following array.
387
- # Layer Pattern Type Array VarInt Identifier used to determine the data that follows. It can be either:
388
- # 0 - Directly represents a pattern, with the necessary data following.
389
- # Anything else - References a pattern in its registry, by the ID of Pattern Type - 1.
390
- # Asset ID Optional Identifier Identifier of the asset. Only present if Pattern Type is 0.
391
- # Translation Key Optional String Only present if Pattern Type is 0.
392
- # Color Dye Color See Dye Color.
393
266
  if banner_patterns:
394
- layers: []varint
395
- patternType: varint
396
- _: patternType ?
397
- if 0:
398
- assetId: string
399
- translationKey: string
400
- color: varint
267
+ layers: BannerPatternLayer[]varint
401
268
  if base_color: varint
402
269
  if pot_decorations:
403
270
  # The ID of the items in the item registry.
404
271
  decorations: varint[]varint
405
272
  if container:
406
273
  contents: Slot[]varint
407
- # Name Type Description
408
- # Number of Properties VarInt Number of elements in the following array.
409
- # Property Name Array String
410
- # Value String
411
274
  if block_state:
412
275
  properties: []varint
413
- property: string
276
+ name: string
414
277
  value: string
415
- # Name Type Description
416
- # Number of Bees VarInt Number of elements in the following array.
417
- # Bee Entity Data Array NBT
418
- # Ticks In Hive VarInt
419
- # Min Ticks In Hive VarInt
420
278
  if bees:
421
279
  bees: []varint
422
280
  # Custom data for the entity, always a Compound Tag. Same structure as the minecraft:custom_data component.
@@ -426,238 +284,221 @@
426
284
  if lock: anonymousNbt
427
285
  if container_loot: anonymousNbt
428
286
 
429
- Slot:
430
- itemCount: i8
431
- _: itemCount ?
432
- if 0: void
433
- default:
434
- itemId: varint
435
- # https://wiki.vg/Slot_Data#Structured_components
436
- # + public static final DataComponentType<CompoundTag> CUSTOM_DATA = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
437
- # + public static final IntComponentType MAX_STACK_SIZE = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
438
- # + public static final IntComponentType MAX_DAMAGE = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
439
- # + public static final IntComponentType DAMAGE = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
440
- # + public static final BooleanComponentType UNBREAKABLE = new BooleanComponentType(ByteBuf::readBoolean, ByteBuf::writeBoolean, BooleanDataComponent::new);
441
- # + public static final DataComponentType<Component> CUSTOM_NAME = new DataComponentType<>(ItemCodecHelper::readComponent, ItemCodecHelper::writeComponent, ObjectDataComponent::new);
442
- # + public static final DataComponentType<Component> ITEM_NAME = new DataComponentType<>(ItemCodecHelper::readComponent, ItemCodecHelper::writeComponent, ObjectDataComponent::new);
443
- # + public static final DataComponentType<List<Component>> LORE = new DataComponentType<>(listReader(ItemCodecHelper::readComponent), listWriter(ItemCodecHelper::writeComponent), ObjectDataComponent::new);
444
- # + public static final IntComponentType RARITY = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
445
- # + public static final DataComponentType<ItemEnchantments> ENCHANTMENTS = new DataComponentType<>(ItemCodecHelper::readItemEnchantments, ItemCodecHelper::writeItemEnchantments, ObjectDataComponent::new);
446
- # + public static final DataComponentType<AdventureModePredicate> CAN_PLACE_ON = new DataComponentType<>(ItemCodecHelper::readAdventureModePredicate, ItemCodecHelper::writeAdventureModePredicate, ObjectDataComponent::new);
447
- # + public static final DataComponentType<AdventureModePredicate> CAN_BREAK = new DataComponentType<>(ItemCodecHelper::readAdventureModePredicate, ItemCodecHelper::writeAdventureModePredicate, ObjectDataComponent::new);
448
- # + public static final DataComponentType<ItemAttributeModifiers> ATTRIBUTE_MODIFIERS = new DataComponentType<>(ItemCodecHelper::readItemAttributeModifiers, ItemCodecHelper::writeItemAttributeModifiers, ObjectDataComponent::new);
449
- # + public static final IntComponentType CUSTOM_MODEL_DATA = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
450
- # + public static final DataComponentType<Unit> HIDE_ADDITIONAL_TOOLTIP = new DataComponentType<>(unitReader(), unitWriter(), ObjectDataComponent::new);
451
- # + public static final DataComponentType<Unit> HIDE_TOOLTIP = new DataComponentType<>(unitReader(), unitWriter(), ObjectDataComponent::new);
452
- # + public static final IntComponentType REPAIR_COST = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
453
- # + public static final DataComponentType<Unit> CREATIVE_SLOT_LOCK = new DataComponentType<>(unitReader(), unitWriter(), ObjectDataComponent::new);
454
- # + public static final BooleanComponentType ENCHANTMENT_GLINT_OVERRIDE = new BooleanComponentType(ByteBuf::readBoolean, ByteBuf::writeBoolean, BooleanDataComponent::new);
455
- # + public static final DataComponentType<CompoundTag> INTANGIBLE_PROJECTILE = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
456
- # + public static final DataComponentType<FoodProperties> FOOD = new DataComponentType<>(ItemCodecHelper::readFoodProperties, ItemCodecHelper::writeFoodProperties, ObjectDataComponent::new);
457
- # + public static final DataComponentType<Unit> FIRE_RESISTANT = new DataComponentType<>(unitReader(), unitWriter(), ObjectDataComponent::new);
458
- # + public static final DataComponentType<ToolData> TOOL = new DataComponentType<>(ItemCodecHelper::readToolData, ItemCodecHelper::writeToolData, ObjectDataComponent::new);
459
- # + public static final DataComponentType<ItemEnchantments> STORED_ENCHANTMENTS = new DataComponentType<>(ItemCodecHelper::readItemEnchantments, ItemCodecHelper::writeItemEnchantments, ObjectDataComponent::new);
460
- # + public static final DataComponentType<DyedItemColor> DYED_COLOR = new DataComponentType<>(ItemCodecHelper::readDyedItemColor, ItemCodecHelper::writeDyedItemColor, ObjectDataComponent::new);
461
- # + public static final IntComponentType MAP_COLOR = new IntComponentType((helper, input) -> input.readInt(), (helper, output, value) -> output.writeInt(value), IntDataComponent::new);
462
- # + public static final IntComponentType MAP_ID = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
463
- # + public static final DataComponentType<CompoundTag> MAP_DECORATIONS = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
464
- # + public static final IntComponentType MAP_POST_PROCESSING = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
465
- # + public static final DataComponentType<List<ItemStack>> CHARGED_PROJECTILES = new DataComponentType<>(listReader(ItemCodecHelper::readItemStack), listWriter(ItemCodecHelper::writeItemStack), ObjectDataComponent::new);
466
- # + public static final DataComponentType<List<ItemStack>> BUNDLE_CONTENTS = new DataComponentType<>(listReader(ItemCodecHelper::readItemStack), listWriter(ItemCodecHelper::writeItemStack), ObjectDataComponent::new);
467
- # + public static final DataComponentType<PotionContents> POTION_CONTENTS = new DataComponentType<>(ItemCodecHelper::readPotionContents, ItemCodecHelper::writePotionContents, ObjectDataComponent::new);
468
- # + public static final DataComponentType<List<SuspiciousStewEffect>> SUSPICIOUS_STEW_EFFECTS = new DataComponentType<>(listReader(ItemCodecHelper::readStewEffect), listWriter(ItemCodecHelper::writeStewEffect), ObjectDataComponent::new);
469
- # + public static final DataComponentType<WritableBookContent> WRITABLE_BOOK_CONTENT = new DataComponentType<>(ItemCodecHelper::readWritableBookContent, ItemCodecHelper::writeWritableBookContent, ObjectDataComponent::new);
470
- # + public static final DataComponentType<WrittenBookContent> WRITTEN_BOOK_CONTENT = new DataComponentType<>(ItemCodecHelper::readWrittenBookContent, ItemCodecHelper::writeWrittenBookContent, ObjectDataComponent::new);
471
- # + public static final DataComponentType<ArmorTrim> TRIM = new DataComponentType<>(ItemCodecHelper::readArmorTrim, ItemCodecHelper::writeArmorTrim, ObjectDataComponent::new);
472
- # + public static final DataComponentType<CompoundTag> DEBUG_STICK_STATE = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
473
- # + public static final DataComponentType<CompoundTag> ENTITY_DATA = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
474
- # + public static final DataComponentType<CompoundTag> BUCKET_ENTITY_DATA = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
475
- # + public static final DataComponentType<CompoundTag> BLOCK_ENTITY_DATA = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
476
- # + public static final DataComponentType<Holder<Instrument>> INSTRUMENT = new DataComponentType<>(ItemCodecHelper::readInstrument, ItemCodecHelper::writeInstrument, ObjectDataComponent::new);
477
- # + public static final IntComponentType OMINOUS_BOTTLE_AMPLIFIER = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
478
- # + public static final DataComponentType<ListTag> RECIPES = new DataComponentType<>(ItemCodecHelper::readRecipes, ItemCodecHelper::writeRecipes, ObjectDataComponent::new);
479
- # + public static final DataComponentType<LodestoneTracker> LODESTONE_TRACKER = new DataComponentType<>(ItemCodecHelper::readLodestoneTarget, ItemCodecHelper::writeLodestoneTarget, ObjectDataComponent::new);
480
- # + public static final DataComponentType<Fireworks.FireworkExplosion> FIREWORK_EXPLOSION = new DataComponentType<>(ItemCodecHelper::readFireworkExplosion, ItemCodecHelper::writeFireworkExplosion, ObjectDataComponent::new);
481
- # + public static final DataComponentType<Fireworks> FIREWORKS = new DataComponentType<>(ItemCodecHelper::readFireworks, ItemCodecHelper::writeFireworks, ObjectDataComponent::new);
482
- # + public static final DataComponentType<GameProfile> PROFILE = new DataComponentType<>(ItemCodecHelper::readResolvableProfile, ItemCodecHelper::writeResolvableProfile, ObjectDataComponent::new);
483
- # + public static final DataComponentType<String> NOTE_BLOCK_SOUND = new DataComponentType<>(ItemCodecHelper::readResourceLocation, ItemCodecHelper::writeResourceLocation, ObjectDataComponent::new);
484
- # + public static final DataComponentType<List<BannerPatternLayer>> BANNER_PATTERNS = new DataComponentType<>(listReader(ItemCodecHelper::readBannerPatternLayer), listWriter(ItemCodecHelper::writeBannerPatternLayer), ObjectDataComponent::new);
485
- # + public static final IntComponentType BASE_COLOR = new IntComponentType(ItemCodecHelper::readVarInt, ItemCodecHelper::writeVarInt, IntDataComponent::new);
486
- # + public static final DataComponentType<List<Integer>> POT_DECORATIONS = new DataComponentType<>(listReader(ItemCodecHelper::readVarInt), listWriter(ItemCodecHelper::writeVarInt), ObjectDataComponent::new);
487
- # + public static final DataComponentType<List<ItemStack>> CONTAINER = new DataComponentType<>(listReader(ItemCodecHelper::readOptionalItemStack), listWriter(MinecraftCodecHelper::writeOptionalItemStack), ObjectDataComponent::new);
488
- # + public static final DataComponentType<BlockStateProperties> BLOCK_STATE = new DataComponentType<>(ItemCodecHelper::readBlockStateProperties, ItemCodecHelper::writeBlockStateProperties, ObjectDataComponent::new);
489
- # + public static final DataComponentType<List<BeehiveOccupant>> BEES = new DataComponentType<>(listReader(ItemCodecHelper::readBeehiveOccupant), listWriter(ItemCodecHelper::writeBeehiveOccupant), ObjectDataComponent::new);
490
- # + public static final DataComponentType<StringTag> LOCK = new DataComponentType<>(ItemCodecHelper::readLock, ItemCodecHelper::writeLock, ObjectDataComponent::new);
491
- # + public static final DataComponentType<CompoundTag> CONTAINER_LOOT = new DataComponentType<>(ItemCodecHelper::readAnyTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
492
- addedComponentCount: varint
493
- removedComponentCount: varint
494
- components: SlotComponent[]$addedComponentCount
495
- removeComponents: []$removedComponentCount
496
- type: SlotComponentType
287
+ ItemSoundEvent:
288
+ soundName: string
289
+ fixedRange?: f32
290
+ ItemSoundHolder: ["registryEntryHolder", {
291
+ "baseName": "soundId",
292
+ "otherwise": { name: "data", type: "ItemSoundEvent" }
293
+ }]
497
294
 
498
- FireworkExplosion:
295
+ ItemFireworkExplosion:
499
296
  shape: varint =>
500
- - small_ball
501
- - large_ball
502
- - star
503
- - creeper
504
- - burst
297
+ - small_ball
298
+ - large_ball
299
+ - star
300
+ - creeper
301
+ - burst
302
+ # The RGB components of the color, encoded as an integer.
505
303
  colors: i32[]varint
304
+ # The RGB components of the color, encoded as an integer.
506
305
  fadeColors: i32[]varint
306
+ # Whether the firework has a trail.
507
307
  hasTrail: bool
308
+ # Whether the firework has a twinkle effect.
508
309
  hasTwinkle: bool
509
310
 
510
- BookPage:
511
- content: string
512
- filteredContent?: string
513
-
514
- EffectDetail:
311
+ ItemEffectDetail:
515
312
  amplifier: varint
516
313
  duration: varint
517
314
  ambient: bool
518
315
  showParticles: bool
519
316
  showIcon: bool
520
- hiddenEffect?: EffectDetail
317
+ hiddenEffect?: ItemEffectDetail
521
318
 
522
- BlockSet:
523
- type: varint
524
- name: type ?
525
- if 0: string
526
- default: void
527
- # TODO: This will require a custom type ; we need type - 1 length of blockIds
528
- blockIds: type ?
529
- if 0: void
530
- default: ["arrayWithLengthOffset", {"count": "type", "type": "varint", "lengthOffset": -1}]
319
+ ItemPotionEffect:
320
+ id: varint
321
+ details: ItemEffectDetail
531
322
 
532
- BlockProperty:
533
- # Name of the block state property.
323
+ ItemBlockProperty:
534
324
  name: string
535
- # Whether this is an exact value match, as opposed to ranged.
536
325
  isExactMatch: bool
537
- # Value of the block state property. Only present in exact match mode.
538
- exactValue?: string
539
- # Minimum value of the block state property range. Only present in ranged match mode.
540
- minValue?: string
541
- # Maximum value of the block state property range. Only present in ranged match mode.
542
- maxValue?: string
326
+ value: isExactMatch ?
327
+ if true:
328
+ exactValue: string
329
+ if false:
330
+ minValue: string
331
+ maxValue: string
332
+
543
333
 
544
- BlockPredicate:
545
- blockSet?: BlockSet[]varint
546
- properties?: BlockProperty[]varint
334
+ ItemBlockPredicate:
335
+ blockSet?: ["registryEntryHolderSet", {
336
+ "base": { name: "name", type: "string" },
337
+ "otherwise": { name: "blockIds", type: "varint" }
338
+ }]
339
+ properties?: ItemBlockProperty[]varint
547
340
  nbt: anonOptionalNbt
548
341
 
342
+ ItemBookPage:
343
+ # The raw text of the page. TextComponent, max 1024 characters.
344
+ content: string
345
+ filteredContent?: string
346
+ ItemWrittenBookPage:
347
+ content: anonymousNbt
348
+ filteredContent: anonOptionalNbt
349
+
350
+ ArmorTrimMaterial:
351
+ assetName: string
352
+ ingredientId: varint
353
+ overrideArmorAssets: []varint
354
+ key: string
355
+ value: string
356
+ description: anonymousNbt
357
+
358
+ ArmorTrimPattern:
359
+ assetId: string
360
+ templateItemId: varint
361
+ description: anonymousNbt
362
+ decal: bool
363
+
364
+ InstrumentData:
365
+ soundEvent: ItemSoundHolder
366
+ useDuration: f32
367
+ range: f32
368
+ description: anonymousNbt
369
+
370
+ BannerPattern:
371
+ assetId: string
372
+ translationKey: string
373
+ BannerPatternLayer:
374
+ pattern: ["registryEntryHolder", { "baseName": "patternId", "otherwise": { "name": "data", "type": "BannerPattern" } }]
375
+ colorId: varint
376
+
377
+ Slot:
378
+ itemCount: i8
379
+ _: itemCount ?
380
+ if 0: void
381
+ default:
382
+ itemId: varint
383
+ # https://wiki.vg/Slot_Data#Structured_components
384
+ addedComponentCount: varint
385
+ removedComponentCount: varint
386
+ components: SlotComponent[]$addedComponentCount
387
+ removeComponents: []$removedComponentCount
388
+ type: SlotComponentType
389
+
549
390
  Particle:
550
391
  # See client/net/minecraft/core/particles/ParticleTypes.java
551
392
  type: varint =>
552
- - angry_villager
553
- - block
554
- - block_marker
555
- - bubble
556
- - cloud
557
- - crit
558
- - damage_indicator
559
- - dragon_breath
560
- - dripping_lava
561
- - falling_lava
562
- - landing_lava
563
- - dripping_water
564
- - falling_water
565
- - dust
566
- - dust_color_transition
567
- - effect
568
- - elder_guardian
569
- - enchanted_hit
570
- - enchant
571
- - end_rod
572
- - entity_effect
573
- - explosion_emitter
574
- - explosion
575
- - gust
576
- - small_gust
577
- - gust_emitter_large
578
- - gust_emitter_small
579
- - sonic_boom
580
- - falling_dust
581
- - firework
582
- - fishing
583
- - flame
584
- - infested
585
- - cherry_leaves
586
- - sculk_soul
587
- - sculk_charge
588
- - sculk_charge_pop
589
- - soul_fire_flame
590
- - soul
591
- - flash
592
- - happy_villager
593
- - composter
594
- - heart
595
- - instant_effect
596
- - item
597
- - vibration
598
- - item_slime
599
- - item_cobweb
600
- - item_snowball
601
- - large_smoke
602
- - lava
603
- - mycelium
604
- - note
605
- - poof
606
- - portal
607
- - rain
608
- - smoke
609
- - white_smoke
610
- - sneeze
611
- - spit
612
- - squid_ink
613
- - sweep_attack
614
- - totem_of_undying
615
- - underwater
616
- - splash
617
- - witch
618
- - bubble_pop
619
- - current_down
620
- - bubble_column_up
621
- - nautilus
622
- - dolphin
623
- - campfire_cosy_smoke
624
- - campfire_signal_smoke
625
- - dripping_honey
626
- - falling_honey
627
- - landing_honey
628
- - falling_nectar
629
- - falling_spore_blossom
630
- - ash
631
- - crimson_spore
632
- - warped_spore
633
- - spore_blossom_air
634
- - dripping_obsidian_tear
635
- - falling_obsidian_tear
636
- - landing_obsidian_tear
637
- - reverse_portal
638
- - white_ash
639
- - small_flame
640
- - snowflake
641
- - dripping_dripstone_lava
642
- - falling_dripstone_lava
643
- - dripping_dripstone_water
644
- - falling_dripstone_water
645
- - glow_squid_ink
646
- - glow
647
- - wax_on
648
- - wax_off
649
- - electric_spark
650
- - scrape
651
- - shriek
652
- - egg_crack
653
- - dust_plume
654
- - trial_spawner_detected_player
655
- - trial_spawner_detected_player_ominous
656
- - vault_connection
657
- - dust_pillar
658
- - ominous_spawning
659
- - raid_omen
660
- - trial_omen
393
+ - angry_villager
394
+ - block
395
+ - block_marker
396
+ - bubble
397
+ - cloud
398
+ - crit
399
+ - damage_indicator
400
+ - dragon_breath
401
+ - dripping_lava
402
+ - falling_lava
403
+ - landing_lava
404
+ - dripping_water
405
+ - falling_water
406
+ - dust
407
+ - dust_color_transition
408
+ - effect
409
+ - elder_guardian
410
+ - enchanted_hit
411
+ - enchant
412
+ - end_rod
413
+ - entity_effect
414
+ - explosion_emitter
415
+ - explosion
416
+ - gust
417
+ - small_gust
418
+ - gust_emitter_large
419
+ - gust_emitter_small
420
+ - sonic_boom
421
+ - falling_dust
422
+ - firework
423
+ - fishing
424
+ - flame
425
+ - infested
426
+ - cherry_leaves
427
+ - sculk_soul
428
+ - sculk_charge
429
+ - sculk_charge_pop
430
+ - soul_fire_flame
431
+ - soul
432
+ - flash
433
+ - happy_villager
434
+ - composter
435
+ - heart
436
+ - instant_effect
437
+ - item
438
+ - vibration
439
+ - item_slime
440
+ - item_cobweb
441
+ - item_snowball
442
+ - large_smoke
443
+ - lava
444
+ - mycelium
445
+ - note
446
+ - poof
447
+ - portal
448
+ - rain
449
+ - smoke
450
+ - white_smoke
451
+ - sneeze
452
+ - spit
453
+ - squid_ink
454
+ - sweep_attack
455
+ - totem_of_undying
456
+ - underwater
457
+ - splash
458
+ - witch
459
+ - bubble_pop
460
+ - current_down
461
+ - bubble_column_up
462
+ - nautilus
463
+ - dolphin
464
+ - campfire_cosy_smoke
465
+ - campfire_signal_smoke
466
+ - dripping_honey
467
+ - falling_honey
468
+ - landing_honey
469
+ - falling_nectar
470
+ - falling_spore_blossom
471
+ - ash
472
+ - crimson_spore
473
+ - warped_spore
474
+ - spore_blossom_air
475
+ - dripping_obsidian_tear
476
+ - falling_obsidian_tear
477
+ - landing_obsidian_tear
478
+ - reverse_portal
479
+ - white_ash
480
+ - small_flame
481
+ - snowflake
482
+ - dripping_dripstone_lava
483
+ - falling_dripstone_lava
484
+ - dripping_dripstone_water
485
+ - falling_dripstone_water
486
+ - glow_squid_ink
487
+ - glow
488
+ - wax_on
489
+ - wax_off
490
+ - electric_spark
491
+ - scrape
492
+ - shriek
493
+ - egg_crack
494
+ - dust_plume
495
+ - trial_spawner_detected_player
496
+ - trial_spawner_detected_player_ominous
497
+ - vault_connection
498
+ - dust_pillar
499
+ - ominous_spawning
500
+ - raid_omen
501
+ - trial_omen
661
502
  ## ## Tips for reviewing particle data (as of 1.20.5)
662
503
  ## Inside the registry code, each particle can have an associated "options" type and
663
504
  ## each options type can add additional data to be encoded.
@@ -692,8 +533,15 @@
692
533
  if sculk_charge: f32
693
534
  if shriek: varint
694
535
  if vibration:
695
- position: string
696
- entityId: varint
536
+ positionType: varint =>
537
+ - block
538
+ - entity
539
+ position: positionType ?
540
+ if block: position
541
+ if entity:
542
+ entityId: varint
543
+ entityEyeHeight: f32
544
+ ticks: varint
697
545
  ingredient: Slot[]varint
698
546
  position: [
699
547
  "bitfield",
@@ -803,14 +651,32 @@
803
651
  if optional_unsigned_int: optvarint
804
652
  if pose: varint
805
653
  if cat_variant: varint
806
- if wolf_variant: varint
654
+ if wolf_variant: ["registryEntryHolder", {
655
+ "baseName": "variantId",
656
+ "otherwise": { name: "variantData", type: "EntityMetadataWolfVariant" }
657
+ }]
807
658
  if frog_variant: varint
808
659
  if optional_global_pos: ["option", "string"]
809
- if painting_variant: varint
660
+ if painting_variant: ["registryEntryHolder", {
661
+ "baseName": "variantId",
662
+ "otherwise": { name: "variantData", type: "EntityMetadataPaintingVariant" }
663
+ }]
810
664
  if sniffer_state: varint
811
665
  if armadillo_state: varint
812
666
  if vector3: vec3f
813
667
  if quaternion: vec4f
668
+ EntityMetadataPaintingVariant:
669
+ width: i32
670
+ height: i32
671
+ assetId: string
672
+ title?: anonymousNbt
673
+ author?: anonymousNbt
674
+ EntityMetadataWolfVariant:
675
+ wildTexture: string
676
+ tameTexture: string
677
+ angryTexture: string
678
+ biome: IDSet
679
+
814
680
  entityMetadata: ["entityMetadataLoop", { "endVal": 255, "type": "entityMetadataEntry" }]
815
681
  minecraft_simple_recipe_format:
816
682
  category: varint
@@ -862,7 +728,7 @@
862
728
  game_profile:
863
729
  name: string
864
730
  properties: []varint
865
- key: string
731
+ name: string
866
732
  value: string
867
733
  signature?: string
868
734
  command_node:
@@ -1162,6 +1028,16 @@
1162
1028
  # These are packets that are shared between multiple states.
1163
1029
  # They are defined here to avoid duplication.
1164
1030
  # =====
1031
+ # MC: ServerboundClientInformationPacket
1032
+ packet_common_settings:
1033
+ locale: string
1034
+ viewDistance: i8
1035
+ chatFlags: varint
1036
+ chatColors: bool
1037
+ skinParts: u8
1038
+ mainHand: varint
1039
+ enableTextFiltering: bool
1040
+ enableServerListing: bool
1165
1041
  # MC: ClientboundCookieRequestPacket
1166
1042
  packet_common_cookie_request:
1167
1043
  cookie: string
@@ -1184,6 +1060,16 @@
1184
1060
  namespace: string
1185
1061
  id: string
1186
1062
  version: string
1063
+ # MC: ClientboundResourcePackPopPacket
1064
+ packet_common_remove_resource_pack:
1065
+ uuid?: UUID
1066
+ # MC: ClientboundResourcePackPushPacket
1067
+ packet_common_add_resource_pack:
1068
+ uuid: UUID
1069
+ url: string
1070
+ hash: string
1071
+ forced: bool
1072
+ promptMessage?: anonymousNbt
1187
1073
 
1188
1074
  ^handshaking.toClient.types:
1189
1075
  packet:
@@ -1353,16 +1239,6 @@
1353
1239
  entries: []varint
1354
1240
  key: string
1355
1241
  value?: anonymousNbt
1356
- # MC: ClientboundResourcePackPopPacket
1357
- packet_remove_resource_pack:
1358
- uuid?: UUID
1359
- # MC: ClientboundResourcePackPushPacket
1360
- packet_add_resource_pack:
1361
- uuid: UUID
1362
- url: string
1363
- hash: string
1364
- forced: bool
1365
- promptMessage?: anonymousNbt
1366
1242
  ## (Store cookie and Transfer are Common) ##
1367
1243
  # MC: ClientboundUpdateEnabledFeaturesPacket
1368
1244
  packet_feature_flags:
@@ -1399,24 +1275,15 @@
1399
1275
  if ping: packet_ping
1400
1276
  if reset_chat: packet_reset_chat
1401
1277
  if registry_data: packet_registry_data
1402
- if remove_resource_pack: packet_remove_resource_pack
1403
- if add_resource_pack: packet_add_resource_pack
1278
+ if remove_resource_pack: packet_common_remove_resource_pack
1279
+ if add_resource_pack: packet_common_add_resource_pack
1404
1280
  if store_cookie: packet_common_store_cookie
1405
1281
  if transfer: packet_common_transfer
1406
1282
  if feature_flags: packet_feature_flags
1407
1283
  if tags: packet_tags
1408
1284
  if select_known_packs: packet_common_select_known_packs
1409
1285
  ^configuration.toServer.types:
1410
- # MC: ServerboundClientInformationPacket
1411
- packet_settings:
1412
- locale: string
1413
- viewDistance: i8
1414
- chatFlags: varint
1415
- chatColors: bool
1416
- skinParts: u8
1417
- mainHand: varint
1418
- enableTextFiltering: bool
1419
- enableServerListing: bool
1286
+ ## (Settings is Common) ##
1420
1287
  ## (Cookie Response is Common) ##
1421
1288
  # MC: ServerboundCustomPayloadPacket
1422
1289
  packet_custom_payload:
@@ -1446,7 +1313,7 @@
1446
1313
  - resource_pack_receive
1447
1314
  - select_known_packs
1448
1315
  params: name ?
1449
- if settings: packet_settings
1316
+ if settings: packet_common_settings
1450
1317
  if cookie_response: packet_common_cookie_response
1451
1318
  if custom_payload: packet_custom_payload
1452
1319
  if finish_configuration: packet_finish_configuration
@@ -1584,21 +1451,21 @@
1584
1451
  rootIndex: varint
1585
1452
  # MC: ClientboundContainerClosePacket
1586
1453
  packet_close_window:
1587
- windowId: u8
1454
+ windowId: ContainerID
1588
1455
  # MC: ClientboundContainerSetContentPacket
1589
1456
  packet_window_items:
1590
- windowId: u8
1457
+ windowId: ContainerID
1591
1458
  stateId: varint
1592
1459
  items: Slot[]varint
1593
1460
  carriedItem: Slot
1594
1461
  # MC: ClientboundContainerSetDataPacket
1595
1462
  packet_craft_progress_bar:
1596
- windowId: u8
1463
+ windowId: ContainerID
1597
1464
  property: i16
1598
1465
  value: i16
1599
1466
  # MC: ClientboundContainerSetSlotPacket
1600
1467
  packet_set_slot:
1601
- windowId: i8
1468
+ windowId: ContainerID
1602
1469
  stateId: varint
1603
1470
  slot: i16
1604
1471
  item: Slot
@@ -1640,6 +1507,21 @@
1640
1507
  # MC: ClientboundDisconnectPacket
1641
1508
  packet_kick_disconnect:
1642
1509
  reason: anonymousNbt
1510
+
1511
+ ## client\net\minecraft\network\chat\ChatTypeDecoration.java
1512
+ ## via client\net\minecraft\network\chat\ChatType.java
1513
+ ChatTypeParameterType: varint =>
1514
+ - content
1515
+ - sender
1516
+ - target
1517
+ ChatType:
1518
+ translationKey: string
1519
+ parameters: ChatTypeParameterType[]varint
1520
+ style: anonymousNbt
1521
+ ChatTypes:
1522
+ chat: ChatType
1523
+ narration: ChatType
1524
+
1643
1525
  # MC: ClientboundDisguisedChatPacket
1644
1526
  packet_profileless_chat:
1645
1527
  message: anonymousNbt
@@ -1666,13 +1548,7 @@
1666
1548
  block_interaction_type: varint
1667
1549
  small_explosion_particle: Particle
1668
1550
  large_explosion_particle: Particle
1669
- soundId: varint
1670
- _: soundId ?
1671
- if 0:
1672
- soundName: string
1673
- range?: f32
1674
- default:
1675
-
1551
+ sound: ItemSoundHolder
1676
1552
  # MC: ClientboundForgetLevelChunkPacket
1677
1553
  packet_unload_chunk:
1678
1554
  chunkZ: i32
@@ -1683,7 +1559,7 @@
1683
1559
  gameMode: f32
1684
1560
  # MC: ClientboundHorseScreenOpenPacket
1685
1561
  packet_open_horse_window:
1686
- windowId: u8
1562
+ windowId: ContainerID
1687
1563
  nbSlots: varint
1688
1564
  entityId: i32
1689
1565
  # MC: ClientboundHurtAnimationPacket
@@ -1797,7 +1673,7 @@
1797
1673
  ]
1798
1674
  # MC: ClientboundMerchantOffersPacket
1799
1675
  packet_trade_list:
1800
- windowId: varint
1676
+ windowId: ContainerID
1801
1677
  ## https://github.com/extremeheat/extracted_minecraft_data/blob/client1.20.5/client/net/minecraft/world/item/trading/MerchantOffer.java#L210
1802
1678
  trades: []varint
1803
1679
  inputItem1:
@@ -1871,7 +1747,7 @@
1871
1747
  id: i64
1872
1748
  # MC: ClientboundPlaceGhostRecipePacket
1873
1749
  packet_craft_recipe_response:
1874
- windowId: i8
1750
+ windowId: ContainerID
1875
1751
  recipe: string
1876
1752
  # MC: ClientboundPlayerAbilitiesPacket
1877
1753
  packet_abilities:
@@ -1915,308 +1791,37 @@
1915
1791
  players: UUID[]varint
1916
1792
  # MC: ClientboundPlayerInfoUpdatePacket
1917
1793
  packet_player_info:
1918
- action: i8
1794
+ ## ClientboundPlayerInfoUpdatePacket.java#L160
1795
+ action: ["bitflags", {
1796
+ "type": "u8",
1797
+ "flags": [
1798
+ "add_player",
1799
+ "initialize_chat",
1800
+ "update_game_mode",
1801
+ "update_listed",
1802
+ "update_latency",
1803
+ "update_display_name"
1804
+ ]
1805
+ }]
1919
1806
  data: []varint
1920
1807
  uuid: UUID
1921
- player: ../action ?
1922
- if 1: game_profile
1923
- if 3: game_profile
1924
- if 5: game_profile
1925
- if 7: game_profile
1926
- if 9: game_profile
1927
- if 11: game_profile
1928
- if 13: game_profile
1929
- if 15: game_profile
1930
- if 17: game_profile
1931
- if 19: game_profile
1932
- if 21: game_profile
1933
- if 23: game_profile
1934
- if 25: game_profile
1935
- if 27: game_profile
1936
- if 29: game_profile
1937
- if 31: game_profile
1938
- if 33: game_profile
1939
- if 35: game_profile
1940
- if 37: game_profile
1941
- if 39: game_profile
1942
- if 41: game_profile
1943
- if 43: game_profile
1944
- if 45: game_profile
1945
- if 47: game_profile
1946
- if 49: game_profile
1947
- if 51: game_profile
1948
- if 53: game_profile
1949
- if 55: game_profile
1950
- if 57: game_profile
1951
- if 59: game_profile
1952
- if 61: game_profile
1953
- if 63: game_profile
1808
+ player: ../action/add_player ?
1809
+ if true: game_profile
1954
1810
  default: void
1955
- chatSession: ../action ?
1956
- if 2: chat_session
1957
- if 3: chat_session
1958
- if 6: chat_session
1959
- if 7: chat_session
1960
- if 10: chat_session
1961
- if 11: chat_session
1962
- if 14: chat_session
1963
- if 15: chat_session
1964
- if 18: chat_session
1965
- if 19: chat_session
1966
- if 22: chat_session
1967
- if 23: chat_session
1968
- if 26: chat_session
1969
- if 27: chat_session
1970
- if 30: chat_session
1971
- if 31: chat_session
1972
- if 34: chat_session
1973
- if 35: chat_session
1974
- if 38: chat_session
1975
- if 39: chat_session
1976
- if 42: chat_session
1977
- if 43: chat_session
1978
- if 46: chat_session
1979
- if 47: chat_session
1980
- if 50: chat_session
1981
- if 51: chat_session
1982
- if 54: chat_session
1983
- if 55: chat_session
1984
- if 58: chat_session
1985
- if 59: chat_session
1986
- if 62: chat_session
1987
- if 63: chat_session
1811
+ chatSession: ../action/initialize_chat ?
1812
+ if true: chat_session
1988
1813
  default: void
1989
- gamemode: ../action ?
1990
- if 4: varint
1991
- if 5: varint
1992
- if 6: varint
1993
- if 7: varint
1994
- if 12: varint
1995
- if 13: varint
1996
- if 14: varint
1997
- if 15: varint
1998
- if 20: varint
1999
- if 21: varint
2000
- if 22: varint
2001
- if 23: varint
2002
- if 28: varint
2003
- if 29: varint
2004
- if 30: varint
2005
- if 31: varint
2006
- if 36: varint
2007
- if 37: varint
2008
- if 38: varint
2009
- if 39: varint
2010
- if 44: varint
2011
- if 45: varint
2012
- if 46: varint
2013
- if 47: varint
2014
- if 52: varint
2015
- if 53: varint
2016
- if 54: varint
2017
- if 55: varint
2018
- if 60: varint
2019
- if 61: varint
2020
- if 62: varint
2021
- if 63: varint
1814
+ gamemode: ../action/update_game_mode ?
1815
+ if true: varint
2022
1816
  default: void
2023
- listed: ../action ?
2024
- if 8: bool
2025
- if 9: bool
2026
- if 10: bool
2027
- if 11: bool
2028
- if 12: bool
2029
- if 13: bool
2030
- if 14: bool
2031
- if 15: bool
2032
- if 24: bool
2033
- if 25: bool
2034
- if 26: bool
2035
- if 27: bool
2036
- if 28: bool
2037
- if 29: bool
2038
- if 30: bool
2039
- if 31: bool
2040
- if 40: bool
2041
- if 41: bool
2042
- if 42: bool
2043
- if 43: bool
2044
- if 44: bool
2045
- if 45: bool
2046
- if 46: bool
2047
- if 47: bool
2048
- if 56: bool
2049
- if 57: bool
2050
- if 58: bool
2051
- if 59: bool
2052
- if 60: bool
2053
- if 61: bool
2054
- if 62: bool
2055
- if 63: bool
1817
+ listed: ../action/update_listed ?
1818
+ if true: varint
2056
1819
  default: void
2057
- latency: ../action ?
2058
- if 16: varint
2059
- if 17: varint
2060
- if 18: varint
2061
- if 19: varint
2062
- if 20: varint
2063
- if 21: varint
2064
- if 22: varint
2065
- if 23: varint
2066
- if 24: varint
2067
- if 25: varint
2068
- if 26: varint
2069
- if 27: varint
2070
- if 28: varint
2071
- if 29: varint
2072
- if 30: varint
2073
- if 31: varint
2074
- if 48: varint
2075
- if 49: varint
2076
- if 50: varint
2077
- if 51: varint
2078
- if 52: varint
2079
- if 53: varint
2080
- if 54: varint
2081
- if 55: varint
2082
- if 56: varint
2083
- if 57: varint
2084
- if 58: varint
2085
- if 59: varint
2086
- if 60: varint
2087
- if 61: varint
2088
- if 62: varint
2089
- if 63: varint
1820
+ latency: ../action/update_latency ?
1821
+ if true: varint
2090
1822
  default: void
2091
- displayName: ../action ?
2092
- if 32: [
2093
- "option",
2094
- "anonymousNbt"
2095
- ]
2096
- if 33: [
2097
- "option",
2098
- "anonymousNbt"
2099
- ]
2100
- if 34: [
2101
- "option",
2102
- "anonymousNbt"
2103
- ]
2104
- if 35: [
2105
- "option",
2106
- "anonymousNbt"
2107
- ]
2108
- if 36: [
2109
- "option",
2110
- "anonymousNbt"
2111
- ]
2112
- if 37: [
2113
- "option",
2114
- "anonymousNbt"
2115
- ]
2116
- if 38: [
2117
- "option",
2118
- "anonymousNbt"
2119
- ]
2120
- if 39: [
2121
- "option",
2122
- "anonymousNbt"
2123
- ]
2124
- if 40: [
2125
- "option",
2126
- "anonymousNbt"
2127
- ]
2128
- if 41: [
2129
- "option",
2130
- "anonymousNbt"
2131
- ]
2132
- if 42: [
2133
- "option",
2134
- "anonymousNbt"
2135
- ]
2136
- if 43: [
2137
- "option",
2138
- "anonymousNbt"
2139
- ]
2140
- if 44: [
2141
- "option",
2142
- "anonymousNbt"
2143
- ]
2144
- if 45: [
2145
- "option",
2146
- "anonymousNbt"
2147
- ]
2148
- if 46: [
2149
- "option",
2150
- "anonymousNbt"
2151
- ]
2152
- if 47: [
2153
- "option",
2154
- "anonymousNbt"
2155
- ]
2156
- if 48: [
2157
- "option",
2158
- "anonymousNbt"
2159
- ]
2160
- if 49: [
2161
- "option",
2162
- "anonymousNbt"
2163
- ]
2164
- if 50: [
2165
- "option",
2166
- "anonymousNbt"
2167
- ]
2168
- if 51: [
2169
- "option",
2170
- "anonymousNbt"
2171
- ]
2172
- if 52: [
2173
- "option",
2174
- "anonymousNbt"
2175
- ]
2176
- if 53: [
2177
- "option",
2178
- "anonymousNbt"
2179
- ]
2180
- if 54: [
2181
- "option",
2182
- "anonymousNbt"
2183
- ]
2184
- if 55: [
2185
- "option",
2186
- "anonymousNbt"
2187
- ]
2188
- if 56: [
2189
- "option",
2190
- "anonymousNbt"
2191
- ]
2192
- if 57: [
2193
- "option",
2194
- "anonymousNbt"
2195
- ]
2196
- if 58: [
2197
- "option",
2198
- "anonymousNbt"
2199
- ]
2200
- if 59: [
2201
- "option",
2202
- "anonymousNbt"
2203
- ]
2204
- if 60: [
2205
- "option",
2206
- "anonymousNbt"
2207
- ]
2208
- if 61: [
2209
- "option",
2210
- "anonymousNbt"
2211
- ]
2212
- if 62: [
2213
- "option",
2214
- "anonymousNbt"
2215
- ]
2216
- if 63: [
2217
- "option",
2218
- "anonymousNbt"
2219
- ]
1823
+ displayName: ../action/update_display_name ?
1824
+ if true: ["option", "anonymousNbt"]
2220
1825
  default: void
2221
1826
  # MC: ClientboundPlayerLookAtPacket
2222
1827
  packet_face_player:
@@ -2231,6 +1836,12 @@
2231
1836
  entity_feet_eyes: isEntity ?
2232
1837
  if true: varint
2233
1838
  default: void
1839
+
1840
+ # Relative.java
1841
+ PositionUpdateRelatives: ["bitflags", {
1842
+ "type": "u8",
1843
+ "flags": ["x", "y", "z", "yaw", "pitch"]
1844
+ }]
2234
1845
  # MC: ClientboundPlayerPositionPacket
2235
1846
  packet_position:
2236
1847
  x: f64
@@ -2238,7 +1849,7 @@
2238
1849
  z: f64
2239
1850
  yaw: f32
2240
1851
  pitch: f32
2241
- flags: i8
1852
+ flags: PositionUpdateRelatives
2242
1853
  teleportId: varint
2243
1854
  # MC: ClientboundRecipePacket
2244
1855
  packet_unlock_recipes:
@@ -2266,20 +1877,11 @@
2266
1877
  packet_reset_score:
2267
1878
  entity_name: string
2268
1879
  objective_name?: string
2269
- # MC: ClientboundResourcePackPopPacket
2270
- packet_remove_resource_pack:
2271
- uuid?: UUID
2272
- # MC: ClientboundResourcePackPushPacket
2273
- packet_add_resource_pack:
2274
- uuid: UUID
2275
- url: string
2276
- hash: string
2277
- forced: bool
2278
- promptMessage?: anonymousNbt
2279
1880
  # MC: ClientboundRespawnPacket
2280
1881
  packet_respawn:
2281
1882
  worldState: SpawnInfo
2282
- copyMetadata: bool
1883
+ # Bit field: 0b1 - KEEP_ATTRIBUTE_MODIFIERS, 0b10 - KEEP_ENTITY_DATA
1884
+ copyMetadata: u8
2283
1885
  # MC: ClientboundRotateHeadPacket
2284
1886
  packet_entity_head_rotation:
2285
1887
  entityId: varint
@@ -2490,12 +2092,7 @@
2490
2092
  fadeOut: i32
2491
2093
  # MC: ClientboundSoundEntityPacket
2492
2094
  packet_entity_sound_effect:
2493
- soundId: varint
2494
- soundEvent: soundId ?
2495
- if 0:
2496
- resource: string
2497
- range?: f32
2498
- default: void
2095
+ sound: ItemSoundHolder
2499
2096
  soundCategory: soundSource
2500
2097
  entityId: varint
2501
2098
  volume: f32
@@ -2503,13 +2100,7 @@
2503
2100
  seed: i64
2504
2101
  # MC: ClientboundSoundPacket
2505
2102
  packet_sound_effect:
2506
- soundId: varint
2507
- soundEvent: soundId ?
2508
- if 0:
2509
- resource: string
2510
- range?: f32
2511
- default:
2512
-
2103
+ sound: ItemSoundHolder
2513
2104
  soundCategory: soundSource
2514
2105
  x: i32
2515
2106
  y: i32
@@ -2682,10 +2273,10 @@
2682
2273
  if minecraft:crafting_shaped:
2683
2274
  group: string
2684
2275
  category: varint
2685
- width: varint
2686
- height: varint
2687
- ingredients: []$width
2688
- _: ingredient[]$height
2276
+ gridWidth: varint
2277
+ gridHeight: varint
2278
+ ingredients: []$gridWidth
2279
+ _: ingredient[]$gridHeight
2689
2280
  result: Slot
2690
2281
  showNotification: bool
2691
2282
  if minecraft:crafting_special_armordye: minecraft_simple_recipe_format
@@ -2923,8 +2514,8 @@
2923
2514
  if entity_destroy: packet_entity_destroy
2924
2515
  if remove_entity_effect: packet_remove_entity_effect
2925
2516
  if reset_score: packet_reset_score
2926
- if remove_resource_pack: packet_remove_resource_pack
2927
- if add_resource_pack: packet_add_resource_pack
2517
+ if remove_resource_pack: packet_common_remove_resource_pack
2518
+ if add_resource_pack: packet_common_add_resource_pack
2928
2519
  if respawn: packet_respawn
2929
2520
  if entity_head_rotation: packet_entity_head_rotation
2930
2521
  if multi_block_change: packet_multi_block_change
@@ -3043,16 +2634,7 @@
3043
2634
  # MC: ServerboundClientCommandPacket
3044
2635
  packet_client_command:
3045
2636
  actionId: varint
3046
- # MC: ServerboundClientInformationPacket
3047
- packet_settings:
3048
- locale: string
3049
- viewDistance: i8
3050
- chatFlags: varint
3051
- chatColors: bool
3052
- skinParts: u8
3053
- mainHand: varint
3054
- enableTextFiltering: bool
3055
- enableServerListing: bool
2637
+ ## (Settings is common) ##
3056
2638
  # MC: ServerboundCommandSuggestionPacket
3057
2639
  packet_tab_complete:
3058
2640
  transactionId: varint
@@ -3066,7 +2648,7 @@
3066
2648
  enchantment: i8
3067
2649
  # MC: ServerboundContainerClickPacket
3068
2650
  packet_window_click:
3069
- windowId: u8
2651
+ windowId: ContainerID
3070
2652
  stateId: varint
3071
2653
  slot: i16
3072
2654
  mouseButton: i8
@@ -3077,7 +2659,7 @@
3077
2659
  cursorItem: Slot
3078
2660
  # MC: ServerboundContainerClosePacket
3079
2661
  packet_close_window:
3080
- windowId: u8
2662
+ windowId: ContainerID
3081
2663
  # MC: ServerboundContainerSlotStateChangedPacket
3082
2664
  packet_set_slot_state:
3083
2665
  slot_id: varint
@@ -3368,7 +2950,7 @@
3368
2950
  if chat_session_update: packet_chat_session_update
3369
2951
  if chunk_batch_received: packet_chunk_batch_received
3370
2952
  if client_command: packet_client_command
3371
- if settings: packet_settings
2953
+ if settings: packet_common_settings
3372
2954
  if tab_complete: packet_tab_complete
3373
2955
  if configuration_acknowledged: packet_configuration_acknowledged
3374
2956
  if enchant_item: packet_enchant_item