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