minecraft-data 3.0.0 → 3.3.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 (66) hide show
  1. package/.github/workflows/npm-publish.yml +17 -14
  2. package/data.js +24 -1
  3. package/doc/history.md +9 -0
  4. package/index.d.ts +14 -4
  5. package/minecraft-data/.git +1 -0
  6. package/minecraft-data/.github/workflows/tag.yml +11 -3
  7. package/minecraft-data/README.md +1 -1
  8. package/minecraft-data/data/bedrock/1.16.220/blockStates.json +6575 -6575
  9. package/minecraft-data/data/bedrock/1.17.0/instruments.json +1 -1
  10. package/minecraft-data/data/bedrock/1.17.40/blocks.json +3 -3
  11. package/minecraft-data/data/bedrock/1.18.0/blockLoot.json +56461 -0
  12. package/minecraft-data/data/bedrock/1.18.0/blocksJ2B.json +1 -0
  13. package/minecraft-data/data/bedrock/1.18.0/entityLoot.json +1246 -0
  14. package/minecraft-data/data/bedrock/1.18.0/proto.yml +2 -2
  15. package/minecraft-data/data/bedrock/1.18.0/protocol.json +8 -8
  16. package/minecraft-data/data/bedrock/1.18.0/recipes.json +1442 -1388
  17. package/minecraft-data/data/bedrock/1.18.0/types.yml +3 -3
  18. package/minecraft-data/data/bedrock/1.18.11/blocks.json +3 -3
  19. package/minecraft-data/data/bedrock/1.18.11/proto.yml +3387 -0
  20. package/minecraft-data/data/bedrock/1.18.11/protocol.json +8 -8
  21. package/minecraft-data/data/bedrock/1.18.11/recipes.json +1442 -1388
  22. package/minecraft-data/data/bedrock/1.18.11/types.yml +1800 -0
  23. package/minecraft-data/data/bedrock/1.18.30/blockCollisionShapes.json +863 -0
  24. package/minecraft-data/data/bedrock/1.18.30/blockStates.json +164203 -0
  25. package/minecraft-data/data/bedrock/1.18.30/blocks.json +12829 -0
  26. package/minecraft-data/data/bedrock/1.18.30/blocksB2J.json +6846 -0
  27. package/minecraft-data/data/bedrock/1.18.30/blocksJ2B.json +20344 -0
  28. package/minecraft-data/data/bedrock/1.18.30/items.json +9679 -0
  29. package/minecraft-data/data/bedrock/1.18.30/protocol.json +10098 -0
  30. package/minecraft-data/data/bedrock/1.18.30/recipes.json +16771 -0
  31. package/minecraft-data/data/bedrock/1.18.30/version.json +6 -0
  32. package/minecraft-data/data/bedrock/common/protocolVersions.json +6 -0
  33. package/minecraft-data/data/bedrock/common/versions.json +2 -1
  34. package/minecraft-data/data/bedrock/latest/proto.yml +110 -19
  35. package/minecraft-data/data/bedrock/latest/types.yml +62 -5
  36. package/minecraft-data/data/dataPaths.json +24 -1
  37. package/minecraft-data/data/pc/1.10/items.json +1 -1
  38. package/minecraft-data/data/pc/1.11/items.json +18 -18
  39. package/minecraft-data/data/pc/1.12/instruments.json +1 -1
  40. package/minecraft-data/data/pc/1.12/items.json +18 -18
  41. package/minecraft-data/data/pc/1.13/instruments.json +1 -1
  42. package/minecraft-data/data/pc/1.13/items.json +1 -1
  43. package/minecraft-data/data/pc/1.13.2/instruments.json +1 -1
  44. package/minecraft-data/data/pc/1.13.2/items.json +1 -1
  45. package/minecraft-data/data/pc/1.14/items.json +1 -1
  46. package/minecraft-data/data/pc/1.14.4/instruments.json +1 -1
  47. package/minecraft-data/data/pc/1.14.4/items.json +1 -1
  48. package/minecraft-data/data/pc/1.15.2/instruments.json +1 -1
  49. package/minecraft-data/data/pc/1.15.2/items.json +1 -1
  50. package/minecraft-data/data/pc/1.16.1/instruments.json +1 -1
  51. package/minecraft-data/data/pc/1.16.1/items.json +1 -1
  52. package/minecraft-data/data/pc/1.16.2/items.json +1 -1
  53. package/minecraft-data/data/pc/1.17/biomes.json +134 -134
  54. package/minecraft-data/data/pc/1.17/items.json +1 -1
  55. package/minecraft-data/data/pc/1.18/biomes.json +62 -62
  56. package/minecraft-data/data/pc/1.7/items.json +1 -1
  57. package/minecraft-data/data/pc/1.8/items.json +1 -1
  58. package/minecraft-data/data/pc/1.9/items.json +1 -2
  59. package/minecraft-data/data/pc/common/features.json +3 -3
  60. package/minecraft-data/data/pc/common/protocolVersions.json +98 -0
  61. package/minecraft-data/doc/history.md +20 -0
  62. package/minecraft-data/schemas/biomes_schema.json +0 -4
  63. package/minecraft-data/schemas/blockLoot_schema.json +10 -0
  64. package/minecraft-data/schemas/blocks_schema.json +1 -1
  65. package/minecraft-data/schemas/entityLoot_schema.json +6 -0
  66. package/package.json +3 -3
@@ -0,0 +1,1800 @@
1
+ !StartDocs: Types
2
+
3
+ BehaviourPackInfos: []li16
4
+ uuid: string
5
+ version: string
6
+ size: lu64
7
+ content_key: string
8
+ sub_pack_name: string
9
+ content_identity: string
10
+ has_scripts: bool
11
+
12
+ TexturePackInfos: []li16
13
+ uuid: string
14
+ version: string
15
+ size: lu64
16
+ content_key: string
17
+ sub_pack_name: string
18
+ content_identity: string
19
+ has_scripts: bool
20
+ rtx_enabled: bool
21
+
22
+ ResourcePackIdVersions: []varint
23
+ # The ID of the resource pack.
24
+ uuid: string
25
+ # The version of the resource pack.
26
+ version: string
27
+ # The subpack name of the resource pack.
28
+ name: string
29
+
30
+ ResourcePackIds: string[]li16
31
+
32
+ Experiment:
33
+ name: string
34
+ enabled: bool
35
+
36
+ Experiments: Experiment[]li32
37
+
38
+ GameMode: zigzag32 =>
39
+ 0: survival
40
+ 1: creative
41
+ 2: adventure
42
+ 3: survival_spectator
43
+ 4: creative_spectator
44
+ 5: fallback
45
+
46
+ GameRule:
47
+ name: string
48
+ editable: bool
49
+ type: varint =>
50
+ 1: bool
51
+ 2: int
52
+ 3: float
53
+ value: type?
54
+ if bool: bool
55
+ if int: zigzag32
56
+ if float: lf32
57
+
58
+ GameRules: GameRule[]varint
59
+
60
+ # CacheBlob represents a blob as used in the client side blob cache protocol. It holds a hash of its data and
61
+ # the full data of it.
62
+ Blob:
63
+ # Hash is the hash of the blob. The hash is computed using xxHash, and must be deterministic for the same
64
+ # chunk data.
65
+ hash: lu64
66
+ # Payload is the data of the blob. When sent, the client will associate the Hash of the blob with the
67
+ # Payload in it.
68
+ payload: ByteArray
69
+
70
+ BlockProperties: []varint
71
+ name: string
72
+ state: nbt
73
+
74
+ Itemstates: []varint
75
+ name: string
76
+ runtime_id: li16
77
+ component_based: bool
78
+
79
+
80
+
81
+ ItemExtraDataWithBlockingTick:
82
+ has_nbt: lu16 =>
83
+ 0xffff: 'true'
84
+ 0x0000: 'false'
85
+ nbt: has_nbt ?
86
+ if true:
87
+ version: u8
88
+ nbt: lnbt
89
+ default: void
90
+ can_place_on: ShortArray[]li32
91
+ can_destroy: ShortArray[]li32
92
+ blocking_tick: li64
93
+
94
+ ItemExtraDataWithoutBlockingTick:
95
+ has_nbt: lu16 =>
96
+ 0xffff: 'true'
97
+ 0x0000: 'false'
98
+ nbt: has_nbt ?
99
+ if true:
100
+ version: u8
101
+ nbt: lnbt
102
+ default: void
103
+ can_place_on: ShortArray[]li32
104
+ can_destroy: ShortArray[]li32
105
+
106
+ # Same as below but without a "networkStackID" boolean
107
+ ItemLegacy:
108
+ network_id: zigzag32
109
+ _: network_id?
110
+ if 0: void
111
+ default:
112
+ count: lu16
113
+ metadata: varint
114
+ block_runtime_id: zigzag32
115
+ extra: network_id ?
116
+ # The Shield Item ID is sent in the StartGame packet. It is usually 355 in vanilla.
117
+ if /ShieldItemID: '["encapsulated", { "lengthType": "varint", "type": "ItemExtraDataWithBlockingTick" }]'
118
+ default: '["encapsulated", { "lengthType": "varint", "type": "ItemExtraDataWithoutBlockingTick" }]'
119
+
120
+ # An "ItemStack" here represents an Item instance. You can think about it like a pointer
121
+ # to an item class. The data for the class gets updated with the data in the `item` field
122
+ # As of 1.16.220, now functionally the same as `Item` just without an extra boolean when
123
+ # server auth inventories is disabled.
124
+ Item:
125
+ network_id: zigzag32
126
+ _: network_id?
127
+ if 0: void
128
+ default:
129
+ count: lu16
130
+ metadata: varint
131
+ # When server authoritative inventory is enabled, all allocated items have a unique ID used to identify
132
+ # a specifc item instance.
133
+ has_stack_id: u8
134
+ # StackNetworkID is the network ID of this item *instance*. If the stack is empty, 0 is always written for this
135
+ # field. If not, the field should be set to 1 if the server authoritative inventories are disabled in the
136
+ # StartGame packet, or to a unique stack ID if it is enabled.
137
+ stack_id: has_stack_id ?
138
+ if 0: void
139
+ default: zigzag32
140
+ block_runtime_id: zigzag32
141
+ extra: network_id ?
142
+ # The Shield Item ID is sent in the StartGame packet. It is usually 355 in vanilla.
143
+ ## Really bad compiler hack to allow us to use a global variable
144
+ if /ShieldItemID: '["encapsulated", { "lengthType": "varint", "type": "ItemExtraDataWithBlockingTick" }]'
145
+ default: '["encapsulated", { "lengthType": "varint", "type": "ItemExtraDataWithoutBlockingTick" }]'
146
+
147
+ vec3i:
148
+ x: zigzag32
149
+ y: zigzag32
150
+ z: zigzag32
151
+
152
+ vec3u:
153
+ x: varint
154
+ y: varint
155
+ z: varint
156
+
157
+ vec3f:
158
+ x: lf32
159
+ y: lf32
160
+ z: lf32
161
+
162
+ vec2f:
163
+ x: lf32
164
+ z: lf32
165
+
166
+ MetadataDictionary: []varint
167
+ # https://github.com/pmmp/PocketMine-MP/blob/stable/src/pocketmine/entity/Entity.php#L101
168
+ key: varint =>
169
+ 0: flags
170
+ 1: health #int (minecart/boat)
171
+ 2: variant #int
172
+ 3: color #byte
173
+ 4: nametag #string
174
+ 5: owner_eid #long
175
+ 6: target_eid #long
176
+ 7: air #short
177
+ 8: potion_color #int (ARGB!)
178
+ 9: potion_ambient #byte
179
+ 10: jump_duration #long
180
+ 11: hurt_time #int (minecart/boat)
181
+ 12: hurt_direction #int (minecart/boat)
182
+ 13: paddle_time_left #float
183
+ 14: paddle_time_right #float
184
+ 15: experience_value #int (xp orb)
185
+ 16: minecart_display_block #int (id | (data << 16))
186
+ 17: minecart_display_offset #int
187
+ 18: minecart_has_display #byte (must be 1 for minecart to show block inside)
188
+ 20: old_swell
189
+ 21: swell_dir
190
+ 22: charge_amount
191
+ 23: enderman_held_runtime_id #short
192
+ 24: entity_age #short
193
+ 26: player_flags
194
+ 27: player_index
195
+ 28: player_bed_position #block coords
196
+ 29: fireball_power_x #float
197
+ 30: fireball_power_y
198
+ 31: fireball_power_z
199
+ 32: aux_power
200
+ 33: fish_x
201
+ 34: fish_z
202
+ 35: fish_angle
203
+ 36: potion_aux_value #short
204
+ 37: lead_holder_eid #long
205
+ 38: scale
206
+ 39: interactive_tag #string
207
+ 40: npc_skin_id #string
208
+ 41: url_tag #string
209
+ 42: max_airdata_max_air
210
+ 43: mark_variant #int
211
+ 44: container_type #byte
212
+ 45: container_base_size #int
213
+ 46: container_extra_slots_per_strength #int
214
+ 47: block_target
215
+ 48: wither_invulnerable_ticks #int
216
+ 49: wither_target_1 #long
217
+ 50: wither_target_2 #long
218
+ 51: wither_target_3 #long
219
+ 52: aerial_attack
220
+ 53: boundingbox_width
221
+ 54: boundingbox_height
222
+ 55: fuse_length
223
+ 56: rider_seat_position #vector3f
224
+ 57: rider_rotation_locked #byte
225
+ 58: rider_max_rotation #float
226
+ 59: rider_min_rotation #float
227
+ 60: rider_rotation_offset
228
+ 61: area_effect_cloud_radius #float
229
+ 62: area_effect_cloud_waiting #int
230
+ 63: area_effect_cloud_particle_id #int
231
+ 64: shulker_peek_id #int
232
+ 65: shulker_attach_face #byte
233
+ 66: shulker_attached #short
234
+ 67: shulker_attach_pos
235
+ 68: trading_player_eid #long
236
+ 69: trading_career
237
+ 70: has_command_block
238
+ 71: command_block_command #string
239
+ 72: command_block_last_output #string
240
+ 73: command_block_track_output #byte
241
+ 74: controlling_rider_seat_number #byte
242
+ 75: strength #int
243
+ 76: max_strength #int
244
+ 77: spell_casting_color #int
245
+ 78: limited_life
246
+ 79: armor_stand_pose_index # int
247
+ 80: ender_crystal_time_offset # int
248
+ 81: always_show_nametag # byte
249
+ 82: color_2 # byte
250
+ 83: name_author
251
+ 84: score_tag #String
252
+ 85: balloon_attached_entity # long
253
+ 86: pufferfish_size
254
+ 87: bubble_time
255
+ 88: agent
256
+ 89: sitting_amount
257
+ 90: sitting_amount_previous
258
+ 91: eating_counter
259
+ 92: flags_extended
260
+ 93: laying_amount
261
+ 94: laying_amount_previous
262
+ 95: duration
263
+ 96: spawn_time
264
+ 97: change_rate
265
+ 98: change_on_pickup
266
+ 99: pickup_count
267
+ 100: interact_text
268
+ 101: trade_tier
269
+ 102: max_trade_tier
270
+ 103: trade_experience
271
+ 104: skin_id
272
+ 105: spawning_frames
273
+ 106: command_block_tick_delay
274
+ 107: command_block_execute_on_first_tick
275
+ 108: ambient_sound_interval
276
+ 109: ambient_sound_interval_range
277
+ 110: ambient_sound_event_name
278
+ 111: fall_damage_multiplier
279
+ 112: name_raw_text
280
+ 113: can_ride_target
281
+ 114: low_tier_cured_discount
282
+ 115: high_tier_cured_discount
283
+ 116: nearby_cured_discount
284
+ 117: nearby_cured_discount_timestamp
285
+ 118: hitbox
286
+ 119: is_buoyant
287
+ 120: base_runtime_id
288
+ 121: freezing_effect_strength
289
+ 122: buoyancy_data
290
+ 123: goat_horn_count
291
+ 124: update_properties
292
+ type: varint =>
293
+ 0: byte
294
+ 1: short
295
+ 2: int
296
+ 3: float
297
+ 4: string
298
+ 5: compound
299
+ 6: vec3i
300
+ 7: long
301
+ 8: vec3f
302
+ value: key ?
303
+ if flags: MetadataFlags1
304
+ if flags_extended: MetadataFlags2
305
+ default: type ?
306
+ if byte: i8
307
+ if short: li16
308
+ if int: zigzag32
309
+ if float: lf32
310
+ if string: string
311
+ if compound: nbt
312
+ if vec3i: vec3i
313
+ if long: zigzag64
314
+ if vec3f: vec3f
315
+
316
+ MetadataFlags1: [ "bitflags", {
317
+ "type": "zigzag64",
318
+ "big": true,
319
+ "flags": [
320
+ "onfire",
321
+ "sneaking",
322
+ "riding",
323
+ "sprinting",
324
+ "action",
325
+ "invisible",
326
+ "tempted",
327
+ "inlove",
328
+ "saddled",
329
+ "powered",
330
+ "ignited",
331
+ "baby",
332
+ "converting",
333
+ "critical",
334
+ "can_show_nametag",
335
+ "always_show_nametag",
336
+ "no_ai",
337
+ "silent",
338
+ "wallclimbing",
339
+ "can_climb",
340
+ "swimmer",
341
+ "can_fly",
342
+ "walker",
343
+ "resting",
344
+ "sitting",
345
+ "angry",
346
+ "interested",
347
+ "charged",
348
+ "tamed",
349
+ "orphaned",
350
+ "leashed",
351
+ "sheared",
352
+ "gliding",
353
+ "elder",
354
+ "moving",
355
+ "breathing",
356
+ "chested",
357
+ "stackable",
358
+ "showbase",
359
+ "rearing",
360
+ "vibrating",
361
+ "idling",
362
+ "evoker_spell",
363
+ "charge_attack",
364
+ "wasd_controlled",
365
+ "can_power_jump",
366
+ "linger",
367
+ "has_collision",
368
+ "affected_by_gravity",
369
+ "fire_immune",
370
+ "dancing",
371
+ "enchanted",
372
+ "show_trident_rope", # tridents show an animated rope when enchanted with loyalty after they are thrown and return to their owner. to be combined with data_owner_eid
373
+ "container_private", #inventory is private, doesn't drop contents when killed if true
374
+ "transforming",
375
+ "spin_attack",
376
+ "swimming",
377
+ "bribed", #dolphins have this set when they go to find treasure for the player
378
+ "pregnant",
379
+ "laying_egg",
380
+ "rider_can_pick", #???
381
+ "transition_sitting",
382
+ "eating",
383
+ "laying_down"
384
+ ]
385
+ }]
386
+
387
+ MetadataFlags2: [ "bitflags", {
388
+ "type": "zigzag64",
389
+ "big": true,
390
+ "flags": [
391
+ "sneezing",
392
+ "trusting",
393
+ "rolling",
394
+ "scared",
395
+ "in_scaffolding",
396
+ "over_scaffolding",
397
+ "fall_through_scaffolding",
398
+ "blocking", #shield
399
+ "transition_blocking",
400
+ "blocked_using_shield",
401
+ "blocked_using_damaged_shield",
402
+ "sleeping",
403
+ "wants_to_wake",
404
+ "trade_interest",
405
+ "door_breaker", #...
406
+ "breaking_obstruction",
407
+ "door_opener", #...
408
+ "illager_captain",
409
+ "stunned",
410
+ "roaring",
411
+ "delayed_attacking",
412
+ "avoiding_mobs",
413
+ "avoiding_block",
414
+ "facing_target_to_range_attack",
415
+ "hidden_when_invisible", #??????????????????
416
+ "is_in_ui",
417
+ "stalking",
418
+ "emoting",
419
+ "celebrating",
420
+ "admiring",
421
+ "celebrating_special",
422
+ "unknown95", # 95
423
+ "ram_attack",
424
+ "playing_dead",
425
+ "in_ascendable_block",
426
+ "over_descendable_block",
427
+ "croaking",
428
+ "eat_mob"
429
+ ]
430
+ }]
431
+
432
+ Link:
433
+ ridden_entity_id: zigzag64
434
+ rider_entity_id: zigzag64
435
+ type: u8
436
+ immediate: bool
437
+ rider_initiated: bool
438
+
439
+ Links: Link[]varint
440
+
441
+ EntityAttributes: []varint
442
+ name: string
443
+ min: lf32
444
+ value: lf32
445
+ max: lf32
446
+
447
+ Rotation:
448
+ yaw: byterot
449
+ pitch: byterot
450
+ head_yaw: byterot
451
+
452
+ BlockCoordinates: # mojang...
453
+ x: zigzag32
454
+ y: varint
455
+ z: zigzag32
456
+
457
+ PlayerAttributes: []varint
458
+ min: lf32
459
+ max: lf32
460
+ current: lf32
461
+ default: lf32
462
+ name: string
463
+
464
+ # UseItemTransactionData represents an inventory transaction data object sent when the client uses an item on
465
+ # a block. Also used in PlayerAuthoritativeInput packet
466
+ TransactionUseItem:
467
+ # ActionType is the type of the UseItem inventory transaction. It is one of the action types found above,
468
+ # and specifies the way the player interacted with the block.
469
+ action_type: varint =>
470
+ 0: click_block
471
+ 1: click_air
472
+ 2: break_block
473
+ # BlockPosition is the position of the block that was interacted with. This is only really a correct
474
+ # block position if ActionType is not UseItemActionClickAir.
475
+ block_position: vec3i
476
+ # BlockFace is the face of the block that was interacted with. When clicking the block, it is the face
477
+ # clicked. When breaking the block, it is the face that was last being hit until the block broke.
478
+ face: varint
479
+ # HotBarSlot is the hot bar slot that the player was holding while clicking the block. It should be used
480
+ # to ensure that the hot bar slot and held item are correctly synchronised with the server.
481
+ hotbar_slot: varint
482
+ # HeldItem is the item that was held to interact with the block. The server should check if this item
483
+ # is actually present in the HotBarSlot.
484
+ held_item: Item
485
+ # Position is the position of the player at the time of interaction. For clicking a block, this is the
486
+ # position at that time, whereas for breaking the block it is the position at the time of breaking.
487
+ player_pos: vec3f
488
+ # ClickedPosition is the position that was clicked relative to the block's base coordinate. It can be
489
+ # used to find out exactly where a player clicked the block.
490
+ click_pos: vec3f
491
+ # BlockRuntimeID is the runtime ID of the block that was clicked. It may be used by the server to verify
492
+ # that the player's world client-side is synchronised with the server's.
493
+ block_runtime_id: varint
494
+
495
+ # Actions is a list of actions that took place, that form the inventory transaction together. Each of
496
+ # these actions hold one slot in which one item was changed to another. In general, the combination of
497
+ # all of these actions results in a balanced inventory transaction. This should be checked to ensure that
498
+ # no items are cheated into the inventory.
499
+ TransactionActions: []varint
500
+ source_type: varint =>
501
+ 0: container
502
+ 1: global
503
+ 2: world_interaction
504
+ 3: creative
505
+ 100: craft_slot
506
+ 99999: craft
507
+ _: source_type?
508
+ if container or craft:
509
+ inventory_id: WindowIDVarint
510
+ if world_interaction:
511
+ flags: varint
512
+ if craft or craft_slot:
513
+ action: varint
514
+ default: void
515
+ slot: varint
516
+ old_item: Item
517
+ new_item: Item
518
+
519
+ # The Minecraft bedrock inventory system was refactored, but not all inventory actions use the new packet.
520
+ # This data structure holds actions that have not been updated to the new system.
521
+ TransactionLegacy:
522
+ # LegacyRequestID is an ID that is only non-zero at times when sent by the client. The server should
523
+ # always send 0 for this. When this field is not 0, the LegacySetItemSlots slice below will have values
524
+ # in it.
525
+ # LegacyRequestID ties in with the ItemStackResponse packet. If this field is non-0, the server should
526
+ # respond with an ItemStackResponse packet. Some inventory actions such as dropping an item out of the
527
+ # hotbar are still one using this packet, and the ItemStackResponse packet needs to tie in with it.
528
+ legacy_request_id: zigzag32
529
+ # `legacy_transactions` are only present if the LegacyRequestID is non-zero. These item slots inform the
530
+ # server of the slots that were changed during the inventory transaction, and the server should send
531
+ # back an ItemStackResponse packet with these slots present in it. (Or false with no slots, if rejected.)
532
+ legacy_transactions: legacy_request_id?
533
+ if 0: void
534
+ default: []varint
535
+ container_id: u8
536
+ changed_slots: []varint
537
+ slot_id: u8
538
+
539
+ Transaction:
540
+ # Old transaction system data
541
+ legacy: TransactionLegacy
542
+ # What type of transaction took place
543
+ transaction_type: varint =>
544
+ 0: normal
545
+ 1: inventory_mismatch
546
+ 2: item_use
547
+ 3: item_use_on_entity
548
+ 4: item_release
549
+ # The list of inventory internal actions in this packet, e.g. inventory GUI actions
550
+ actions: TransactionActions
551
+ # Extra data if an intenal inventory transaction did not take place, e.g. use of an item
552
+ transaction_data: transaction_type?
553
+ if normal or inventory_mismatch: void
554
+ # UseItemTransactionData represents an inventory transaction data object sent when the client uses an item on
555
+ # a block.
556
+ if item_use: TransactionUseItem
557
+ # UseItemOnEntityTransactionData represents an inventory transaction data object sent when the client uses
558
+ # an item on an entity.
559
+ if item_use_on_entity:
560
+ # TargetEntityRuntimeID is the entity runtime ID of the target that was clicked. It is the runtime ID
561
+ # that was assigned to it in the AddEntity packet.
562
+ entity_runtime_id: varint64
563
+ # ActionType is the type of the UseItemOnEntity inventory transaction. It is one of the action types
564
+ # found in the constants above, and specifies the way the player interacted with the entity.
565
+ action_type: varint =>
566
+ 0: interact
567
+ 1: attack
568
+ # HotBarSlot is the hot bar slot that the player was holding while clicking the entity. It should be used
569
+ # to ensure that the hot bar slot and held item are correctly synchronised with the server.
570
+ hotbar_slot: zigzag32
571
+ # HeldItem is the item that was held to interact with the entity. The server should check if this item
572
+ # is actually present in the HotBarSlot.
573
+ held_item: Item
574
+ # Position is the position of the player at the time of clicking the entity.
575
+ player_pos: vec3f
576
+ # ClickedPosition is the position that was clicked relative to the entity's base coordinate. It can be
577
+ # used to find out exactly where a player clicked the entity.
578
+ click_pos: vec3f
579
+ # ReleaseItemTransactionData represents an inventory transaction data object sent when the client releases
580
+ # the item it was using, for example when stopping while eating or stopping the charging of a bow.
581
+ if item_release:
582
+ # ActionType is the type of the ReleaseItem inventory transaction. It is one of the action types found
583
+ # in the constants above, and specifies the way the item was released.
584
+ # As of 1.13, the ActionType is always 0. This field can be ignored, because releasing food (by consuming
585
+ # it) or releasing a bow (to shoot an arrow) is essentially the same.
586
+ action_type: varint =>
587
+ 0: release
588
+ 1: consume
589
+ # HotBarSlot is the hot bar slot that the player was holding while releasing the item. It should be used
590
+ # to ensure that the hot bar slot and held item are correctly synchronised with the server.
591
+ hotbar_slot: zigzag32
592
+ # HeldItem is the item that was released. The server should check if this item is actually present in the
593
+ # HotBarSlot.
594
+ held_item: Item
595
+ # HeadPosition is the position of the player's head at the time of releasing the item. This is used
596
+ # mainly for purposes such as spawning eating particles at that position.
597
+ head_pos: vec3f
598
+
599
+ ItemStacks: Item[]varint
600
+
601
+ RecipeIngredient:
602
+ network_id: zigzag32
603
+ _: network_id?
604
+ if 0: void
605
+ default:
606
+ network_data: zigzag32
607
+ count: zigzag32
608
+
609
+ PotionTypeRecipes: []varint
610
+ input_item_id: zigzag32
611
+ input_item_meta: zigzag32
612
+ ingredient_id: zigzag32
613
+ ingredient_meta: zigzag32
614
+ output_item_id: zigzag32
615
+ output_item_meta: zigzag32
616
+
617
+ PotionContainerChangeRecipes: []varint
618
+ input_item_id: zigzag32
619
+ ingredient_id: zigzag32
620
+ output_item_id: zigzag32
621
+
622
+ Recipes: []varint
623
+ type: zigzag32 =>
624
+ 0: shapeless #'ENTRY_SHAPELESS',
625
+ 1: shaped #'ENTRY_SHAPED',
626
+ 2: furnace # 'ENTRY_FURNACE',
627
+ # `furnace_with_metadata` is a recipe specifically used for furnace-type crafting stations. It is equal to
628
+ # `furnace`, except it has an input item with a specific metadata value, instead of any metadata value.
629
+ 3: furnace_with_metadata # 'ENTRY_FURNACE_DATA', // has metadata
630
+ 4: multi #'ENTRY_MULTI', //TODO
631
+ 5: shulker_box #'ENTRY_SHULKER_BOX', //TODO
632
+ 6: shapeless_chemistry #'ENTRY_SHAPELESS_CHEMISTRY', //TODO
633
+ 7: shaped_chemistry #'ENTRY_SHAPED_CHEMISTRY', //TODO
634
+ recipe: type?
635
+ if shapeless or shulker_box or shapeless_chemistry:
636
+ recipe_id: string
637
+ input: RecipeIngredient[]varint
638
+ output: ItemLegacy[]varint
639
+ uuid: uuid
640
+ block: string
641
+ priority: zigzag32
642
+ network_id: varint
643
+ if shaped or shaped_chemistry:
644
+ recipe_id: string
645
+ width: zigzag32
646
+ height: zigzag32
647
+ # 2D input array, size of width*height
648
+ input: []$width
649
+ _: RecipeIngredient[]$height
650
+ output: ItemLegacy[]varint
651
+ uuid: uuid
652
+ block: string
653
+ priority: zigzag32
654
+ network_id: varint
655
+ if furnace:
656
+ input_id: zigzag32
657
+ output: ItemLegacy
658
+ block: string
659
+ if furnace_with_metadata:
660
+ input_id: zigzag32
661
+ input_meta: zigzag32
662
+ output: ItemLegacy
663
+ block: string
664
+ if multi:
665
+ uuid: uuid
666
+ network_id: varint
667
+
668
+ SkinImage:
669
+ width: li32
670
+ height: li32
671
+ data: ByteArray
672
+
673
+ Skin:
674
+ skin_id: string
675
+ play_fab_id: string
676
+ skin_resource_pack: string
677
+ skin_data: SkinImage
678
+ animations: []li32
679
+ skin_image: SkinImage
680
+ animation_type: li32
681
+ animation_frames: lf32
682
+ expression_type: lf32
683
+ cape_data: SkinImage
684
+ geometry_data: string
685
+ geometry_data_version: string
686
+ animation_data: string
687
+
688
+ cape_id: string
689
+ full_skin_id: string
690
+ arm_size: string
691
+ skin_color: string
692
+ personal_pieces: []li32
693
+ piece_id: string
694
+ piece_type: string
695
+ pack_id: string
696
+ is_default_piece: bool
697
+ product_id: string
698
+ piece_tint_colors: []li32
699
+ piece_type: string
700
+ colors: string[]li32
701
+ premium: bool
702
+ persona: bool
703
+ # PersonaCapeOnClassicSkin specifies if the skin had a Persona cape (in-game skin creator cape) equipped
704
+ # on a classic skin.
705
+ cape_on_classic: bool
706
+ primary_user: bool
707
+
708
+ PlayerRecords:
709
+ type: u8 =>
710
+ 0: add
711
+ 1: remove
712
+ records_count: varint
713
+ records: []$records_count
714
+ _: type?
715
+ if add:
716
+ uuid: uuid
717
+ entity_unique_id: zigzag64
718
+ username: string
719
+ xbox_user_id: string
720
+ platform_chat_id: string
721
+ build_platform: li32
722
+ skin_data: Skin
723
+ is_teacher: bool
724
+ is_host: bool
725
+ if remove:
726
+ uuid: uuid
727
+ verified: type ?
728
+ if add: bool[]$records_count
729
+
730
+ Enchant:
731
+ id: u8
732
+ level: u8
733
+
734
+ EnchantOption:
735
+ cost: varint
736
+ slot_flags: li32
737
+ equip_enchants: Enchant[]varint
738
+ held_enchants: Enchant[]varint
739
+ self_enchants: Enchant[]varint
740
+ name: string
741
+ option_id: zigzag32
742
+
743
+ Action: zigzag32 =>
744
+ 0: start_break
745
+ 1: abort_break
746
+ 2: stop_break
747
+ 3: get_updated_block
748
+ 4: drop_item
749
+ 5: start_sleeping
750
+ 6: stop_sleeping
751
+ 7: respawn
752
+ 8: jump
753
+ 9: start_sprint
754
+ 10: stop_sprint
755
+ 11: start_sneak
756
+ 12: stop_sneak
757
+ 13: creative_player_destroy_block
758
+ # sent when spawning in a different dimension to tell the server we spawned
759
+ 14: dimension_change_ack
760
+ 15: start_glide
761
+ 16: stop_glide
762
+ 17: build_denied
763
+ 18: crack_break
764
+ 19: change_skin
765
+ # no longer used
766
+ 20: set_enchatnment_seed
767
+ 21: swimming
768
+ 22: stop_swimming
769
+ 23: start_spin_attack
770
+ 24: stop_spin_attack
771
+ 25: interact_block
772
+ 26: predict_break
773
+ 27: continue_break
774
+
775
+ # Source and Destination point to the source slot from which Count of the item stack were taken and the
776
+ # destination slot to which this item was moved.
777
+ StackRequestSlotInfo:
778
+ # ContainerID is the ID of the container that the slot was in.
779
+ slot_type: ContainerSlotType
780
+ # Slot is the index of the slot within the container with the ContainerID above.
781
+ slot: u8
782
+ # StackNetworkID is the unique stack ID that the client assumes to be present in this slot. The server
783
+ # must check if these IDs match. If they do not match, servers should reject the stack request that the
784
+ # action holding this info was in.
785
+ stack_id: zigzag32
786
+
787
+ # ItemStackRequest is sent by the client to change item stacks in an inventory. It is essentially a
788
+ # replacement of the InventoryTransaction packet added in 1.16 for inventory specific actions, such as moving
789
+ # items around or crafting. The InventoryTransaction packet is still used for actions such as placing blocks
790
+ # and interacting with entities.
791
+ ItemStackRequest:
792
+ # RequestID is a unique ID for the request. This ID is used by the server to send a response for this
793
+ # specific request in the ItemStackResponse packet.
794
+ request_id: varint
795
+ actions: []varint
796
+ type_id: u8 =>
797
+ # TakeStackRequestAction is sent by the client to the server to take x amount of items from one slot in a
798
+ # container to the cursor.
799
+ - take
800
+ # PlaceStackRequestAction is sent by the client to the server to place x amount of items from one slot into
801
+ # another slot, such as when shift clicking an item in the inventory to move it around or when moving an item
802
+ # in the cursor into a slot.
803
+ - place
804
+ # SwapStackRequestAction is sent by the client to swap the item in its cursor with an item present in another
805
+ # container. The two item stacks swap places.
806
+ - swap
807
+ # DropStackRequestAction is sent by the client when it drops an item out of the inventory when it has its
808
+ # inventory opened. This action is not sent when a player drops an item out of the hotbar using the Q button
809
+ # (or the equivalent on mobile). The InventoryTransaction packet is still used for that action, regardless of
810
+ # whether the item stack network IDs are used or not.
811
+ - drop
812
+ # DestroyStackRequestAction is sent by the client when it destroys an item in creative mode by moving it
813
+ # back into the creative inventory.
814
+ - destroy
815
+ # ConsumeStackRequestAction is sent by the client when it uses an item to craft another item. The original
816
+ # item is 'consumed'.
817
+ - consume
818
+ # CreateStackRequestAction is sent by the client when an item is created through being used as part of a
819
+ # recipe. For example, when milk is used to craft a cake, the buckets are leftover. The buckets are moved to
820
+ # the slot sent by the client here.
821
+ # Note that before this is sent, an action for consuming all items in the crafting table/grid is sent. Items
822
+ # that are not fully consumed when used for a recipe should not be destroyed there, but instead, should be
823
+ # turned into their respective resulting items.
824
+ - create
825
+ # (as of 1.18.10) Not currently used
826
+ - place_in_container
827
+ # (as of 1.18.10) Not currently used
828
+ - take_out_container
829
+ # LabTableCombineStackRequestAction is sent by the client when it uses a lab table to combine item stacks.
830
+ - lab_table_combine
831
+ # BeaconPaymentStackRequestAction is sent by the client when it submits an item to enable effects from a
832
+ # beacon. These items will have been moved into the beacon item slot in advance.
833
+ - beacon_payment
834
+ # MineBlockStackRequestAction is sent by the client when it breaks a block.
835
+ - mine_block
836
+ # CraftRecipeStackRequestAction is sent by the client the moment it begins crafting an item. This is the
837
+ # first action sent, before the Consume and Create item stack request actions.
838
+ # This action is also sent when an item is enchanted. Enchanting should be treated mostly the same way as
839
+ # crafting, where the old item is consumed.
840
+ - craft_recipe
841
+ # AutoCraftRecipeStackRequestAction is sent by the client similarly to the CraftRecipeStackRequestAction. The
842
+ # only difference is that the recipe is automatically created and crafted by shift clicking the recipe book.
843
+ - craft_recipe_auto #recipe book?
844
+ # CraftCreativeStackRequestAction is sent by the client when it takes an item out fo the creative inventory.
845
+ # The item is thus not really crafted, but instantly created.
846
+ - craft_creative
847
+ # CraftRecipeOptionalStackRequestAction is sent when using an anvil. When this action is sent, the
848
+ # CustomNames field in the respective stack request is non-empty and contains the name of the item created
849
+ # using the anvil.
850
+ - optional
851
+ # CraftGrindstoneRecipeStackRequestAction is sent when a grindstone recipe is crafted. It contains the RecipeNetworkID
852
+ # to identify the recipe crafted, and the cost for crafting the recipe.
853
+ - craft_grindstone_request
854
+ # CraftLoomRecipeStackRequestAction is sent when a loom recipe is crafted. It simply contains the
855
+ # pattern identifier to figure out what pattern is meant to be applied to the item.
856
+ - craft_loom_request
857
+ # CraftNonImplementedStackRequestAction is an action sent for inventory actions that aren't yet implemented
858
+ # in the new system. These include, for example, anvils.
859
+ - non_implemented # anvils aren't fully implemented yet
860
+ # CraftResultsDeprecatedStackRequestAction is an additional, deprecated packet sent by the client after
861
+ # crafting. It holds the final results and the amount of times the recipe was crafted. It shouldn't be used.
862
+ # This action is also sent when an item is enchanted. Enchanting should be treated mostly the same way as
863
+ # crafting, where the old item is consumed.
864
+ - results_deprecated
865
+ _: type_id ?
866
+ if take or place:
867
+ count: u8
868
+ source: StackRequestSlotInfo
869
+ destination: StackRequestSlotInfo
870
+ if swap:
871
+ # Source and Destination point to the source slot from which Count of the item stack were taken and the
872
+ # destination slot to which this item was moved.
873
+ source: StackRequestSlotInfo
874
+ destination: StackRequestSlotInfo
875
+ if drop:
876
+ # Count is the count of the item in the source slot that was taken towards the destination slot.
877
+ count: u8
878
+ # Source is the source slot from which items were dropped to the ground.
879
+ source: StackRequestSlotInfo
880
+ # Randomly seems to be set to false in most cases. I'm not entirely sure what this does, but this is what
881
+ # vanilla calls this field.
882
+ randomly: bool
883
+ if destroy or consume:
884
+ # Count is the count of the item in the source slot that was destroyed.
885
+ count: u8
886
+ # Source is the source slot from which items came that were destroyed by moving them into the creative
887
+ # inventory.
888
+ source: StackRequestSlotInfo
889
+ if create:
890
+ # ResultsSlot is the slot in the inventory in which the results of the crafting ingredients are to be
891
+ # placed.
892
+ result_slot_id: u8
893
+ if beacon_payment:
894
+ # PrimaryEffect and SecondaryEffect are the effects that were selected from the beacon.
895
+ primary_effect: zigzag32
896
+ secondary_effect: zigzag32
897
+ if mine_block:
898
+ # // Unknown1 ... TODO: Find out what this is for
899
+ unknown1: zigzag32
900
+ # PredictedDurability is the durability of the item that the client assumes to be present at the time
901
+ predicted_durability: zigzag32
902
+ # StackNetworkID is the unique stack ID that the client assumes to be present at the time. The server
903
+ # must check if these IDs match. If they do not match, servers should reject the stack request that the
904
+ # action holding this info was in.
905
+ network_id: zigzag32
906
+ if craft_recipe or craft_recipe_auto:
907
+ # RecipeNetworkID is the network ID of the recipe that is about to be crafted. This network ID matches
908
+ # one of the recipes sent in the CraftingData packet, where each of the recipes have a RecipeNetworkID as
909
+ # of 1.16.
910
+ recipe_network_id: varint
911
+ if craft_creative:
912
+ # The stack ID of the creative item that is being created. This is one of the
913
+ # creative item stack IDs sent in the CreativeContent packet.
914
+ item_id: varint
915
+ if optional:
916
+ # For the cartography table, if a certain MULTI recipe is being called, this points to the network ID that was assigned.
917
+ recipe_network_id: varint
918
+ # Most likely the index in the request's filter strings that this action is using
919
+ filtered_string_index: li32
920
+ if craft_grindstone_request:
921
+ # RecipeNetworkID is the network ID of the recipe that is about to be crafted. This network ID matches
922
+ # one of the recipes sent in the CraftingData packet, where each of the recipes have a RecipeNetworkID as
923
+ recipe_network_id: varint
924
+ # Cost is the cost of the recipe that was crafted.
925
+ cost: varint
926
+ if craft_loom_request:
927
+ # Pattern is the pattern identifier for the loom recipe.
928
+ pattern: string
929
+ if non_implemented: void
930
+ if results_deprecated:
931
+ result_items: ItemLegacy[]varint
932
+ times_crafted: u8
933
+ # CustomNames is a list of custom names involved in the request. This is typically filled with one string
934
+ # when an anvil is used.
935
+ # * Used for the server to determine which strings should be filtered. Used in anvils to verify a renamed item.
936
+ custom_names: string[]varint
937
+
938
+ # ItemStackResponse is a response to an individual ItemStackRequest.
939
+ ItemStackResponses: []varint
940
+ # Status specifies if the request with the RequestID below was successful. If this is the case, the
941
+ # ContainerInfo below will have information on what slots ended up changing. If not, the container info
942
+ # will be empty.
943
+ # A non-0 status means an error occurred and will result in the action being reverted.
944
+ status: u8 =>
945
+ 0: ok
946
+ 1: error
947
+ # RequestID is the unique ID of the request that this response is in reaction to. If rejected, the client
948
+ # will undo the actions from the request with this ID.
949
+ request_id: varint
950
+ _: status ?
951
+ if ok:
952
+ # ContainerInfo holds information on the containers that had their contents changed as a result of the
953
+ # request.
954
+ containers: []varint
955
+ # ContainerID is the container ID of the container that the slots that follow are in. For the main
956
+ # inventory, this value seems to be 0x1b. For the cursor, this value seems to be 0x3a. For the crafting
957
+ # grid, this value seems to be 0x0d.
958
+ # * actually, this is ContainerSlotType - used by the inventory system that specifies the type of slot
959
+ slot_type: ContainerSlotType
960
+ # SlotInfo holds information on what item stack should be present in specific slots in the container.
961
+ slots: []varint
962
+ # Slot and HotbarSlot seem to be the same value every time: The slot that was actually changed. I'm not
963
+ # sure if these slots ever differ.
964
+ slot: u8
965
+ hotbar_slot: u8
966
+ # Count is the total count of the item stack. This count will be shown client-side after the response is
967
+ # sent to the client.
968
+ count: u8
969
+ # StackNetworkID is the network ID of the new stack at a specific slot.
970
+ item_stack_id: varint
971
+ # CustomName is the custom name of the item stack. It is used in relation to text filtering.
972
+ custom_name: string
973
+ # DurabilityCorrection is the current durability of the item stack. This durability will be shown
974
+ # client-side after the response is sent to the client.
975
+ durability_correction: zigzag32
976
+
977
+
978
+ ItemComponentList: []varint
979
+ # Name is the name of the item, which is a name like 'minecraft:stick'.
980
+ name: string
981
+ # Data is a map containing the components and properties of the item.
982
+ nbt: nbt
983
+
984
+ CommandOrigin:
985
+ # Origin is one of the values above that specifies the origin of the command. The origin may change,
986
+ # depending on what part of the client actually called the command. The command may be issued by a
987
+ # websocket server, for example.
988
+ type: varint =>
989
+ 0: player
990
+ 1: block
991
+ 2: minecart_block
992
+ 3: dev_console
993
+ 4: test
994
+ 5: automation_player
995
+ 6: client_automation
996
+ 7: dedicated_server
997
+ 8: entity
998
+ 9: virtual
999
+ 10: game_argument
1000
+ 11: entity_server
1001
+ 12: precompiled
1002
+ 13: game_director_entity_server # ?
1003
+ 14: script
1004
+ 15: executor
1005
+
1006
+ # UUID is the UUID of the command called. This UUID is a bit odd as it is not specified by the server. It
1007
+ # is not clear what exactly this UUID is meant to identify, but it is unique for each command called.
1008
+ uuid: uuid
1009
+ # RequestID is an ID that identifies the request of the client. The server should send a CommandOrigin
1010
+ # with the same request ID to ensure it can be matched with the request by the caller of the command.
1011
+ # This is especially important for websocket servers and it seems that this field is only non-empty for
1012
+ # these websocket servers.
1013
+ request_id: string
1014
+ # PlayerUniqueID is an ID that identifies the player, the same as the one found in the AdventureSettings
1015
+ # packet. Filling it out with 0 seems to work.
1016
+ # PlayerUniqueID is only written if Origin is CommandOriginDevConsole or CommandOriginTest.
1017
+ player_entity_id: type?
1018
+ if dev_console or test:
1019
+ player_entity_id: zigzag64
1020
+
1021
+ # MapTrackedObject is an object on a map that is 'tracked' by the client, such as an entity or a block. This
1022
+ # object may move, which is handled client-side.
1023
+ TrackedObject:
1024
+ # Type is the type of the tracked object. It is either MapObjectTypeEntity or MapObjectTypeBlock.
1025
+ type: li32 =>
1026
+ 0: entity
1027
+ 1: block
1028
+ # EntityUniqueID is the unique ID of the entity, if the tracked object was an entity. It needs not to be
1029
+ # filled out if Type is not MapObjectTypeEntity.
1030
+ entity_unique_id: type ?
1031
+ if entity: zigzag64
1032
+ # BlockPosition is the position of the block, if the tracked object was a block. It needs not to be
1033
+ # filled out if Type is not MapObjectTypeBlock.
1034
+ block_position: type ?
1035
+ if block: BlockCoordinates
1036
+
1037
+ # MapDecoration is a fixed decoration on a map: Its position or other properties do not change automatically
1038
+ # client-side.
1039
+ MapDecoration:
1040
+ type: u8
1041
+ # Rotation is the rotation of the map decoration. It is byte due to the 16 fixed directions that the
1042
+ # map decoration may face.
1043
+ rotation: u8
1044
+ # X is the offset on the X axis in pixels of the decoration.
1045
+ x: u8
1046
+ # Y is the offset on the Y axis in pixels of the decoration.
1047
+ y: u8
1048
+ # Label is the name of the map decoration. This name may be of any value.
1049
+ label: string
1050
+ # Colour is the colour of the map decoration. Some map decoration types have a specific colour set
1051
+ # automatically, whereas others may be changed.
1052
+ color_abgr: varint
1053
+
1054
+
1055
+ StructureBlockSettings:
1056
+ # PaletteName is the name of the palette used in the structure. Currently, it seems that this field is
1057
+ # always 'default'.
1058
+ palette_name: string
1059
+ # IgnoreEntities specifies if the structure should ignore entities or include them. If set to false,
1060
+ # entities will also show up in the exported structure.
1061
+ ignore_entities: bool
1062
+ # IgnoreBlocks specifies if the structure should ignore blocks or include them. If set to false, blocks
1063
+ # will show up in the exported structure.
1064
+ ignore_blocks: bool
1065
+ # Size is the size of the area that is about to be exported. The area exported will start at the
1066
+ # Position + Offset, and will extend as far as Size specifies.
1067
+ size: BlockCoordinates
1068
+ # Offset is the offset position that was set in the structure block. The area exported is offset by this
1069
+ # position.
1070
+ # **TODO**: This will be renamed to offset soon
1071
+ structure_offset: BlockCoordinates
1072
+ # LastEditingPlayerUniqueID is the unique ID of the player that last edited the structure block that
1073
+ # these settings concern.
1074
+ last_editing_player_unique_id: zigzag64
1075
+ # Rotation is the rotation that the structure block should obtain. See the constants above for available
1076
+ # options.
1077
+ rotation: u8 =>
1078
+ 0: none
1079
+ 1: 90_deg
1080
+ 2: 180_deg
1081
+ 3: 270_deg
1082
+ # Mirror specifies the way the structure should be mirrored. It is either no mirror at all, mirror on the
1083
+ # x/z axis or both.
1084
+ mirror: u8 =>
1085
+ 0: none
1086
+ 1: x_axis
1087
+ 2: z_axis
1088
+ 3: both_axes
1089
+ animation_mode: u8 =>
1090
+ 0: none
1091
+ 1: layers
1092
+ 2: blocks
1093
+ # How long the duration for this animation is
1094
+ animation_duration: lf32
1095
+ # Integrity is usually 1, but may be set to a number between 0 and 1 to omit blocks randomly, using
1096
+ # the Seed that follows.
1097
+ integrity: lf32
1098
+ # Seed is the seed used to omit blocks if Integrity is not equal to one. If the Seed is 0, a random
1099
+ # seed is selected to omit blocks.
1100
+ seed: lu32
1101
+ # Pivot is the pivot around which the structure may be rotated.
1102
+ pivot: vec3f
1103
+
1104
+ # EducationSharedResourceURI is an education edition feature that is used for transmitting
1105
+ # education resource settings to clients. It contains a button name and a link URL.
1106
+ EducationSharedResourceURI:
1107
+ # ButtonName is the button name of the resource URI.
1108
+ button_name: string
1109
+ # LinkURI is the link URI for the resource URI.
1110
+ link_uri: string
1111
+
1112
+ EducationExternalLinkSettings:
1113
+ # URL is the external link URL.
1114
+ url: string
1115
+ # DisplayName is the display name in game.
1116
+ display_name: string
1117
+
1118
+ BlockUpdate:
1119
+ position: BlockCoordinates
1120
+ runtime_id: varint
1121
+ flags: varint
1122
+ # EntityUniqueID is the unique ID of the falling block entity that the block transitions to or that the
1123
+ # entity transitions from.
1124
+ # Note that for both possible values for TransitionType, the EntityUniqueID should point to the falling
1125
+ # block entity involved.
1126
+ entity_unique_id: zigzag64
1127
+ # TransitionType is the type of the transition that happened. It is either BlockToEntityTransition, when
1128
+ # a block placed becomes a falling entity, or EntityToBlockTransition, when a falling entity hits the
1129
+ # ground and becomes a solid block again.
1130
+ transition_type: varint => TransitionType
1131
+
1132
+ TransitionType: =>
1133
+ # For falling sand, when a sand turns to an entity
1134
+ 0: entity
1135
+ # When sand turns back to a new block
1136
+ 1: create
1137
+ 2: destroy
1138
+
1139
+ MaterialReducer:
1140
+ mix: zigzag32
1141
+ items:
1142
+ network_id: zigzag32
1143
+ count: zigzag32
1144
+
1145
+ # List of Window IDs. When a new container is opened (container_open), a new sequential Window ID is created.
1146
+ # Below window IDs are hard-coded and created when the game starts and the server does not
1147
+ # send a `container_open` for them.
1148
+ WindowID: i8 =>
1149
+ -100: drop_contents
1150
+ -24: beacon
1151
+ -23: trading_output
1152
+ -22: trading_use_inputs
1153
+ -21: trading_input_2
1154
+ -20: trading_input_1
1155
+ -17: enchant_output
1156
+ -16: enchant_material
1157
+ -15: enchant_input
1158
+ -13: anvil_output
1159
+ -12: anvil_result
1160
+ -11: anvil_material
1161
+ -10: container_input
1162
+ -5: crafting_use_ingredient
1163
+ -4: crafting_result
1164
+ -3: crafting_remove_ingredient
1165
+ -2: crafting_add_ingredient
1166
+ -1: none
1167
+ 0: inventory
1168
+ 1: first
1169
+ 100: last
1170
+ 119: offhand
1171
+ 120: armor
1172
+ 121: creative
1173
+ 122: hotbar
1174
+ 123: fixed_inventory
1175
+ 124: ui
1176
+
1177
+ WindowIDVarint: varint =>
1178
+ -100: drop_contents
1179
+ -24: beacon
1180
+ -23: trading_output
1181
+ -22: trading_use_inputs
1182
+ -21: trading_input_2
1183
+ -20: trading_input_1
1184
+ -17: enchant_output
1185
+ -16: enchant_material
1186
+ -15: enchant_input
1187
+ -13: anvil_output
1188
+ -12: anvil_result
1189
+ -11: anvil_material
1190
+ -10: container_input
1191
+ -5: crafting_use_ingredient
1192
+ -4: crafting_result
1193
+ -3: crafting_remove_ingredient
1194
+ -2: crafting_add_ingredient
1195
+ -1: none
1196
+ 0: inventory
1197
+ 1: first
1198
+ 100: last
1199
+ 119: offhand
1200
+ 120: armor
1201
+ 121: creative
1202
+ 122: hotbar
1203
+ 123: fixed_inventory
1204
+ 124: ui
1205
+
1206
+ WindowType: i8 =>
1207
+ -9: none
1208
+ -1: inventory
1209
+ 0: container
1210
+ 1: workbench
1211
+ 2: furnace
1212
+ 3: enchantment
1213
+ 4: brewing_stand
1214
+ 5: anvil
1215
+ 6: dispenser
1216
+ 7: dropper
1217
+ 8: hopper
1218
+ 9: cauldron
1219
+ 10: minecart_chest
1220
+ 11: minecart_hopper
1221
+ 12: horse
1222
+ 13: beacon
1223
+ 14: structure_editor
1224
+ 15: trading
1225
+ 16: command_block
1226
+ 17: jukebox
1227
+ 18: armor
1228
+ 19: hand
1229
+ 20: compound_creator
1230
+ 21: element_constructor
1231
+ 22: material_reducer
1232
+ 23: lab_table
1233
+ 24: loom
1234
+ 25: lectern
1235
+ 26: grindstone
1236
+ 27: blast_furnace
1237
+ 28: smoker
1238
+ 29: stonecutter
1239
+ 30: cartography
1240
+ 31: hud
1241
+ 32: jigsaw_editor
1242
+ 33: smithing_table
1243
+
1244
+ # Used in inventory transactions.
1245
+ ContainerSlotType: u8 =>
1246
+ - anvil_input
1247
+ - anvil_material
1248
+ - anvil_result
1249
+ - smithing_table_input
1250
+ - smithing_table_material
1251
+ - smithing_table_result
1252
+ - armor
1253
+ - container
1254
+ - beacon_payment
1255
+ - brewing_input
1256
+ - brewing_result
1257
+ - brewing_fuel
1258
+ - hotbar_and_inventory
1259
+ - crafting_input
1260
+ - crafting_output
1261
+ - recipe_construction
1262
+ - recipe_nature
1263
+ - recipe_items
1264
+ - recipe_search
1265
+ - recipe_search_bar
1266
+ - recipe_equipment
1267
+ - enchanting_input
1268
+ - enchanting_lapis
1269
+ - furnace_fuel
1270
+ - furnace_ingredient
1271
+ - furnace_output
1272
+ - horse_equip
1273
+ - hotbar
1274
+ - inventory
1275
+ - shulker
1276
+ - trade_ingredient1
1277
+ - trade_ingredient2
1278
+ - trade_result
1279
+ - offhand
1280
+ - compcreate_input
1281
+ - compcreate_output
1282
+ - elemconstruct_output
1283
+ - matreduce_input
1284
+ - matreduce_output
1285
+ - labtable_input
1286
+ - loom_input
1287
+ - loom_dye
1288
+ - loom_material
1289
+ - loom_result
1290
+ - blast_furnace_ingredient
1291
+ - smoker_ingredient
1292
+ - trade2_ingredient1
1293
+ - trade2_ingredient2
1294
+ - trade2_result
1295
+ - grindstone_input
1296
+ - grindstone_additional
1297
+ - grindstone_result
1298
+ - stonecutter_input
1299
+ - stonecutter_result
1300
+ - cartography_input
1301
+ - cartography_additional
1302
+ - cartography_result
1303
+ - barrel
1304
+ - cursor
1305
+ - creative_output
1306
+
1307
+ SoundType: varint =>
1308
+ - ItemUseOn
1309
+ - Hit
1310
+ - Step
1311
+ - Fly
1312
+ - Jump
1313
+ - Break
1314
+ - Place
1315
+ - HeavyStep
1316
+ - Gallop
1317
+ - Fall
1318
+ - Ambient
1319
+ - AmbientBaby
1320
+ - AmbientInWater
1321
+ - Breathe
1322
+ - Death
1323
+ - DeathInWater
1324
+ - DeathToZombie
1325
+ - Hurt
1326
+ - HurtInWater
1327
+ - Mad
1328
+ - Boost
1329
+ - Bow
1330
+ - SquishBig
1331
+ - SquishSmall
1332
+ - FallBig
1333
+ - FallSmall
1334
+ - Splash
1335
+ - Fizz
1336
+ - Flap
1337
+ - Swim
1338
+ - Drink
1339
+ - Eat
1340
+ - Takeoff
1341
+ - Shake
1342
+ - Plop
1343
+ - Land
1344
+ - Saddle
1345
+ - Armor
1346
+ - MobArmorStandPlace
1347
+ - AddChest
1348
+ - Throw
1349
+ - Attack
1350
+ - AttackNoDamage
1351
+ - AttackStrong
1352
+ - Warn
1353
+ - Shear
1354
+ - Milk
1355
+ - Thunder
1356
+ - Explode
1357
+ - Fire
1358
+ - Ignite
1359
+ - Fuse
1360
+ - Stare
1361
+ - Spawn
1362
+ - Shoot
1363
+ - BreakBlock
1364
+ - Launch
1365
+ - Blast
1366
+ - LargeBlast
1367
+ - Twinkle
1368
+ - Remedy
1369
+ - Infect
1370
+ - LevelUp
1371
+ - BowHit
1372
+ - BulletHit
1373
+ - ExtinguishFire
1374
+ - ItemFizz
1375
+ - ChestOpen
1376
+ - ChestClosed
1377
+ - ShulkerBoxOpen
1378
+ - ShulkerBoxClosed
1379
+ - EnderChestOpen
1380
+ - EnderChestClosed
1381
+ - PowerOn
1382
+ - PowerOff
1383
+ - Attach
1384
+ - Detach
1385
+ - Deny
1386
+ - Tripod
1387
+ - Pop
1388
+ - DropSlot
1389
+ - Note
1390
+ - Thorns
1391
+ - PistonIn
1392
+ - PistonOut
1393
+ - Portal
1394
+ - Water
1395
+ - LavaPop
1396
+ - Lava
1397
+ - Burp
1398
+ - BucketFillWater
1399
+ - BucketFillLava
1400
+ - BucketEmptyWater
1401
+ - BucketEmptyLava
1402
+ - ArmorEquipChain
1403
+ - ArmorEquipDiamond
1404
+ - ArmorEquipGeneric
1405
+ - ArmorEquipGold
1406
+ - ArmorEquipIron
1407
+ - ArmorEquipLeather
1408
+ - ArmorEquipElytra
1409
+ - Record13
1410
+ - RecordCat
1411
+ - RecordBlocks
1412
+ - RecordChirp
1413
+ - RecordFar
1414
+ - RecordMall
1415
+ - RecordMellohi
1416
+ - RecordStal
1417
+ - RecordStrad
1418
+ - RecordWard
1419
+ - Record11
1420
+ - RecordWait
1421
+ - unknown1
1422
+ - Flop
1423
+ - ElderGuardianCurse
1424
+ - MobWarning
1425
+ - MobWarningBaby
1426
+ - Teleport
1427
+ - ShulkerOpen
1428
+ - ShulkerClose
1429
+ - Haggle
1430
+ - HaggleYes
1431
+ - HaggleNo
1432
+ - HaggleIdle
1433
+ - ChorusGrow
1434
+ - ChorusDeath
1435
+ - Glass
1436
+ - PotionBrewed
1437
+ - CastSpell
1438
+ - PrepareAttack
1439
+ - PrepareSummon
1440
+ - PrepareWololo
1441
+ - Fang
1442
+ - Charge
1443
+ - CameraTakePicture
1444
+ - LeashKnotPlace
1445
+ - LeashKnotBreak
1446
+ - Growl
1447
+ - Whine
1448
+ - Pant
1449
+ - Purr
1450
+ - Purreow
1451
+ - DeathMinVolume
1452
+ - DeathMidVolume
1453
+ - unknown2
1454
+ - ImitateCaveSpider
1455
+ - ImitateCreeper
1456
+ - ImitateElderGuardian
1457
+ - ImitateEnderDragon
1458
+ - ImitateEnderman
1459
+ - unknown3
1460
+ - ImitateEvocationIllager
1461
+ - ImitateGhast
1462
+ - ImitateHusk
1463
+ - ImitateIllusionIllager
1464
+ - ImitateMagmaCube
1465
+ - ImitatePolarBear
1466
+ - ImitateShulker
1467
+ - ImitateSilverfish
1468
+ - ImitateSkeleton
1469
+ - ImitateSlime
1470
+ - ImitateSpider
1471
+ - ImitateStray
1472
+ - ImitateVex
1473
+ - ImitateVindicationIllager
1474
+ - ImitateWitch
1475
+ - ImitateWither
1476
+ - ImitateWitherSkeleton
1477
+ - ImitateWolf
1478
+ - ImitateZombie
1479
+ - ImitateZombiePigman
1480
+ - ImitateZombieVillager
1481
+ - BlockEndPortalFrameFill
1482
+ - BlockEndPortalSpawn
1483
+ - RandomAnvilUse
1484
+ - BottleDragonBreath
1485
+ - PortalTravel
1486
+ - ItemTridentHit
1487
+ - ItemTridentReturn
1488
+ - ItemTridentRiptide1
1489
+ - ItemTridentRiptide2
1490
+ - ItemTridentRiptide3
1491
+ - ItemTridentThrow
1492
+ - ItemTridentThunder
1493
+ - ItemTridentHitGround
1494
+ - Default
1495
+ - BlockFletchingTableUse
1496
+ - ElemConstructOpen
1497
+ - IceBombHit
1498
+ - BalloonPop
1499
+ - LtReactionIceBomb
1500
+ - LtReactionBleach
1501
+ - LtReactionEPaste
1502
+ - LtReactionEPaste2
1503
+ - LtReactionFertilizer
1504
+ - LtReactionFireball
1505
+ - LtReactionMgsalt
1506
+ - LtReactionMiscfire
1507
+ - LtReactionFire
1508
+ - LtReactionMiscexplosion
1509
+ - LtReactionMiscmystical
1510
+ - LtReactionMiscmystical2
1511
+ - LtReactionProduct
1512
+ - SparklerUse
1513
+ - GlowstickUse
1514
+ - SparklerActive
1515
+ - ConvertToDrowned
1516
+ - BucketFillFish
1517
+ - BucketEmptyFish
1518
+ - BubbleUp
1519
+ - BubbleDown
1520
+ - BubblePop
1521
+ - BubbleUpInside
1522
+ - BubbleDownInside
1523
+ - HurtBaby
1524
+ - DeathBaby
1525
+ - StepBaby
1526
+ - BabySpawn
1527
+ - Born
1528
+ - BlockTurtleEggBreak
1529
+ - BlockTurtleEggCrack
1530
+ - BlockTurtleEggHatch
1531
+ - TurtleLayEgg
1532
+ - BlockTurtleEggAttack
1533
+ - BeaconActivate
1534
+ - BeaconAmbient
1535
+ - BeaconDeactivate
1536
+ - BeaconPower
1537
+ - ConduitActivate
1538
+ - ConduitAmbient
1539
+ - ConduitAttack
1540
+ - ConduitDeactivate
1541
+ - ConduitShort
1542
+ - Swoop
1543
+ - BlockBambooSaplingPlace
1544
+ - PreSneeze
1545
+ - Sneeze
1546
+ - AmbientTame
1547
+ - Scared
1548
+ - BlockScaffoldingClimb
1549
+ - CrossbowLoadingStart
1550
+ - CrossbowLoadingMiddle
1551
+ - CrossbowLoadingEnd
1552
+ - CrossbowShoot
1553
+ - CrossbowQuickChargeStart
1554
+ - CrossbowQuickChargeMiddle
1555
+ - CrossbowQuickChargeEnd
1556
+ - AmbientAggressive
1557
+ - AmbientWorried
1558
+ - CantBreed
1559
+ - ItemShieldBlock
1560
+ - ItemBookPut
1561
+ - BlockGrindstoneUse
1562
+ - BlockBellHit
1563
+ - BlockCampfireCrackle
1564
+ - Roar
1565
+ - Stun
1566
+ - BlockSweetBerryBushHurt
1567
+ - BlockSweetBerryBushPick
1568
+ - UICartographyTableTakeResult
1569
+ - UIStoneCutterTakeResult
1570
+ - BlockComposterEmpty
1571
+ - BlockComposterFill
1572
+ - BlockComposterFillSuccess
1573
+ - BlockComposterReady
1574
+ - BlockBarrelOpen
1575
+ - BlockBarrelClose
1576
+ - RaidHorn
1577
+ - BlockLoomUse
1578
+ - AmbientRaid
1579
+ - UICartographyTableUse
1580
+ - UIStoneCutterUse
1581
+ - UILoomUse
1582
+ - SmokerUse
1583
+ - BlastFurnaceUse
1584
+ - SmithingTableUse
1585
+ - Screech
1586
+ - Sleep
1587
+ - FurnaceUse
1588
+ - MooshroomConvert
1589
+ - MilkSuspiciously
1590
+ - Celebrate
1591
+ - JumpPrevent
1592
+ - AmbientPollinate
1593
+ - BeeHiveDrip
1594
+ - BeeHiveEnter
1595
+ - BeeHiveExit
1596
+ - BeeHiveWork
1597
+ - BeeHiveShear
1598
+ - HoneyBottleDrink
1599
+ - AmbientCave
1600
+ - Retreat
1601
+ - ConvertToZombified
1602
+ - Admire
1603
+ - StepLava
1604
+ - Tempt
1605
+ - Panic
1606
+ - Angry
1607
+ - AmbientWarpedForest
1608
+ - AmbientSoulsandValley
1609
+ - AmbientNetherWastes
1610
+ - AmbientBasaltDeltas
1611
+ - AmbientCrimsonForest
1612
+ - RespawnAnchorCharge
1613
+ - RespawnAnchorDeplete
1614
+ - RespawnAnchorSetSpawn
1615
+ - RespawnAnchorAmbient
1616
+ - SoulEscapeQuiet
1617
+ - SoulEscapeLoud
1618
+ - RecordPigstep
1619
+ - LinkCompassToLodestone
1620
+ - BlockSmithingTableUse
1621
+ - EquipNetherite
1622
+ - AmbientLoopWarpedForest
1623
+ - AmbientLoopSoulsandValley
1624
+ - AmbientLoopNetherWastes
1625
+ - AmbientLoopBasaltDeltas
1626
+ - AmbientLoopCrimsonForest
1627
+ - AmbientAdditionWarpedForest
1628
+ - AmbientAdditionSoulsandValley
1629
+ - AmbientAdditionNetherWastes
1630
+ - AmbientAdditionBasaltDeltas
1631
+ - AmbientAdditionCrimsonForest
1632
+ - SculkSensorPowerOn
1633
+ - SculkSensorPowerOff
1634
+ - BucketFillPowderSnow
1635
+ - BucketEmptyPowderSnow
1636
+ - PointedDripstoneCauldronDripWater
1637
+ - PointedDripstoneCauldronDripLava
1638
+ - PointedDripstoneDripWater
1639
+ - PointedDripstoneDripLava
1640
+ - CaveVinesPickBerries
1641
+ - BigDripleafTiltDown
1642
+ - BigDripleafTiltUp
1643
+ - unknown335
1644
+ - unknown336
1645
+ - unknown337
1646
+ - unknown338
1647
+ - copper_wax_on
1648
+ - copper_wax_off
1649
+ - scrape
1650
+ - player_hurt_drown
1651
+ - player_hurt_on_fire
1652
+ - player_hurt_freeze
1653
+ - use_spyglass
1654
+ - stop_using_spyglass
1655
+ - amethyst_block_chime
1656
+ - ambient_screamer
1657
+ - hurt_screamer
1658
+ - death_screamer
1659
+ - milk_screamer
1660
+ - jump_to_block
1661
+ - pre_ram
1662
+ - pre_ram_screamer
1663
+ - ram_impact
1664
+ - ram_impact_screamer
1665
+ - squid_ink_squirt
1666
+ - glow_squid_ink_squirt
1667
+ - convert_to_stray
1668
+ - extinguish_candle
1669
+ - ambient_candle
1670
+ - sculk_catalyst_bloom
1671
+ - sculk_shrieker_shriek
1672
+ - warden_nearby_close
1673
+ - warden_nearby_closer
1674
+ - warden_nearby_closest
1675
+ - warden_slightly_angry
1676
+ - record_otherside
1677
+ - tongue
1678
+ - crack_iron_golem
1679
+ - repair_iron_golem
1680
+ - Undefined
1681
+
1682
+ # TODO: remove?
1683
+ LegacyEntityType: li32 =>
1684
+ 10: chicken
1685
+ 11: cow
1686
+ 12: pig
1687
+ 13: sheep
1688
+ 14: wolf
1689
+ 15: villager
1690
+ 16: mooshroom
1691
+ 17: squid
1692
+ 18: rabbit
1693
+ 19: bat
1694
+ 20: iron_golem
1695
+ 21: snow_golem
1696
+ 22: ocelot
1697
+ 23: horse
1698
+ 24: donkey
1699
+ 25: mule
1700
+ 26: skeleton_horse
1701
+ 27: zombie_horse
1702
+ 28: polar_bear
1703
+ 29: llama
1704
+ 30: parrot
1705
+ 31: dolphin
1706
+ 32: zombie
1707
+ 33: creeper
1708
+ 34: skeleton
1709
+ 35: spider
1710
+ 36: zombie_pigman
1711
+ 37: slime
1712
+ 38: enderman
1713
+ 39: silverfish
1714
+ 40: cave_spider
1715
+ 41: ghast
1716
+ 42: magma_cube
1717
+ 43: blaze
1718
+ 44: zombie_villager
1719
+ 45: witch
1720
+ 46: stray
1721
+ 47: husk
1722
+ 48: wither_skeleton
1723
+ 49: guardian
1724
+ 50: elder_guardian
1725
+ 51: npc
1726
+ 52: wither
1727
+ 53: ender_dragon
1728
+ 54: shulker
1729
+ 55: endermite
1730
+ 56: agent # LEARN_TO_CODE_MASCOT
1731
+ 57: vindicator
1732
+ 58: phantom
1733
+ 61: armor_stand
1734
+ 62: tripod_camera
1735
+ 63: player
1736
+ 64: item
1737
+ 65: tnt
1738
+ 66: falling_block
1739
+ 67: moving_block
1740
+ 68: xp_bottle
1741
+ 69: xp_orb
1742
+ 70: eye_of_ender_signal
1743
+ 71: ender_crystal
1744
+ 72: fireworks_rocket
1745
+ 73: thrown_trident
1746
+ 74: turtle
1747
+ 75: cat
1748
+ 76: shulker_bullet
1749
+ 77: fishing_hook
1750
+ 78: chalkboard
1751
+ 79: dragon_fireball
1752
+ 80: arrow
1753
+ 81: snowball
1754
+ 82: egg
1755
+ 83: painting
1756
+ 84: minecart
1757
+ 85: fireball
1758
+ 86: splash_potion
1759
+ 87: ender_pearl
1760
+ 88: leash_knot
1761
+ 89: wither_skull
1762
+ 90: boat
1763
+ 91: wither_skull_dangerous
1764
+ 93: lightning_bolt
1765
+ 94: small_fireball
1766
+ 95: area_effect_cloud
1767
+ 96: hopper_minecart
1768
+ 97: tnt_minecart
1769
+ 98: chest_minecart
1770
+ 100: command_block_minecart
1771
+ 101: lingering_potion
1772
+ 102: llama_spit
1773
+ 103: evocation_fang
1774
+ 104: evocation_illager
1775
+ 105: vex
1776
+ 106: ice_bomb
1777
+ 107: balloon
1778
+ 108: pufferfish
1779
+ 109: salmon
1780
+ 110: drowned
1781
+ 111: tropicalfish
1782
+ 112: cod
1783
+ 113: panda
1784
+
1785
+ DeviceOS: li32 =>
1786
+ - Undefined
1787
+ - Android
1788
+ - IOS
1789
+ - OSX
1790
+ - FireOS
1791
+ - GearVR
1792
+ - Hololens
1793
+ - Win10
1794
+ - Win32
1795
+ - Dedicated
1796
+ - TVOS
1797
+ - Orbis
1798
+ - NintendoSwitch
1799
+ - Xbox
1800
+ - WindowsPhone