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