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