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