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