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