minecraft-data 3.106.0 → 3.108.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,3070 @@
1
+ !StartDocs: Types
2
+
3
+ TexturePackInfos: []li16
4
+ uuid: uuid
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
+ rtx_enabled: bool
13
+ # cdn_url is a URL that the client can use to download the pack instead of the server sending it in
14
+ # chunks, which it will continue to do if this field is left empty.
15
+ cdn_url: string
16
+
17
+ ResourcePackIdVersions: []varint
18
+ # The ID of the resource pack.
19
+ uuid: string
20
+ # The version of the resource pack.
21
+ version: string
22
+ # The subpack name of the resource pack.
23
+ name: string
24
+
25
+ ResourcePackIds: string[]li16
26
+
27
+ Experiment:
28
+ name: string
29
+ enabled: bool
30
+
31
+ Experiments: Experiment[]li32
32
+
33
+ GameMode: zigzag32 =>
34
+ 0: survival
35
+ 1: creative
36
+ 2: adventure
37
+ 3: survival_spectator
38
+ 4: creative_spectator
39
+ 5: fallback
40
+ 6: spectator
41
+
42
+ GameRuleI32:
43
+ name: string
44
+ editable: bool
45
+ type: varint =>
46
+ 1: bool
47
+ 2: int
48
+ 3: float
49
+ value: type?
50
+ if bool: bool
51
+ if int: li32
52
+ if float: lf32
53
+
54
+ GameRuleVarint:
55
+ name: string
56
+ editable: bool
57
+ type: varint =>
58
+ 1: bool
59
+ 2: int
60
+ 3: float
61
+ value: type?
62
+ if bool: bool
63
+ if int: varint
64
+ if float: lf32
65
+
66
+ # CacheBlob represents a blob as used in the client side blob cache protocol. It holds a hash of its data and
67
+ # the full data of it.
68
+ Blob:
69
+ # Hash is the hash of the blob. The hash is computed using xxHash, and must be deterministic for the same
70
+ # chunk data.
71
+ hash: lu64
72
+ # Payload is the data of the blob. When sent, the client will associate the Hash of the blob with the
73
+ # Payload in it.
74
+ payload: ByteArray
75
+
76
+ BlockProperties: []varint
77
+ name: string
78
+ state: nbt
79
+
80
+ Itemstates: []varint
81
+ name: string
82
+ runtime_id: li16
83
+ component_based: bool
84
+ # Version is the version of the item entry which is used by the client to determine how to handle the
85
+ # item entry. It is one of the constants above.
86
+ version: zigzag32 =>
87
+ - legacy
88
+ - data_driven
89
+ - none
90
+ # Components on the item
91
+ nbt: nbt
92
+
93
+ ItemExtraDataWithBlockingTick:
94
+ has_nbt: lu16 =>
95
+ 0xffff: 'true'
96
+ 0x0000: 'false'
97
+ nbt: has_nbt ?
98
+ if true:
99
+ version: u8
100
+ nbt: lnbt
101
+ default: void
102
+ can_place_on: ShortString[]li32
103
+ can_destroy: ShortString[]li32
104
+ blocking_tick: li64
105
+
106
+ ItemExtraDataWithoutBlockingTick:
107
+ has_nbt: lu16 =>
108
+ 0xffff: 'true'
109
+ 0x0000: 'false'
110
+ nbt: has_nbt ?
111
+ if true:
112
+ version: u8
113
+ nbt: lnbt
114
+ default: void
115
+ can_place_on: ShortString[]li32
116
+ can_destroy: ShortString[]li32
117
+
118
+ # Same as below but without a "networkStackID" boolean
119
+ ItemLegacy:
120
+ network_id: zigzag32
121
+ _: network_id?
122
+ if 0: void
123
+ default:
124
+ count: lu16
125
+ metadata: varint
126
+ block_runtime_id: zigzag32
127
+ extra: network_id ?
128
+ # The Shield Item ID is sent in the StartGame packet. It is usually 355 in vanilla.
129
+ if /ShieldItemID: '["encapsulated", { "lengthType": "varint", "type": "ItemExtraDataWithBlockingTick" }]'
130
+ default: '["encapsulated", { "lengthType": "varint", "type": "ItemExtraDataWithoutBlockingTick" }]'
131
+
132
+ # An "ItemStack" here represents an Item instance. You can think about it like a pointer
133
+ # to an item class. The data for the class gets updated with the data in the `item` field
134
+ # As of 1.16.220, now functionally the same as `Item` just without an extra boolean when
135
+ # server auth inventories is disabled.
136
+ Item:
137
+ network_id: zigzag32
138
+ _: network_id?
139
+ if 0: void
140
+ default:
141
+ count: lu16
142
+ metadata: varint
143
+ # When server authoritative inventory is enabled, all allocated items have a unique ID used to identify
144
+ # a specifc item instance.
145
+ has_stack_id: u8
146
+ # StackNetworkID is the network ID of this item *instance*. If the stack is empty, 0 is always written for this
147
+ # field. If not, the field should be set to 1 if the server authoritative inventories are disabled in the
148
+ # StartGame packet, or to a unique stack ID if it is enabled.
149
+ stack_id: has_stack_id ?
150
+ if 0: void
151
+ default: zigzag32
152
+ block_runtime_id: zigzag32
153
+ extra: network_id ?
154
+ # The Shield Item ID is sent in the StartGame packet. It is usually 355 in vanilla.
155
+ ## Really bad compiler hack to allow us to use a global variable
156
+ if /ShieldItemID: '["encapsulated", { "lengthType": "varint", "type": "ItemExtraDataWithBlockingTick" }]'
157
+ default: '["encapsulated", { "lengthType": "varint", "type": "ItemExtraDataWithoutBlockingTick" }]'
158
+
159
+ vec3i:
160
+ x: zigzag32
161
+ y: zigzag32
162
+ z: zigzag32
163
+
164
+ vec3li:
165
+ x: li32
166
+ y: li32
167
+ z: li32
168
+
169
+ vec3u:
170
+ x: varint
171
+ y: varint
172
+ z: varint
173
+
174
+ vec3f:
175
+ x: lf32
176
+ y: lf32
177
+ z: lf32
178
+
179
+ vec2f:
180
+ x: lf32
181
+ z: lf32
182
+
183
+ Vec3fopts:
184
+ x?: lf32
185
+ y?: lf32
186
+ z?: lf32
187
+
188
+ Vec2fopts:
189
+ x?: lf32
190
+ y?: lf32
191
+
192
+ MetadataDictionary: []varint
193
+ # https://github.com/pmmp/PocketMine-MP/blob/stable/src/pocketmine/entity/Entity.php#L101
194
+ key: varint =>
195
+ 0: flags
196
+ 1: health #int (minecart/boat)
197
+ 2: variant #int
198
+ 3: color #byte
199
+ 4: nametag #string
200
+ 5: owner_eid #long
201
+ 6: target_eid #long
202
+ 7: air #short
203
+ 8: potion_color #int (ARGB!)
204
+ 9: potion_ambient #byte
205
+ 10: jump_duration #long
206
+ 11: hurt_time #int (minecart/boat)
207
+ 12: hurt_direction #int (minecart/boat)
208
+ 13: paddle_time_left #float
209
+ 14: paddle_time_right #float
210
+ 15: experience_value #int (xp orb)
211
+ 16: minecart_display_block #int (id | (data << 16))
212
+ 17: minecart_display_offset #int
213
+ 18: minecart_has_display #byte (must be 1 for minecart to show block inside)
214
+ 19: horse_type
215
+ 20: creeper_swell
216
+ 21: creeper_swell_direction
217
+ 22: charge_amount
218
+ 23: enderman_held_runtime_id #short
219
+ 24: entity_age #short
220
+ 26: player_flags
221
+ 27: player_index
222
+ 28: player_bed_position #block coords
223
+ 29: fireball_power_x #float
224
+ 30: fireball_power_y
225
+ 31: fireball_power_z
226
+ 32: aux_power
227
+ 33: fish_x
228
+ 34: fish_z
229
+ 35: fish_angle
230
+ 36: potion_aux_value #short
231
+ 37: lead_holder_eid #long
232
+ 38: scale
233
+ 39: interactive_tag #string
234
+ 40: npc_skin_id #string
235
+ 41: url_tag #string
236
+ 42: max_airdata_max_air
237
+ 43: mark_variant #int
238
+ 44: container_type #byte
239
+ 45: container_base_size #int
240
+ 46: container_extra_slots_per_strength #int
241
+ 47: block_target
242
+ 48: wither_invulnerable_ticks #int
243
+ 49: wither_target_1 #long
244
+ 50: wither_target_2 #long
245
+ 51: wither_target_3 #long
246
+ 52: wither_aerial_attack
247
+ 53: boundingbox_width
248
+ 54: boundingbox_height
249
+ 55: fuse_length
250
+ 56: rider_seat_position #vector3f
251
+ 57: rider_rotation_locked #byte
252
+ 58: rider_max_rotation #float
253
+ 59: rider_min_rotation #float
254
+ 60: rider_seat_rotation_offset
255
+ 61: area_effect_cloud_radius #float
256
+ 62: area_effect_cloud_waiting #int
257
+ 63: area_effect_cloud_particle_id #int
258
+ 64: shulker_peek_id #int
259
+ 65: shulker_attach_face #byte
260
+ 66: shulker_attached #short
261
+ 67: shulker_attach_pos
262
+ 68: trading_player_eid #long
263
+ 69: trading_career
264
+ 70: has_command_block
265
+ 71: command_block_command #string
266
+ 72: command_block_last_output #string
267
+ 73: command_block_track_output #byte
268
+ 74: controlling_rider_seat_number #byte
269
+ 75: strength #int
270
+ 76: max_strength #int
271
+ 77: evoker_spell_casting_color #int
272
+ 78: limited_life
273
+ 79: armor_stand_pose_index # int
274
+ 80: ender_crystal_time_offset # int
275
+ 81: always_show_nametag # byte
276
+ 82: color_2 # byte
277
+ 83: name_author
278
+ 84: score_tag #String
279
+ 85: balloon_attached_entity # long
280
+ 86: pufferfish_size
281
+ 87: bubble_time
282
+ 88: agent
283
+ 89: sitting_amount
284
+ 90: sitting_amount_previous
285
+ 91: eating_counter
286
+ 92: flags_extended
287
+ 93: laying_amount
288
+ 94: laying_amount_previous
289
+ 95: area_effect_cloud_duration
290
+ 96: area_effect_cloud_spawn_time
291
+ 97: area_effect_cloud_change_rate
292
+ 98: area_effect_cloud_change_on_pickup
293
+ 99: area_effect_cloud_pickup_count
294
+ 100: interact_text
295
+ 101: trade_tier
296
+ 102: max_trade_tier
297
+ 103: trade_experience
298
+ 104: skin_id
299
+ 105: spawning_frames
300
+ 106: command_block_tick_delay
301
+ 107: command_block_execute_on_first_tick
302
+ 108: ambient_sound_interval
303
+ 109: ambient_sound_interval_range
304
+ 110: ambient_sound_event_name
305
+ 111: fall_damage_multiplier
306
+ 112: name_raw_text
307
+ 113: can_ride_target
308
+ 114: low_tier_cured_discount
309
+ 115: high_tier_cured_discount
310
+ 116: nearby_cured_discount
311
+ 117: nearby_cured_discount_timestamp
312
+ 118: hitbox
313
+ 119: is_buoyant
314
+ 120: freezing_effect_strength
315
+ 121: buoyancy_data
316
+ 122: goat_horn_count
317
+ 123: update_properties
318
+ 124: movement_sound_distance_offset
319
+ 125: heartbeat_interval_ticks
320
+ 126: heartbeat_sound_event
321
+ 127: player_last_death_position
322
+ 128: player_last_death_dimension
323
+ 129: player_has_died
324
+ 130: collision_box
325
+ 131: visible_mob_effects # long
326
+ 132: filtered_name # string
327
+ 133: bed_enter_position # blockpos
328
+ 134: seat_third_person_camera_radius
329
+ 135: seat_camera_relax_distance_smoothing
330
+ 136: aim_assist_priority_preset_id
331
+ 137: aim_assist_priority_category_id
332
+ 138: aim_assist_priority_actor_id
333
+ type: varint =>
334
+ 0: byte
335
+ 1: short
336
+ 2: int
337
+ 3: float
338
+ 4: string
339
+ 5: compound
340
+ 6: vec3i
341
+ 7: long
342
+ 8: vec3f
343
+ value: key ?
344
+ if flags: MetadataFlags1
345
+ if flags_extended: MetadataFlags2
346
+ if seat_third_person_camera_radius: lf32
347
+ if seat_camera_relax_distance_smoothing: lf32
348
+ default: type ?
349
+ if byte: i8
350
+ if short: li16
351
+ if int: zigzag32
352
+ if float: lf32
353
+ if string: string
354
+ if compound: nbt
355
+ if vec3i: vec3i
356
+ if long: zigzag64
357
+ if vec3f: vec3f
358
+
359
+ MetadataFlags1: [ "bitflags", {
360
+ "type": "zigzag64",
361
+ "big": true,
362
+ "flags": [
363
+ "onfire",
364
+ "sneaking",
365
+ "riding",
366
+ "sprinting",
367
+ "action",
368
+ "invisible",
369
+ "tempted",
370
+ "inlove",
371
+ "saddled",
372
+ "powered",
373
+ "ignited",
374
+ "baby",
375
+ "converting",
376
+ "critical",
377
+ "can_show_nametag",
378
+ "always_show_nametag",
379
+ "no_ai",
380
+ "silent",
381
+ "wallclimbing",
382
+ "can_climb",
383
+ "swimmer",
384
+ "can_fly",
385
+ "walker",
386
+ "resting",
387
+ "sitting",
388
+ "angry",
389
+ "interested",
390
+ "charged",
391
+ "tamed",
392
+ "orphaned",
393
+ "leashed",
394
+ "sheared",
395
+ "gliding",
396
+ "elder",
397
+ "moving",
398
+ "breathing",
399
+ "chested",
400
+ "stackable",
401
+ "showbase",
402
+ "rearing",
403
+ "vibrating",
404
+ "idling",
405
+ "evoker_spell",
406
+ "charge_attack",
407
+ "wasd_controlled",
408
+ "can_power_jump",
409
+ "can_dash",
410
+ "linger",
411
+ "has_collision",
412
+ "affected_by_gravity",
413
+ "fire_immune",
414
+ "dancing",
415
+ "enchanted",
416
+ "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
417
+ "container_private", #inventory is private, doesn't drop contents when killed if true
418
+ "transforming",
419
+ "spin_attack",
420
+ "swimming",
421
+ "bribed", #dolphins have this set when they go to find treasure for the player
422
+ "pregnant",
423
+ "laying_egg",
424
+ "rider_can_pick", #???
425
+ "transition_sitting",
426
+ "eating",
427
+ "laying_down"
428
+ ]
429
+ }]
430
+
431
+ MetadataFlags2: [ "bitflags", {
432
+ "type": "zigzag64",
433
+ "big": true,
434
+ "flags": [
435
+ "sneezing",
436
+ "trusting",
437
+ "rolling",
438
+ "scared",
439
+ "in_scaffolding",
440
+ "over_scaffolding",
441
+ "fall_through_scaffolding",
442
+ "blocking", #shield
443
+ "transition_blocking",
444
+ "blocked_using_shield",
445
+ "blocked_using_damaged_shield",
446
+ "sleeping",
447
+ "wants_to_wake",
448
+ "trade_interest",
449
+ "door_breaker", #...
450
+ "breaking_obstruction",
451
+ "door_opener", #...
452
+ "illager_captain",
453
+ "stunned",
454
+ "roaring",
455
+ "delayed_attacking",
456
+ "avoiding_mobs",
457
+ "avoiding_block",
458
+ "facing_target_to_range_attack",
459
+ "hidden_when_invisible", #??????????????????
460
+ "is_in_ui",
461
+ "stalking",
462
+ "emoting",
463
+ "celebrating",
464
+ "admiring",
465
+ "celebrating_special",
466
+ "unknown95", # 95
467
+ "ram_attack",
468
+ "playing_dead",
469
+ "in_ascendable_block",
470
+ "over_descendable_block",
471
+ "croaking",
472
+ "eat_mob",
473
+ "jump_goal_jump",
474
+ "emerging",
475
+ "sniffing",
476
+ "digging",
477
+ "sonic_boom",
478
+ "has_dash_cooldown",
479
+ "push_towards_closest_space",
480
+ "scenting",
481
+ "rising",
482
+ "feeling_happy",
483
+ "searching",
484
+ "crawling",
485
+ "timer_flag_1",
486
+ "timer_flag_2",
487
+ "timer_flag_3",
488
+ "body_rotation_blocked",
489
+ "render_when_invisible",
490
+ "body_rotation_axis_aligned",
491
+ "collidable",
492
+ "wasd_air_controlled",
493
+ "does_server_auth_only_dismount",
494
+ "body_rotation_always_follows_head",
495
+ "can_use_vertical_movement_action",
496
+ "rotation_locked_to_vehicle"
497
+ ]
498
+ }]
499
+
500
+ Link:
501
+ ridden_entity_id: zigzag64
502
+ rider_entity_id: zigzag64
503
+ type: u8
504
+ immediate: bool
505
+ rider_initiated: bool
506
+ # angular velocity of the vehicle that the rider is riding.
507
+ angular_velocity: lf32
508
+
509
+ Links: Link[]varint
510
+
511
+ EntityAttributes: []varint
512
+ name: string
513
+ min: lf32
514
+ value: lf32
515
+ max: lf32
516
+
517
+ EntityProperties:
518
+ ints: []varint
519
+ index: varint
520
+ value: zigzag32
521
+ floats: []varint
522
+ index: varint
523
+ value: lf32
524
+
525
+ Rotation:
526
+ yaw: byterot
527
+ pitch: byterot
528
+ head_yaw: byterot
529
+
530
+ BlockCoordinates: # mojang...
531
+ x: zigzag32
532
+ y: varint
533
+ z: zigzag32
534
+
535
+ PlayerAttributes: []varint
536
+ min: lf32
537
+ max: lf32
538
+ current: lf32
539
+ default_min: lf32
540
+ default_max: lf32
541
+ default: lf32
542
+ name: string
543
+ modifiers: []varint
544
+ id: string
545
+ name: string
546
+ amount: lf32
547
+ operation: li32
548
+ operand: li32
549
+ serializable: bool
550
+
551
+ # UseItemTransactionData represents an inventory transaction data object sent when the client uses an item on
552
+ # a block. Also used in PlayerAuthoritativeInput packet
553
+ TransactionUseItem:
554
+ # ActionType is the type of the UseItem inventory transaction. It is one of the action types found above,
555
+ # and specifies the way the player interacted with the block.
556
+ action_type: varint =>
557
+ # Right click item use on a surface like placing a block
558
+ 0: click_block
559
+ # Start right click and hold style item use or potentially interact with nothing.
560
+ # If it is a usable item like food the server is expected to send a SetActorDataPacket with ActorFlags::USINGITEM along with the transaction response.
561
+ # While using an item, movement speed is slowed which will be reflected in the move vector in Player Auth Input.
562
+ 1: click_air
563
+ # Block breaking like left click. When using server auth block breaking as specified in StartGamePacket this is never sent.
564
+ # Instead, block actions are supplied in Player Auth Input.
565
+ 2: break_block
566
+ 3: attack
567
+ # TriggerType is the type of the trigger that caused the inventory transaction. It is one of the trigger
568
+ # types found in the constants above. If TriggerType is TriggerTypePlayerInput, the transaction is from
569
+ # the initial input of the player. If it is TriggerTypeSimulationTick, the transaction is from a simulation
570
+ # tick when the player is holding down the input.
571
+ trigger_type: varint =>
572
+ - unknown
573
+ - player_input
574
+ - simulation_tick
575
+ # BlockPosition is the position of the block that was interacted with. This is only really a correct
576
+ # block position if ActionType is not UseItemActionClickAir.
577
+ block_position: BlockCoordinates
578
+ # BlockFace is the face of the block that was interacted with. When clicking the block, it is the face
579
+ # clicked. When breaking the block, it is the face that was last being hit until the block broke.
580
+ face: zigzag32
581
+ # HotBarSlot is the hot bar slot that the player was holding while clicking the block. It should be used
582
+ # to ensure that the hot bar slot and held item are correctly synchronised with the server.
583
+ hotbar_slot: zigzag32
584
+ # HeldItem is the item that was held to interact with the block. The server should check if this item
585
+ # is actually present in the HotBarSlot.
586
+ held_item: Item
587
+ # Position is the position of the player at the time of interaction. For clicking a block, this is the
588
+ # position at that time, whereas for breaking the block it is the position at the time of breaking.
589
+ player_pos: vec3f
590
+ # ClickedPosition is the position that was clicked relative to the block's base coordinate. It can be
591
+ # used to find out exactly where a player clicked the block.
592
+ click_pos: vec3f
593
+ # BlockRuntimeID is the runtime ID of the block that was clicked. It may be used by the server to verify
594
+ # that the player's world client-side is synchronised with the server's.
595
+ block_runtime_id: varint
596
+ # ClientPrediction is the client's prediction on the output of the transaction.
597
+ client_prediction: varint =>
598
+ - failure
599
+ - success
600
+
601
+ # Actions is a list of actions that took place, that form the inventory transaction together. Each of
602
+ # these actions hold one slot in which one item was changed to another. In general, the combination of
603
+ # all of these actions results in a balanced inventory transaction. This should be checked to ensure that
604
+ # no items are cheated into the inventory.
605
+ TransactionActions: []varint
606
+ source_type: varint =>
607
+ 0: container
608
+ 1: global
609
+ 2: world_interaction
610
+ 3: creative
611
+ 100: craft_slot
612
+ 99999: craft
613
+ _: source_type?
614
+ if container or craft:
615
+ inventory_id: WindowIDZigzag32
616
+ if world_interaction:
617
+ flags: varint
618
+ if craft or craft_slot:
619
+ action: varint
620
+ default: void
621
+ slot: varint
622
+ old_item: Item
623
+ new_item: Item
624
+
625
+ # The Minecraft bedrock inventory system was refactored, but not all inventory actions use the new packet.
626
+ # This data structure holds actions that have not been updated to the new system.
627
+ TransactionLegacy:
628
+ # LegacyRequestID is an ID that is only non-zero at times when sent by the client. The server should
629
+ # always send 0 for this. When this field is not 0, the LegacySetItemSlots slice below will have values
630
+ # in it.
631
+ # LegacyRequestID ties in with the ItemStackResponse packet. If this field is non-0, the server should
632
+ # respond with an ItemStackResponse packet. Some inventory actions such as dropping an item out of the
633
+ # hotbar are still one using this packet, and the ItemStackResponse packet needs to tie in with it.
634
+ legacy_request_id: zigzag32
635
+ # `legacy_transactions` are only present if the LegacyRequestID is non-zero. These item slots inform the
636
+ # server of the slots that were changed during the inventory transaction, and the server should send
637
+ # back an ItemStackResponse packet with these slots present in it. (Or false with no slots, if rejected.)
638
+ legacy_transactions: legacy_request_id?
639
+ if 0: void
640
+ default: []varint
641
+ container_id: u8
642
+ changed_slots: []varint
643
+ slot_id: u8
644
+
645
+ Transaction:
646
+ # Old transaction system data
647
+ legacy: TransactionLegacy
648
+ # What type of transaction took place
649
+ transaction_type: varint =>
650
+ # Sent for container UI operations depending on if ItemStackNetManager is enabled
651
+ 0: normal
652
+ # Sent from server to client to reject a transaction
653
+ 1: inventory_mismatch
654
+ # Sent for a player performing right click style item use.
655
+ # See the contained ItemUseInventoryTransaction::ActionType for the expected use case.
656
+ 2: item_use
657
+ # Sent for a player right clicking on an entity or attacking them.
658
+ # See ItemUseInventoryTransaction::ActionType for which it is.
659
+ 3: item_use_on_entity
660
+ # Sent when releasing right click on a chargeable item like a bow or finishing charging like a crossbow.
661
+ # This is different than canceling item use early which would be in Player Auth Input.
662
+ # See ItemReleaseInventoryTransaction::ActionType for which it is.
663
+ 4: item_release
664
+ # The list of inventory internal actions in this packet, e.g. inventory GUI actions
665
+ actions: TransactionActions
666
+ # Extra data if an intenal inventory transaction did not take place, e.g. use of an item
667
+ transaction_data: transaction_type?
668
+ if normal or inventory_mismatch: void
669
+ # UseItemTransactionData represents an inventory transaction data object sent when the client uses an item on
670
+ # a block.
671
+ if item_use: TransactionUseItem
672
+ # UseItemOnEntityTransactionData represents an inventory transaction data object sent when the client uses
673
+ # an item on an entity.
674
+ if item_use_on_entity:
675
+ # TargetEntityRuntimeID is the entity runtime ID of the target that was clicked. It is the runtime ID
676
+ # that was assigned to it in the AddEntity packet.
677
+ entity_runtime_id: varint64
678
+ # ActionType is the type of the UseItemOnEntity inventory transaction. It is one of the action types
679
+ # found in the constants above, and specifies the way the player interacted with the entity.
680
+ action_type: varint =>
681
+ # Right click interact with actor.
682
+ 0: interact
683
+ # Left click style attack of actor or elytra spin attack. Server is expected to deal damage to the entity with visuals.
684
+ 1: attack
685
+ # HotBarSlot is the hot bar slot that the player was holding while clicking the entity. It should be used
686
+ # to ensure that the hot bar slot and held item are correctly synchronised with the server.
687
+ hotbar_slot: zigzag32
688
+ # HeldItem is the item that was held to interact with the entity. The server should check if this item
689
+ # is actually present in the HotBarSlot.
690
+ held_item: Item
691
+ # Position is the position of the player at the time of clicking the entity.
692
+ player_pos: vec3f
693
+ # ClickedPosition is the position that was clicked relative to the entity's base coordinate. It can be
694
+ # used to find out exactly where a player clicked the entity.
695
+ click_pos: vec3f
696
+ # ReleaseItemTransactionData represents an inventory transaction data object sent when the client releases
697
+ # the item it was using, for example when stopping while eating or stopping the charging of a bow.
698
+ if item_release:
699
+ # ActionType is the type of the ReleaseItem inventory transaction. It is one of the action types found
700
+ # in the constants above, and specifies the way the item was released.
701
+ # As of 1.13, the ActionType is always 0. This field can be ignored, because releasing food (by consuming
702
+ # it) or releasing a bow (to shoot an arrow) is essentially the same.
703
+ action_type: varint =>
704
+ # Release right click and hold style item use, like firing a bow
705
+ 0: release
706
+ # Finish right click and hold style item use, like charging a crossbow
707
+ 1: consume
708
+ # HotBarSlot is the hot bar slot that the player was holding while releasing the item. It should be used
709
+ # to ensure that the hot bar slot and held item are correctly synchronised with the server.
710
+ hotbar_slot: zigzag32
711
+ # HeldItem is the item that was released. The server should check if this item is actually present in the
712
+ # HotBarSlot.
713
+ held_item: Item
714
+ # HeadPosition is the position of the player's head at the time of releasing the item. This is used
715
+ # mainly for purposes such as spawning eating particles at that position.
716
+ head_pos: vec3f
717
+
718
+ ItemStacks: Item[]varint
719
+
720
+ RecipeIngredient:
721
+ type: u8 =>
722
+ 0: invalid
723
+ # DefaultItemDescriptor represents an item descriptor for regular items.
724
+ 1: int_id_meta
725
+ # MoLangItemDescriptor represents an item descriptor for items that use MoLang (e.g. behaviour packs).
726
+ 2: molang
727
+ # ItemTagItemDescriptor represents an item descriptor that uses item tagging. This should be used to reduce duplicative
728
+ # entries for items that can be grouped under a single tag.
729
+ 3: item_tag
730
+ # DeferredItemDescriptor represents an item descriptor that uses a namespace and metadata value to identify the item.
731
+ # There is no clear benefit of using this item descriptor.
732
+ 4: string_id_meta
733
+ # ComplexAliasItemDescriptor represents an item descriptor that uses a single name to identify the item. There is no
734
+ # clear benefit of using this item descriptor and only seem to be used for specific recipes.
735
+ 5: complex_alias
736
+ _: type ?
737
+ if int_id_meta:
738
+ # NetworkID is the numerical network ID of the item. This is sometimes a positive ID, and sometimes a
739
+ # negative ID, depending on what item it concerns.
740
+ network_id: li16
741
+ metadata: network_id ?
742
+ if 0: void
743
+ default: li16
744
+ if molang:
745
+ # Expression represents the MoLang expression used to identify the item/it's associated tag.
746
+ expression: string
747
+ # Version represents the version of MoLang to use.
748
+ version: u8
749
+ if item_tag:
750
+ # Tag represents the tag that the item is part of.
751
+ tag: string
752
+ if string_id_meta:
753
+ # Name is the name of the item, which is a name like 'minecraft:stick'.
754
+ name: string
755
+ # MetadataValue is the metadata value of the item. For some items, this is the damage value, whereas for
756
+ # other items it is simply an identifier of a variant of the item.
757
+ metadata: li16
758
+ if complex_alias:
759
+ # Name is the name of the item, which is a name like 'minecraft:stick'.
760
+ name: string
761
+ count: zigzag32
762
+
763
+ PotionTypeRecipes: []varint
764
+ input_item_id: zigzag32
765
+ input_item_meta: zigzag32
766
+ ingredient_id: zigzag32
767
+ ingredient_meta: zigzag32
768
+ output_item_id: zigzag32
769
+ output_item_meta: zigzag32
770
+
771
+ PotionContainerChangeRecipes: []varint
772
+ input_item_id: zigzag32
773
+ ingredient_id: zigzag32
774
+ output_item_id: zigzag32
775
+
776
+ Recipes: []varint
777
+ type: zigzag32 =>
778
+ 0: shapeless #'ENTRY_SHAPELESS',
779
+ 1: shaped #'ENTRY_SHAPED',
780
+ 2: furnace # 'ENTRY_FURNACE',
781
+ # `furnace_with_metadata` is a recipe specifically used for furnace-type crafting stations. It is equal to
782
+ # `furnace`, except it has an input item with a specific metadata value, instead of any metadata value.
783
+ 3: furnace_with_metadata # 'ENTRY_FURNACE_DATA', // has metadata
784
+ 4: multi #'ENTRY_MULTI', //TODO
785
+ 5: shulker_box #'ENTRY_SHULKER_BOX', //TODO
786
+ 6: shapeless_chemistry #'ENTRY_SHAPELESS_CHEMISTRY', //TODO
787
+ 7: shaped_chemistry #'ENTRY_SHAPED_CHEMISTRY', //TODO
788
+ # SmithingTransformRecipe is a recipe specifically used for smithing tables. It has two input items and adds them
789
+ # together, resulting in a new item.
790
+ 8: smithing_transform
791
+ 9: smithing_trim
792
+ recipe: type?
793
+ if shapeless or shulker_box or shapeless_chemistry:
794
+ recipe_id: LatinString
795
+ input: RecipeIngredient[]varint
796
+ output: ItemLegacy[]varint
797
+ uuid: uuid
798
+ block: string
799
+ priority: zigzag32
800
+ unlocking_requirement: RecipeUnlockingRequirement
801
+ network_id: varint
802
+ if shaped or shaped_chemistry:
803
+ recipe_id: LatinString
804
+ width: zigzag32
805
+ height: zigzag32
806
+ # 2D input array, size of width*height
807
+ input: []$width
808
+ _: RecipeIngredient[]$height
809
+ output: ItemLegacy[]varint
810
+ uuid: uuid
811
+ block: string
812
+ priority: zigzag32
813
+ assume_symmetry: bool
814
+ unlocking_requirement: RecipeUnlockingRequirement
815
+ network_id: varint
816
+ if furnace:
817
+ input_id: zigzag32
818
+ output: ItemLegacy
819
+ block: string
820
+ if furnace_with_metadata:
821
+ input_id: zigzag32
822
+ input_meta: zigzag32
823
+ output: ItemLegacy
824
+ block: string
825
+ if multi:
826
+ uuid: uuid
827
+ network_id: varint
828
+ if smithing_transform:
829
+ # RecipeID is a unique ID of the recipe. This ID must be unique amongst all other types of recipes too,
830
+ # but its functionality is not exactly known.
831
+ recipe_id: LatinString
832
+ template: RecipeIngredient
833
+ # Base is the item that the Addition is being applied to in the smithing table.
834
+ base: RecipeIngredient
835
+ # Addition is the item that is being added to the Base item to result in a modified item.
836
+ addition: RecipeIngredient
837
+ # Result is the resulting item from the two items being added together.
838
+ result: ItemLegacy
839
+ # Tag is a serialized compound tag in the network little endian format.
840
+ tag: string
841
+ # RecipeNetworkID is a unique ID used to identify the recipe over network. Each recipe must have a unique
842
+ # network ID. Recommended is to just increment a variable for each unique recipe registered.
843
+ # This field must never be 0.
844
+ network_id: varint
845
+ if smithing_trim:
846
+ recipe_id: LatinString
847
+ template: RecipeIngredient
848
+ input: RecipeIngredient
849
+ addition: RecipeIngredient
850
+ block: string
851
+ network_id: varint
852
+
853
+ RecipeUnlockingRequirement:
854
+ context: u8 =>
855
+ - none
856
+ - always_unlocked
857
+ - player_in_water
858
+ - player_has_many_items
859
+ ingredients: context?
860
+ if none: RecipeIngredient[]varint
861
+
862
+ SkinImage:
863
+ width: li32
864
+ height: li32
865
+ data: ByteArray
866
+
867
+ Skin:
868
+ skin_id: string
869
+ play_fab_id: string
870
+ skin_resource_pack: string
871
+ skin_data: SkinImage
872
+ animations: []li32
873
+ skin_image: SkinImage
874
+ animation_type: li32
875
+ animation_frames: lf32
876
+ expression_type: lf32
877
+ cape_data: SkinImage
878
+ geometry_data: string
879
+ geometry_data_version: string
880
+ animation_data: string
881
+
882
+ cape_id: string
883
+ full_skin_id: string
884
+ arm_size: string
885
+ skin_color: string
886
+ personal_pieces: []li32
887
+ piece_id: string
888
+ piece_type: string
889
+ pack_id: string
890
+ is_default_piece: bool
891
+ product_id: string
892
+ piece_tint_colors: []li32
893
+ piece_type: string
894
+ colors: string[]li32
895
+ premium: bool
896
+ persona: bool
897
+ # PersonaCapeOnClassicSkin specifies if the skin had a Persona cape (in-game skin creator cape) equipped
898
+ # on a classic skin.
899
+ cape_on_classic: bool
900
+ primary_user: bool
901
+ overriding_player_appearance: bool
902
+
903
+ PlayerRecords:
904
+ type: u8 =>
905
+ 0: add
906
+ 1: remove
907
+ records_count: varint
908
+ records: []$records_count
909
+ _: type?
910
+ if add:
911
+ uuid: uuid
912
+ entity_unique_id: zigzag64
913
+ username: string
914
+ xbox_user_id: string
915
+ platform_chat_id: string
916
+ build_platform: li32
917
+ skin_data: Skin
918
+ is_teacher: bool
919
+ is_host: bool
920
+ is_subclient: bool
921
+ # PlayerColour is the colour of the player that is shown in UI elements, currently only used for the
922
+ # player locator bar.
923
+ player_color: li32
924
+ if remove:
925
+ uuid: uuid
926
+ verified: type ?
927
+ if add: bool[]$records_count
928
+
929
+ Enchant:
930
+ id: u8
931
+ level: u8
932
+
933
+ EnchantOption:
934
+ cost: varint
935
+ slot_flags: li32
936
+ equip_enchants: Enchant[]varint
937
+ held_enchants: Enchant[]varint
938
+ self_enchants: Enchant[]varint
939
+ name: string
940
+ option_id: zigzag32
941
+
942
+ Action: zigzag32 =>
943
+ 0: start_break
944
+ 1: abort_break
945
+ 2: stop_break
946
+ 3: get_updated_block
947
+ 4: drop_item
948
+ 5: start_sleeping
949
+ 6: stop_sleeping
950
+ 7: respawn
951
+ 8: jump
952
+ 9: start_sprint
953
+ 10: stop_sprint
954
+ 11: start_sneak
955
+ 12: stop_sneak
956
+ 13: creative_player_destroy_block
957
+ # sent when spawning in a different dimension to tell the server we spawned
958
+ 14: dimension_change_ack
959
+ 15: start_glide
960
+ 16: stop_glide
961
+ 17: build_denied
962
+ 18: crack_break
963
+ 19: change_skin
964
+ # no longer used
965
+ 20: set_enchatnment_seed
966
+ 21: swimming
967
+ 22: stop_swimming
968
+ 23: start_spin_attack
969
+ 24: stop_spin_attack
970
+ 25: interact_block
971
+ 26: predict_break
972
+ 27: continue_break
973
+ 28: start_item_use_on
974
+ 29: stop_item_use_on
975
+ 30: handled_teleport
976
+ 31: missed_swing
977
+ 32: start_crawling
978
+ 33: stop_crawling
979
+ 34: start_flying
980
+ 35: stop_flying
981
+ # Deprecated. Corresponds to Player Auth Input InputData::ClientAckServerData bit 44 Not sent when using server authoritative movement as specified in StartGamePacket. This is now deprecated because only server authoritative movement exists.
982
+ 36: received_server_data
983
+ 37: start_using_item
984
+
985
+ # Source and Destination point to the source slot from which Count of the item stack were taken and the
986
+ # destination slot to which this item was moved.
987
+ StackRequestSlotInfo:
988
+ # ContainerID is the ID of the container that the slot was in.
989
+ slot_type: FullContainerName
990
+ # Slot is the index of the slot within the container with the ContainerID above.
991
+ slot: u8
992
+ # StackNetworkID is the unique stack ID that the client assumes to be present in this slot. The server
993
+ # must check if these IDs match. If they do not match, servers should reject the stack request that the
994
+ # action holding this info was in.
995
+ stack_id: zigzag32
996
+
997
+ # ItemStackRequest is sent by the client to change item stacks in an inventory. It is essentially a
998
+ # replacement of the InventoryTransaction packet added in 1.16 for inventory specific actions, such as moving
999
+ # items around or crafting. The InventoryTransaction packet is still used for actions such as placing blocks
1000
+ # and interacting with entities.
1001
+ ItemStackRequest:
1002
+ # RequestID is a unique ID for the request. This ID is used by the server to send a response for this
1003
+ # specific request in the ItemStackResponse packet.
1004
+ request_id: zigzag32
1005
+ actions: []varint
1006
+ type_id: u8 =>
1007
+ # TakeStackRequestAction is sent by the client to the server to take x amount of items from one slot in a
1008
+ # container to the cursor.
1009
+ - take
1010
+ # PlaceStackRequestAction is sent by the client to the server to place x amount of items from one slot into
1011
+ # another slot, such as when shift clicking an item in the inventory to move it around or when moving an item
1012
+ # in the cursor into a slot.
1013
+ - place
1014
+ # SwapStackRequestAction is sent by the client to swap the item in its cursor with an item present in another
1015
+ # container. The two item stacks swap places.
1016
+ - swap
1017
+ # DropStackRequestAction is sent by the client when it drops an item out of the inventory when it has its
1018
+ # inventory opened. This action is not sent when a player drops an item out of the hotbar using the Q button
1019
+ # (or the equivalent on mobile). The InventoryTransaction packet is still used for that action, regardless of
1020
+ # whether the item stack network IDs are used or not.
1021
+ - drop
1022
+ # DestroyStackRequestAction is sent by the client when it destroys an item in creative mode by moving it
1023
+ # back into the creative inventory.
1024
+ - destroy
1025
+ # ConsumeStackRequestAction is sent by the client when it uses an item to craft another item. The original
1026
+ # item is 'consumed'.
1027
+ - consume
1028
+ # CreateStackRequestAction is sent by the client when an item is created through being used as part of a
1029
+ # recipe. For example, when milk is used to craft a cake, the buckets are leftover. The buckets are moved to
1030
+ # the slot sent by the client here.
1031
+ # Note that before this is sent, an action for consuming all items in the crafting table/grid is sent. Items
1032
+ # that are not fully consumed when used for a recipe should not be destroyed there, but instead, should be
1033
+ # turned into their respective resulting items.
1034
+ - create
1035
+ # (as of 1.18.10) Not currently used
1036
+ - place_in_container
1037
+ # (as of 1.18.10) Not currently used
1038
+ - take_out_container
1039
+ # LabTableCombineStackRequestAction is sent by the client when it uses a lab table to combine item stacks.
1040
+ - lab_table_combine
1041
+ # BeaconPaymentStackRequestAction is sent by the client when it submits an item to enable effects from a
1042
+ # beacon. These items will have been moved into the beacon item slot in advance.
1043
+ - beacon_payment
1044
+ # MineBlockStackRequestAction is sent by the client when it breaks a block.
1045
+ - mine_block
1046
+ # CraftRecipeStackRequestAction is sent by the client the moment it begins crafting an item. This is the
1047
+ # first action sent, before the Consume and Create item stack request actions.
1048
+ # This action is also sent when an item is enchanted. Enchanting should be treated mostly the same way as
1049
+ # crafting, where the old item is consumed.
1050
+ - craft_recipe
1051
+ # AutoCraftRecipeStackRequestAction is sent by the client similarly to the CraftRecipeStackRequestAction. The
1052
+ # only difference is that the recipe is automatically created and crafted by shift clicking the recipe book.
1053
+ - craft_recipe_auto #recipe book?
1054
+ # CraftCreativeStackRequestAction is sent by the client when it takes an item out fo the creative inventory.
1055
+ # The item is thus not really crafted, but instantly created.
1056
+ - craft_creative
1057
+ # CraftRecipeOptionalStackRequestAction is sent when using an anvil. When this action is sent, the
1058
+ # CustomNames field in the respective stack request is non-empty and contains the name of the item created
1059
+ # using the anvil.
1060
+ - optional
1061
+ # CraftGrindstoneRecipeStackRequestAction is sent when a grindstone recipe is crafted. It contains the RecipeNetworkID
1062
+ # to identify the recipe crafted, and the cost for crafting the recipe.
1063
+ - craft_grindstone_request
1064
+ # CraftLoomRecipeStackRequestAction is sent when a loom recipe is crafted. It simply contains the
1065
+ # pattern identifier to figure out what pattern is meant to be applied to the item.
1066
+ - craft_loom_request
1067
+ # CraftNonImplementedStackRequestAction is an action sent for inventory actions that aren't yet implemented
1068
+ # in the new system. These include, for example, anvils.
1069
+ - non_implemented # anvils aren't fully implemented yet
1070
+ # CraftResultsDeprecatedStackRequestAction is an additional, deprecated packet sent by the client after
1071
+ # crafting. It holds the final results and the amount of times the recipe was crafted. It shouldn't be used.
1072
+ # This action is also sent when an item is enchanted. Enchanting should be treated mostly the same way as
1073
+ # crafting, where the old item is consumed.
1074
+ - results_deprecated
1075
+ _: type_id ?
1076
+ if take or place or place_in_container or take_out_container:
1077
+ count: u8
1078
+ source: StackRequestSlotInfo
1079
+ destination: StackRequestSlotInfo
1080
+ if swap:
1081
+ # Source and Destination point to the source slot from which Count of the item stack were taken and the
1082
+ # destination slot to which this item was moved.
1083
+ source: StackRequestSlotInfo
1084
+ destination: StackRequestSlotInfo
1085
+ if drop:
1086
+ # Count is the count of the item in the source slot that was taken towards the destination slot.
1087
+ count: u8
1088
+ # Source is the source slot from which items were dropped to the ground.
1089
+ source: StackRequestSlotInfo
1090
+ # Randomly seems to be set to false in most cases. I'm not entirely sure what this does, but this is what
1091
+ # vanilla calls this field.
1092
+ randomly: bool
1093
+ if destroy or consume:
1094
+ # Count is the count of the item in the source slot that was destroyed.
1095
+ count: u8
1096
+ # Source is the source slot from which items came that were destroyed by moving them into the creative
1097
+ # inventory.
1098
+ source: StackRequestSlotInfo
1099
+ if create:
1100
+ # ResultsSlot is the slot in the inventory in which the results of the crafting ingredients are to be
1101
+ # placed.
1102
+ result_slot_id: u8
1103
+ if beacon_payment:
1104
+ # PrimaryEffect and SecondaryEffect are the effects that were selected from the beacon.
1105
+ primary_effect: zigzag32
1106
+ secondary_effect: zigzag32
1107
+ if mine_block:
1108
+ # Current hotbar slot
1109
+ hotbar_slot: zigzag32
1110
+ # PredictedDurability is the durability of the item that the client assumes to be present at the time
1111
+ predicted_durability: zigzag32
1112
+ # StackNetworkID is the unique stack ID that the client assumes to be present at the time. The server
1113
+ # must check if these IDs match. If they do not match, servers should reject the stack request that the
1114
+ # action holding this info was in.
1115
+ network_id: zigzag32
1116
+ if craft_recipe:
1117
+ # RecipeNetworkID is the network ID of the recipe that is about to be crafted. This network ID matches
1118
+ # one of the recipes sent in the CraftingData packet, where each of the recipes have a RecipeNetworkID as
1119
+ # of 1.16.
1120
+ recipe_network_id: varint
1121
+ times_crafted: u8
1122
+ if craft_recipe_auto:
1123
+ # RecipeNetworkID is the network ID of the recipe that is about to be crafted. This network ID matches
1124
+ # one of the recipes sent in the CraftingData packet, where each of the recipes have a RecipeNetworkID as
1125
+ recipe_network_id: varint
1126
+ # TODO: Duplicate field?
1127
+ times_crafted_2: u8
1128
+ times_crafted: u8
1129
+ ingredients: RecipeIngredient[]varint
1130
+ if craft_creative:
1131
+ # The stack ID of the creative item that is being created. This is one of the
1132
+ # creative item stack IDs sent in the CreativeContent packet.
1133
+ item_id: varint
1134
+ times_crafted: u8
1135
+ if optional:
1136
+ # For the cartography table, if a certain MULTI recipe is being called, this points to the network ID that was assigned.
1137
+ recipe_network_id: varint
1138
+ # Most likely the index in the request's filter strings that this action is using
1139
+ filtered_string_index: li32
1140
+ if craft_grindstone_request:
1141
+ # RecipeNetworkID is the network ID of the recipe that is about to be crafted. This network ID matches
1142
+ # one of the recipes sent in the CraftingData packet, where each of the recipes have a RecipeNetworkID as
1143
+ recipe_network_id: varint
1144
+ # NumberOfCrafts is how many times the recipe was crafted. This field appears to be boilerplate and
1145
+ # has no effect.
1146
+ times_crafted: u8
1147
+ # Cost is the cost of the recipe that was crafted.
1148
+ cost: varint
1149
+ if craft_loom_request:
1150
+ # Pattern is the pattern identifier for the loom recipe.
1151
+ pattern: string
1152
+ # TimesCrafted is how many times the recipe was crafted.
1153
+ times_crafted: u8
1154
+ if non_implemented: void
1155
+ if results_deprecated:
1156
+ result_items: ItemLegacy[]varint
1157
+ times_crafted: u8
1158
+ # CustomNames is a list of custom names involved in the request. This is typically filled with one string
1159
+ # when an anvil is used.
1160
+ # * Used for the server to determine which strings should be filtered. Used in anvils to verify a renamed item.
1161
+ custom_names: string[]varint
1162
+ # FilterCause represents the cause of any potential filtering. This is one of the constants above.
1163
+ cause: li32 =>
1164
+ - chat_public
1165
+ - chat_whisper
1166
+ - sign_text
1167
+ - anvil_text
1168
+ - book_and_quill_text
1169
+ - command_block_text
1170
+ - block_actor_data_text
1171
+ - join_event_text
1172
+ - leave_event_text
1173
+ - slash_command_chat
1174
+ - cartography_text
1175
+ - kick_command
1176
+ - title_command
1177
+ - summon_command
1178
+
1179
+
1180
+ # ItemStackResponse is a response to an individual ItemStackRequest.
1181
+ ItemStackResponses: []varint
1182
+ # Status specifies if the request with the RequestID below was successful. If this is the case, the
1183
+ # ContainerInfo below will have information on what slots ended up changing. If not, the container info
1184
+ # will be empty.
1185
+ # A non-0 status means an error occurred and will result in the action being reverted.
1186
+ status: u8 =>
1187
+ 0: ok
1188
+ 1: error
1189
+ # RequestID is the unique ID of the request that this response is in reaction to. If rejected, the client
1190
+ # will undo the actions from the request with this ID.
1191
+ request_id: zigzag32
1192
+ _: status ?
1193
+ if ok:
1194
+ # ContainerInfo holds information on the containers that had their contents changed as a result of the
1195
+ # request.
1196
+ containers: []varint
1197
+ # ContainerID is the container ID of the container that the slots that follow are in. For the main
1198
+ # inventory, this value seems to be 0x1b. For the cursor, this value seems to be 0x3a. For the crafting
1199
+ # grid, this value seems to be 0x0d.
1200
+ # * actually, this is ContainerSlotType - used by the inventory system that specifies the type of slot
1201
+ slot_type: FullContainerName
1202
+ # SlotInfo holds information on what item stack should be present in specific slots in the container.
1203
+ slots: []varint
1204
+ # Slot and HotbarSlot seem to be the same value every time: The slot that was actually changed. I'm not
1205
+ # sure if these slots ever differ.
1206
+ slot: u8
1207
+ hotbar_slot: u8
1208
+ # Count is the total count of the item stack. This count will be shown client-side after the response is
1209
+ # sent to the client.
1210
+ count: u8
1211
+ # StackNetworkID is the network ID of the new stack at a specific slot.
1212
+ item_stack_id: zigzag32
1213
+ # CustomName is the custom name of the item stack. It is used in relation to text filtering.
1214
+ custom_name: string
1215
+ # FilteredCustomName is a filtered version of CustomName with all the profanity removed. The client will
1216
+ # use this over CustomName if this field is not empty and they have the "Filter Profanity" setting enabled.
1217
+ filtered_custom_name: string
1218
+ # DurabilityCorrection is the current durability of the item stack. This durability will be shown
1219
+ # client-side after the response is sent to the client.
1220
+ durability_correction: zigzag32
1221
+
1222
+
1223
+ CommandOrigin:
1224
+ # Origin is one of the values above that specifies the origin of the command. The origin may change,
1225
+ # depending on what part of the client actually called the command. The command may be issued by a
1226
+ # websocket server, for example.
1227
+ type: string
1228
+
1229
+ # UUID is the UUID of the command called. This UUID is a bit odd as it is not specified by the server. It
1230
+ # is not clear what exactly this UUID is meant to identify, but it is unique for each command called.
1231
+ uuid: uuid
1232
+ # RequestID is an ID that identifies the request of the client. The server should send a CommandOrigin
1233
+ # with the same request ID to ensure it can be matched with the request by the caller of the command.
1234
+ # This is especially important for websocket servers and it seems that this field is only non-empty for
1235
+ # these websocket servers.
1236
+ request_id: string
1237
+ # PlayerUniqueID is an ID that identifies the player, the same as the one found in the AdventureSettings
1238
+ # packet. Filling it out with 0 seems to work.
1239
+ # PlayerUniqueID is only written if Origin is CommandOriginDevConsole or CommandOriginTest.
1240
+ player_entity_id: li64
1241
+
1242
+ # MapTrackedObject is an object on a map that is 'tracked' by the client, such as an entity or a block. This
1243
+ # object may move, which is handled client-side.
1244
+ TrackedObject:
1245
+ # Type is the type of the tracked object. It is either MapObjectTypeEntity or MapObjectTypeBlock.
1246
+ type: li32 =>
1247
+ 0: entity
1248
+ 1: block
1249
+ # EntityUniqueID is the unique ID of the entity, if the tracked object was an entity. It needs not to be
1250
+ # filled out if Type is not MapObjectTypeEntity.
1251
+ entity_unique_id: type ?
1252
+ if entity: zigzag64
1253
+ # BlockPosition is the position of the block, if the tracked object was a block. It needs not to be
1254
+ # filled out if Type is not MapObjectTypeBlock.
1255
+ block_position: type ?
1256
+ if block: BlockCoordinates
1257
+
1258
+ # MapDecoration is a fixed decoration on a map: Its position or other properties do not change automatically
1259
+ # client-side.
1260
+ MapDecoration:
1261
+ type: u8 =>
1262
+ - marker_white
1263
+ - marker_green
1264
+ - marker_red
1265
+ - marker_blue
1266
+ - cross_white
1267
+ - triangle_red
1268
+ - square_white
1269
+ - marker_sign
1270
+ - marker_pink
1271
+ - marker_orange
1272
+ - marker_yellow
1273
+ - marker_teal
1274
+ - triangle_green
1275
+ - small_square_white
1276
+ - mansion
1277
+ - monument
1278
+ - no_draw
1279
+ - village_desert
1280
+ - village_plains
1281
+ - village_savanna
1282
+ - village_snowy
1283
+ - village_taiga
1284
+ - jungle_temple
1285
+ - witch_hut =>
1286
+ - marker_white
1287
+ - marker_green
1288
+ - marker_red
1289
+ - marker_blue
1290
+ - cross_white
1291
+ - triangle_red
1292
+ - square_white
1293
+ - marker_sign
1294
+ - marker_pink
1295
+ - marker_orange
1296
+ - marker_yellow
1297
+ - marker_teal
1298
+ - triangle_green
1299
+ - small_square_white
1300
+ - mansion
1301
+ - monument
1302
+ - no_draw
1303
+ - village_desert
1304
+ - village_plains
1305
+ - village_savanna
1306
+ - village_snowy
1307
+ - village_taiga
1308
+ - jungle_temple
1309
+ - witch_hut
1310
+ # Rotation is the rotation of the map decoration. It is byte due to the 16 fixed directions that the
1311
+ # map decoration may face.
1312
+ rotation: u8
1313
+ # X is the offset on the X axis in pixels of the decoration.
1314
+ x: u8
1315
+ # Y is the offset on the Y axis in pixels of the decoration.
1316
+ y: u8
1317
+ # Label is the name of the map decoration. This name may be of any value.
1318
+ label: string
1319
+ # Colour is the colour of the map decoration. Some map decoration types have a specific colour set
1320
+ # automatically, whereas others may be changed.
1321
+ color_abgr: varint
1322
+
1323
+
1324
+ StructureBlockSettings:
1325
+ # PaletteName is the name of the palette used in the structure. Currently, it seems that this field is
1326
+ # always 'default'.
1327
+ palette_name: string
1328
+ # IgnoreEntities specifies if the structure should ignore entities or include them. If set to false,
1329
+ # entities will also show up in the exported structure.
1330
+ ignore_entities: bool
1331
+ # IgnoreBlocks specifies if the structure should ignore blocks or include them. If set to false, blocks
1332
+ # will show up in the exported structure.
1333
+ ignore_blocks: bool
1334
+ non_ticking_players_and_ticking_areas: bool
1335
+ # Size is the size of the area that is about to be exported. The area exported will start at the
1336
+ # Position + Offset, and will extend as far as Size specifies.
1337
+ size: BlockCoordinates
1338
+ # Offset is the offset position that was set in the structure block. The area exported is offset by this
1339
+ # position.
1340
+ # **TODO**: This will be renamed to offset soon
1341
+ structure_offset: BlockCoordinates
1342
+ # LastEditingPlayerUniqueID is the unique ID of the player that last edited the structure block that
1343
+ # these settings concern.
1344
+ last_editing_player_unique_id: zigzag64
1345
+ # Rotation is the rotation that the structure block should obtain. See the constants above for available
1346
+ # options.
1347
+ rotation: u8 =>
1348
+ 0: none
1349
+ 1: 90_deg
1350
+ 2: 180_deg
1351
+ 3: 270_deg
1352
+ # Mirror specifies the way the structure should be mirrored. It is either no mirror at all, mirror on the
1353
+ # x/z axis or both.
1354
+ mirror: u8 =>
1355
+ 0: none
1356
+ 1: x_axis
1357
+ 2: z_axis
1358
+ 3: both_axes
1359
+ animation_mode: u8 =>
1360
+ 0: none
1361
+ 1: layers
1362
+ 2: blocks
1363
+ # How long the duration for this animation is
1364
+ animation_duration: lf32
1365
+ # Integrity is usually 1, but may be set to a number between 0 and 1 to omit blocks randomly, using
1366
+ # the Seed that follows.
1367
+ integrity: lf32
1368
+ # Seed is the seed used to omit blocks if Integrity is not equal to one. If the Seed is 0, a random
1369
+ # seed is selected to omit blocks.
1370
+ seed: lu32
1371
+ # Pivot is the pivot around which the structure may be rotated.
1372
+ pivot: vec3f
1373
+
1374
+ # EducationSharedResourceURI is an education edition feature that is used for transmitting
1375
+ # education resource settings to clients. It contains a button name and a link URL.
1376
+ EducationSharedResourceURI:
1377
+ # ButtonName is the button name of the resource URI.
1378
+ button_name: string
1379
+ # LinkURI is the link URI for the resource URI.
1380
+ link_uri: string
1381
+
1382
+ EducationExternalLinkSettings:
1383
+ # URL is the external link URL.
1384
+ url: string
1385
+ # DisplayName is the display name in game.
1386
+ display_name: string
1387
+
1388
+ BlockUpdate:
1389
+ position: BlockCoordinates
1390
+ runtime_id: varint
1391
+ flags: varint
1392
+ # EntityUniqueID is the unique ID of the falling block entity that the block transitions to or that the
1393
+ # entity transitions from.
1394
+ # Note that for both possible values for TransitionType, the EntityUniqueID should point to the falling
1395
+ # block entity involved.
1396
+ entity_unique_id: zigzag64
1397
+ # TransitionType is the type of the transition that happened. It is either BlockToEntityTransition, when
1398
+ # a block placed becomes a falling entity, or EntityToBlockTransition, when a falling entity hits the
1399
+ # ground and becomes a solid block again.
1400
+ transition_type: varint => TransitionType
1401
+
1402
+ TransitionType: =>
1403
+ # For falling sand, when a sand turns to an entity
1404
+ 0: entity
1405
+ # When sand turns back to a new block
1406
+ 1: create
1407
+ 2: destroy
1408
+
1409
+ MaterialReducer:
1410
+ mix: zigzag32
1411
+ items:
1412
+ network_id: zigzag32
1413
+ count: zigzag32
1414
+
1415
+ ## Permissions
1416
+
1417
+ # The permission level of a player, for example whether they are an Server Operator or not.
1418
+ PermissionLevel: u8 =>
1419
+ 0: visitor
1420
+ 1: member
1421
+ 2: operator
1422
+ 3: custom
1423
+
1424
+ # The command permission level, for example if being run by a Player, an Op, or a Command Block.
1425
+ CommandPermissionLevel: u8 =>
1426
+ 0: normal
1427
+ 1: operator
1428
+ 2: automation
1429
+ 3: host
1430
+ 4: owner
1431
+ 5: internal
1432
+
1433
+ # The command permission level, for example if being run by a Player, an Op, or a Command Block.
1434
+ CommandPermissionLevelVarint: u8 =>
1435
+ 0: normal
1436
+ 1: operator
1437
+ 2: automation
1438
+ 3: host
1439
+ 4: owner
1440
+ 5: internal
1441
+
1442
+ # List of Window IDs. When a new container is opened (container_open), a new sequential Window ID is created.
1443
+ # Below window IDs are hard-coded and created when the game starts and the server does not
1444
+ # send a `container_open` for them.
1445
+ WindowID_: =>
1446
+ -100: drop_contents
1447
+ -24: beacon
1448
+ -23: trading_output
1449
+ -22: trading_use_inputs
1450
+ -21: trading_input_2
1451
+ -20: trading_input_1
1452
+ -17: enchant_output
1453
+ -16: enchant_material
1454
+ -15: enchant_input
1455
+ -13: anvil_output
1456
+ -12: anvil_result
1457
+ -11: anvil_material
1458
+ -10: container_input
1459
+ -5: crafting_use_ingredient
1460
+ -4: crafting_result
1461
+ -3: crafting_remove_ingredient
1462
+ -2: crafting_add_ingredient
1463
+ -1: none
1464
+ 0: inventory
1465
+ 1: first
1466
+ 100: last
1467
+ 119: offhand
1468
+ 120: armor
1469
+ 121: creative
1470
+ 122: hotbar
1471
+ 123: fixed_inventory
1472
+ 124: ui
1473
+
1474
+ WindowID: i8 => WindowID_
1475
+ WindowIDVarint: varint => WindowID_
1476
+ WindowIDZigzag32: zigzag32 => WindowID_
1477
+
1478
+ WindowType: i8 =>
1479
+ -9: none
1480
+ -1: inventory
1481
+ 0: container
1482
+ 1: workbench
1483
+ 2: furnace
1484
+ 3: enchantment
1485
+ 4: brewing_stand
1486
+ 5: anvil
1487
+ 6: dispenser
1488
+ 7: dropper
1489
+ 8: hopper
1490
+ 9: cauldron
1491
+ 10: minecart_chest
1492
+ 11: minecart_hopper
1493
+ 12: horse
1494
+ 13: beacon
1495
+ 14: structure_editor
1496
+ 15: trading
1497
+ 16: command_block
1498
+ 17: jukebox
1499
+ 18: armor
1500
+ 19: hand
1501
+ 20: compound_creator
1502
+ 21: element_constructor
1503
+ 22: material_reducer
1504
+ 23: lab_table
1505
+ 24: loom
1506
+ 25: lectern
1507
+ 26: grindstone
1508
+ 27: blast_furnace
1509
+ 28: smoker
1510
+ 29: stonecutter
1511
+ 30: cartography
1512
+ 31: hud
1513
+ 32: jigsaw_editor
1514
+ 33: smithing_table
1515
+ 34: chest_boat
1516
+ 35: decorated_pot
1517
+ 36: crafter
1518
+
1519
+ # Used in inventory transactions.
1520
+ ContainerSlotType: u8 =>
1521
+ - anvil_input
1522
+ - anvil_material
1523
+ - anvil_result
1524
+ - smithing_table_input
1525
+ - smithing_table_material
1526
+ - smithing_table_result
1527
+ - armor
1528
+ - container
1529
+ - beacon_payment
1530
+ - brewing_input
1531
+ - brewing_result
1532
+ - brewing_fuel
1533
+ - hotbar_and_inventory
1534
+ - crafting_input
1535
+ - crafting_output
1536
+ - recipe_construction
1537
+ - recipe_nature
1538
+ - recipe_items
1539
+ - recipe_search
1540
+ - recipe_search_bar
1541
+ - recipe_equipment
1542
+ - recipe_book
1543
+ - enchanting_input
1544
+ - enchanting_lapis
1545
+ - furnace_fuel
1546
+ - furnace_ingredient
1547
+ - furnace_output
1548
+ - horse_equip
1549
+ - hotbar
1550
+ - inventory
1551
+ - shulker
1552
+ - trade_ingredient1
1553
+ - trade_ingredient2
1554
+ - trade_result
1555
+ - offhand
1556
+ - compcreate_input
1557
+ - compcreate_output
1558
+ - elemconstruct_output
1559
+ - matreduce_input
1560
+ - matreduce_output
1561
+ - labtable_input
1562
+ - loom_input
1563
+ - loom_dye
1564
+ - loom_material
1565
+ - loom_result
1566
+ - blast_furnace_ingredient
1567
+ - smoker_ingredient
1568
+ - trade2_ingredient1
1569
+ - trade2_ingredient2
1570
+ - trade2_result
1571
+ - grindstone_input
1572
+ - grindstone_additional
1573
+ - grindstone_result
1574
+ - stonecutter_input
1575
+ - stonecutter_result
1576
+ - cartography_input
1577
+ - cartography_additional
1578
+ - cartography_result
1579
+ - barrel
1580
+ - cursor
1581
+ - creative_output
1582
+ - smithing_table_template
1583
+ - crafter
1584
+ - dynamic
1585
+ - registry # 125
1586
+
1587
+ SoundType: varint =>
1588
+ - ItemUseOn
1589
+ - Hit
1590
+ - Step
1591
+ - Fly
1592
+ - Jump
1593
+ - Break
1594
+ - Place
1595
+ - HeavyStep
1596
+ - Gallop
1597
+ - Fall
1598
+ - Ambient
1599
+ - AmbientBaby
1600
+ - AmbientInWater
1601
+ - Breathe
1602
+ - Death
1603
+ - DeathInWater
1604
+ - DeathToZombie
1605
+ - Hurt
1606
+ - HurtInWater
1607
+ - Mad
1608
+ - Boost
1609
+ - Bow
1610
+ - SquishBig
1611
+ - SquishSmall
1612
+ - FallBig
1613
+ - FallSmall
1614
+ - Splash
1615
+ - Fizz
1616
+ - Flap
1617
+ - Swim
1618
+ - Drink
1619
+ - Eat
1620
+ - Takeoff
1621
+ - Shake
1622
+ - Plop
1623
+ - Land
1624
+ - Saddle
1625
+ - Armor
1626
+ - ArmorStandPlace
1627
+ - AddChest
1628
+ - Throw
1629
+ - Attack
1630
+ - AttackNoDamage
1631
+ - AttackStrong
1632
+ - Warn
1633
+ - Shear
1634
+ - Milk
1635
+ - Thunder
1636
+ - Explode
1637
+ - Fire
1638
+ - Ignite
1639
+ - Fuse
1640
+ - Stare
1641
+ - Spawn
1642
+ - Shoot
1643
+ - BreakBlock
1644
+ - Launch
1645
+ - Blast
1646
+ - LargeBlast
1647
+ - Twinkle
1648
+ - Remedy
1649
+ - Unfect
1650
+ - LevelUp
1651
+ - BowHit
1652
+ - BulletHit
1653
+ - ExtinguishFire
1654
+ - ItemFizz
1655
+ - ChestOpen
1656
+ - ChestClosed
1657
+ - ShulkerBoxOpen
1658
+ - ShulkerBoxClosed
1659
+ - EnderChestOpen
1660
+ - EnderChestClosed
1661
+ - PowerOn
1662
+ - PowerOff
1663
+ - Attach
1664
+ - Detach
1665
+ - Deny
1666
+ - Tripod
1667
+ - Pop
1668
+ - DropSlot
1669
+ - Note
1670
+ - Thorns
1671
+ - PistonIn
1672
+ - PistonOut
1673
+ - Portal
1674
+ - Water
1675
+ - LavaPop
1676
+ - Lava
1677
+ - Burp
1678
+ - BucketFillWater
1679
+ - BucketFillLava
1680
+ - BucketEmptyWater
1681
+ - BucketEmptyLava
1682
+ - ArmorEquipChain
1683
+ - ArmorEquipDiamond
1684
+ - ArmorEquipGeneric
1685
+ - ArmorEquipGold
1686
+ - ArmorEquipIron
1687
+ - ArmorEquipLeather
1688
+ - ArmorEquipElytra
1689
+ - Record13
1690
+ - RecordCat
1691
+ - RecordBlocks
1692
+ - RecordChirp
1693
+ - RecordFar
1694
+ - RecordMall
1695
+ - RecordMellohi
1696
+ - RecordStal
1697
+ - RecordStrad
1698
+ - RecordWard
1699
+ - Record11
1700
+ - RecordWait
1701
+ - StopRecord
1702
+ - Flop
1703
+ - GuardianCurse
1704
+ - MobWarning
1705
+ - MobWarningBaby
1706
+ - Teleport
1707
+ - ShulkerOpen
1708
+ - ShulkerClose
1709
+ - Haggle
1710
+ - HaggleYes
1711
+ - HaggleNo
1712
+ - HaggleIdle
1713
+ - ChorusGrow
1714
+ - ChorusDeath
1715
+ - Glass
1716
+ - PotionBrewed
1717
+ - CastSpell
1718
+ - PrepareAttackSpell
1719
+ - PrepareSummon
1720
+ - PrepareWololo
1721
+ - Fang
1722
+ - Charge
1723
+ - CameraTakePicture
1724
+ - LeashKnotPlace
1725
+ - LeashKnotBreak
1726
+ - AmbientGrowl
1727
+ - AmbientWhine
1728
+ - AmbientPant
1729
+ - AmbientPurr
1730
+ - AmbientPurreow
1731
+ - DeathMinVolume
1732
+ - DeathMidVolume
1733
+ - ImitateBlaze
1734
+ - ImitateCaveSpider
1735
+ - ImitateCreeper
1736
+ - ImitateElderGuardian
1737
+ - ImitateEnderDragon
1738
+ - ImitateEnderman
1739
+ - ImitateEndermite
1740
+ - ImitateEvocationIllager
1741
+ - ImitateGhast
1742
+ - ImitateHusk
1743
+ - ImitateIllusionIllager
1744
+ - ImitateMagmaCube
1745
+ - ImitatePolarBear
1746
+ - ImitateShulker
1747
+ - ImitateSilverfish
1748
+ - ImitateSkeleton
1749
+ - ImitateSlime
1750
+ - ImitateSpider
1751
+ - ImitateStray
1752
+ - ImitateVex
1753
+ - ImitateVindicationIllager
1754
+ - ImitateWitch
1755
+ - ImitateWither
1756
+ - ImitateWitherSkeleton
1757
+ - ImitateWolf
1758
+ - ImitateZombie
1759
+ - ImitateZombiePigman
1760
+ - ImitateZombieVillager
1761
+ - EnderEyePlaced
1762
+ - EndPortalCreated
1763
+ - AnvilUse
1764
+ - BottleDragonBreath
1765
+ - PortalTravel
1766
+ - TridentHit
1767
+ - TridentReturn
1768
+ - TridentRiptide1
1769
+ - TridentRiptide2
1770
+ - TridentRiptide3
1771
+ - TridentThrow
1772
+ - TridentThunder
1773
+ - TridentHitGround
1774
+ - Default
1775
+ - FletchingTableUse
1776
+ - ElemConstructOpen
1777
+ - IceBombHit
1778
+ - BalloonPop
1779
+ - LtReactionIceBomb
1780
+ - LtReactionBleach
1781
+ - LtReactionElephantToothpaste
1782
+ - LtReactionElephantToothpaste2
1783
+ - LtReactionGlowStick
1784
+ - LtReactionGlowStick2
1785
+ - LtReactionLuminol
1786
+ - LtReactionSalt
1787
+ - LtReactionFertilizer
1788
+ - LtReactionFireball
1789
+ - LtReactionMagnesiumSalt
1790
+ - LtReactionMiscFire
1791
+ - LtReactionFire
1792
+ - LtReactionMiscExplosion
1793
+ - LtReactionMiscMystical
1794
+ - LtReactionMiscMystical2
1795
+ - LtReactionProduct
1796
+ - SparklerUse
1797
+ - GlowStickUse
1798
+ - SparklerActive
1799
+ - ConvertToDrowned
1800
+ - BucketFillFish
1801
+ - BucketEmptyFish
1802
+ - BubbleColumnUpwards
1803
+ - BubbleColumnDownwards
1804
+ - BubblePop
1805
+ - BubbleUpInside
1806
+ - BubbleDownInside
1807
+ - HurtBaby
1808
+ - DeathBaby
1809
+ - StepBaby
1810
+ - SpawnBaby
1811
+ - Born
1812
+ - TurtleEggBreak
1813
+ - TurtleEggCrack
1814
+ - TurtleEggHatched
1815
+ - LayEgg
1816
+ - TurtleEggAttacked
1817
+ - BeaconActivate
1818
+ - BeaconAmbient
1819
+ - BeaconDeactivate
1820
+ - BeaconPower
1821
+ - ConduitActivate
1822
+ - ConduitAmbient
1823
+ - ConduitAttack
1824
+ - ConduitDeactivate
1825
+ - ConduitShort
1826
+ - Swoop
1827
+ - BambooSaplingPlace
1828
+ - PreSneeze
1829
+ - Sneeze
1830
+ - AmbientTame
1831
+ - Scared
1832
+ - ScaffoldingClimb
1833
+ - CrossbowLoadingStart
1834
+ - CrossbowLoadingMiddle
1835
+ - CrossbowLoadingEnd
1836
+ - CrossbowShoot
1837
+ - CrossbowQuickChargeStart
1838
+ - CrossbowQuickChargeMiddle
1839
+ - CrossbowQuickChargeEnd
1840
+ - AmbientAggressive
1841
+ - AmbientWorried
1842
+ - CantBreed
1843
+ - ShieldBlock
1844
+ - LecternBookPlace
1845
+ - GrindstoneUse
1846
+ - Bell
1847
+ - CampfireCrackle
1848
+ - Roar
1849
+ - Stun
1850
+ - SweetBerryBushHurt
1851
+ - SweetBerryBushPick
1852
+ - CartographyTableUse
1853
+ - StonecutterUse
1854
+ - ComposterEmpty
1855
+ - ComposterFill
1856
+ - ComposterFillLayer
1857
+ - ComposterReady
1858
+ - BarrelOpen
1859
+ - BarrelClose
1860
+ - RaidHorn
1861
+ - LoomUse
1862
+ - AmbientInRaid
1863
+ - UicartographyTableUse
1864
+ - UistonecutterUse
1865
+ - UiloomUse
1866
+ - SmokerUse
1867
+ - BlastFurnaceUse
1868
+ - SmithingTableUse
1869
+ - Screech
1870
+ - Sleep
1871
+ - FurnaceUse
1872
+ - MooshroomConvert
1873
+ - MilkSuspiciously
1874
+ - Celebrate
1875
+ - JumpPrevent
1876
+ - AmbientPollinate
1877
+ - BeehiveDrip
1878
+ - BeehiveEnter
1879
+ - BeehiveExit
1880
+ - BeehiveWork
1881
+ - BeehiveShear
1882
+ - HoneybottleDrink
1883
+ - AmbientCave
1884
+ - Retreat
1885
+ - ConvertToZombified
1886
+ - Admire
1887
+ - StepLava
1888
+ - Tempt
1889
+ - Panic
1890
+ - Angry
1891
+ - AmbientMoodWarpedForest
1892
+ - AmbientMoodSoulsandValley
1893
+ - AmbientMoodNetherWastes
1894
+ - AmbientMoodBasaltDeltas
1895
+ - AmbientMoodCrimsonForest
1896
+ - RespawnAnchorCharge
1897
+ - RespawnAnchorDeplete
1898
+ - RespawnAnchorSetSpawn
1899
+ - RespawnAnchorAmbient
1900
+ - SoulEscapeQuiet
1901
+ - SoulEscapeLoud
1902
+ - RecordPigstep
1903
+ - LinkCompassToLodestone
1904
+ - UseSmithingTable
1905
+ - EquipNetherite
1906
+ - AmbientLoopWarpedForest
1907
+ - AmbientLoopSoulsandValley
1908
+ - AmbientLoopNetherWastes
1909
+ - AmbientLoopBasaltDeltas
1910
+ - AmbientLoopCrimsonForest
1911
+ - AmbientAdditionWarpedForest
1912
+ - AmbientAdditionSoulsandValley
1913
+ - AmbientAdditionNetherWastes
1914
+ - AmbientAdditionBasaltDeltas
1915
+ - AmbientAdditionCrimsonForest
1916
+ - SculkSensorPowerOn
1917
+ - SculkSensorPowerOff
1918
+ - BucketFillPowderSnow
1919
+ - BucketEmptyPowderSnow
1920
+ - PointedDripstoneCauldronDripWater
1921
+ - PointedDripstoneCauldronDripLava
1922
+ - PointedDripstoneDripWater
1923
+ - PointedDripstoneDripLava
1924
+ - CaveVinesPickBerries
1925
+ - BigDripleafTiltDown
1926
+ - BigDripleafTiltUp
1927
+ - CopperWaxOn
1928
+ - CopperWaxOff
1929
+ - Scrape
1930
+ - PlayerHurtDrown
1931
+ - PlayerHurtOnFire
1932
+ - PlayerHurtFreeze
1933
+ - UseSpyglass
1934
+ - StopUsingSpyglass
1935
+ - AmethystBlockChime
1936
+ - AmbientScreamer
1937
+ - HurtScreamer
1938
+ - DeathScreamer
1939
+ - MilkScreamer
1940
+ - JumpToBlock
1941
+ - PreRam
1942
+ - PreRamScreamer
1943
+ - RamImpact
1944
+ - RamImpactScreamer
1945
+ - SquidInkSquirt
1946
+ - GlowSquidInkSquirt
1947
+ - ConvertToStray
1948
+ - CakeAddCandle
1949
+ - ExtinguishCandle
1950
+ - AmbientCandle
1951
+ - BlockClick
1952
+ - BlockClickFail
1953
+ - SculkCatalystBloom
1954
+ - SculkShriekerShriek
1955
+ - WardenNearbyClose
1956
+ - WardenNearbyCloser
1957
+ - WardenNearbyClosest
1958
+ - WardenSlightlyAngry
1959
+ - RecordOtherside
1960
+ - Tongue
1961
+ - CrackIronGolem
1962
+ - RepairIronGolem
1963
+ - Listening
1964
+ - Heartbeat
1965
+ - HornBreak
1966
+ - _
1967
+ - SculkSpread
1968
+ - SculkCharge
1969
+ - SculkSensorPlace
1970
+ - SculkShriekerPlace
1971
+ - GoatCall0
1972
+ - GoatCall1
1973
+ - GoatCall2
1974
+ - GoatCall3
1975
+ - GoatCall4
1976
+ - GoatCall5
1977
+ - GoatCall6
1978
+ - GoatCall7
1979
+ - GoatCall8
1980
+ - GoatCall9
1981
+ - GoatHarmony0
1982
+ - GoatHarmony1
1983
+ - GoatHarmony2
1984
+ - GoatHarmony3
1985
+ - GoatHarmony4
1986
+ - GoatHarmony5
1987
+ - GoatHarmony6
1988
+ - GoatHarmony7
1989
+ - GoatHarmony8
1990
+ - GoatHarmony9
1991
+ - GoatMelody0
1992
+ - GoatMelody1
1993
+ - GoatMelody2
1994
+ - GoatMelody3
1995
+ - GoatMelody4
1996
+ - GoatMelody5
1997
+ - GoatMelody6
1998
+ - GoatMelody7
1999
+ - GoatMelody8
2000
+ - GoatMelody9
2001
+ - GoatBass0
2002
+ - GoatBass1
2003
+ - GoatBass2
2004
+ - GoatBass3
2005
+ - GoatBass4
2006
+ - GoatBass5
2007
+ - GoatBass6
2008
+ - GoatBass7
2009
+ - GoatBass8
2010
+ - GoatBass9
2011
+ - _
2012
+ - _
2013
+ - _
2014
+ - ImitateWarden
2015
+ - ListeningAngry
2016
+ - ItemGiven
2017
+ - ItemTaken
2018
+ - Disappeared
2019
+ - Reappeared
2020
+ - DrinkMilk
2021
+ - FrogspawnHatched
2022
+ - LaySpawn
2023
+ - FrogspawnBreak
2024
+ - SonicBoom
2025
+ - SonicCharge
2026
+ - SoundeventItemThrown
2027
+ - Record5
2028
+ - ConvertToFrog
2029
+ - RecordPlaying
2030
+ - EnchantingTableUse
2031
+ - StepSand
2032
+ - DashReady
2033
+ - BundleDropContents
2034
+ - BundleInsert
2035
+ - BundleRemoveOne
2036
+ - PressurePlateClickOff
2037
+ - PressurePlateClickOn
2038
+ - ButtonClickOff
2039
+ - ButtonClickOn
2040
+ - DoorOpen
2041
+ - DoorClose
2042
+ - TrapdoorOpen
2043
+ - TrapdoorClose
2044
+ - FenceGateOpen
2045
+ - FenceGateClose
2046
+ - Insert
2047
+ - Pickup
2048
+ - InsertEnchanted
2049
+ - PickupEnchanted
2050
+ - Brush
2051
+ - BrushCompleted
2052
+ - ShatterDecoratedPot
2053
+ - BreakDecoratedPot
2054
+ - SnifferEggCrack
2055
+ - SnifferEggHatched
2056
+ - WaxedSignInteractFail
2057
+ - RecordRelic
2058
+ - Bump
2059
+ - PumpkinCarve
2060
+ - ConvertHuskToZombie
2061
+ - PigDeath
2062
+ - HoglinZombified
2063
+ - AmbientUnderwaterEnter
2064
+ - AmbientUnderwaterExit
2065
+ - BottleFill
2066
+ - BottleEmpty
2067
+ - CrafterCraft
2068
+ - CrafterFail
2069
+ - DecoratedPotInsert
2070
+ - DecoratedPotInsertFail
2071
+ - CrafterDisableSlot
2072
+ - TrialSpawnerOpenShutter
2073
+ - TrialSpawnerEjectItem
2074
+ - TrialSpawnerDetectPlayer
2075
+ - TrialSpawnerSpawnMob
2076
+ - TrialSpawnerCloseShutter
2077
+ - TrialSpawnerAmbient
2078
+ - CopperBulbTurnOn
2079
+ - CopperBulbTurnOff
2080
+ - AmbientInAir
2081
+ - BreezeWindChargeBurst
2082
+ - ImitateBreeze
2083
+ - ArmadilloBrush
2084
+ - ArmadilloScuteDrop
2085
+ - EquipWolf
2086
+ - UnequipWolf
2087
+ - Reflect
2088
+ - VaultOpenShutter
2089
+ - VaultCloseShutter
2090
+ - VaultEjectItem
2091
+ - VaultInsertItem
2092
+ - VaultInsertItemFail
2093
+ - VaultAmbient
2094
+ - VaultActivate
2095
+ - VaultDeactive
2096
+ - HurtReduced
2097
+ - WindChargeBurst
2098
+ - ImitateBogged
2099
+ - WolfArmourCrack
2100
+ - WolfArmourBreak
2101
+ - WolfArmourRepair
2102
+ - MaceSmashAir
2103
+ - MaceSmashGround
2104
+ - TrialSpawnerChargeActivate
2105
+ - TrialSpawnerAmbientOminous
2106
+ - OminiousItemSpawnerSpawnItem
2107
+ - OminousBottleEndUse
2108
+ - MaceHeavySmashGround
2109
+ - OminousItemSpawnerSpawnItemBegin
2110
+ - _
2111
+ - ApplyEffectBadOmen
2112
+ - ApplyEffectRaidOmen
2113
+ - ApplyEffectTrialOmen
2114
+ - OminousItemSpawnerAboutToSpawnItem
2115
+ - RecordCreator
2116
+ - RecordCreatorMusicBox
2117
+ - RecordPrecipice
2118
+ - VaultRejectRewardedPlayer
2119
+ - ImitateDrowned
2120
+ - ImitateCreaking
2121
+ - BundleInsertFailed
2122
+ - SpongeAbsorb
2123
+ - _
2124
+ - BlockCreakingHeartTrail
2125
+ - CreakingHeartSpawn
2126
+ - Activate
2127
+ - Deactivate
2128
+ - Freeze
2129
+ - Unfreeze
2130
+ - Open
2131
+ - OpenLong
2132
+ - Close
2133
+ - CloseLong
2134
+ - ImitatePhantom
2135
+ - ImitateZoglin
2136
+ - ImitateGuardian
2137
+ - ImitateRavager
2138
+ - ImitatePillager
2139
+ - PlaceInWater
2140
+ - StateChange
2141
+ - ImitateHappyGhast
2142
+ - UniqueGeneric
2143
+ - RecordTears
2144
+ - TheEndLightFlash
2145
+ - LeadLeash
2146
+ - LeadUnleash
2147
+ - LeadBreak
2148
+ - Unsaddle
2149
+ - EquipCopper
2150
+ - RecordLavaChicken
2151
+ - PlaceItem
2152
+ - SingleItemSwap
2153
+ - MultiItemSwap
2154
+ - ItemEnchantLunge1
2155
+ - ItemEnchantLunge2
2156
+ - ItemEnchantLunge3
2157
+ - AttackCritical
2158
+ - ItemSpearAttackHit
2159
+ - ItemSpearAttackMiss
2160
+ - ItemWoodenSpearAttackHit
2161
+ - ItemWoodenSpearAttackMiss
2162
+ - ImitateParched
2163
+ - ImitateCamelHusk
2164
+ - ItemSpearUse
2165
+ - ItemWoodenSpearUse
2166
+ - SaddleInWater
2167
+ - ItemStoneSpearAttackHit
2168
+ - ItemIronSpearAttackHit
2169
+ - ItemCopperSpearAttackHit
2170
+ - ItemGoldenSpearAttackHit
2171
+ - ItemDiamondSpearAttackHit
2172
+ - ItemNetheriteSpearAttackHit
2173
+ - ItemStoneSpearAttackMiss
2174
+ - ItemIronSpearAttackMiss
2175
+ - ItemCopperSpearAttackMiss
2176
+ - ItemGoldenSpearAttackMiss
2177
+ - ItemDiamondSpearAttackMiss
2178
+ - ItemNetheriteSpearAttackMiss
2179
+ - ItemStoneSpearUse
2180
+ - ItemIronSpearUse
2181
+ - ItemCopperSpearUse
2182
+ - ItemGoldenSpearUse
2183
+ - ItemDiamondSpearUse
2184
+ - ItemNetheriteSpearUse
2185
+
2186
+ # TODO: remove?
2187
+ LegacyEntityType: li32 =>
2188
+ 10: chicken
2189
+ 11: cow
2190
+ 12: pig
2191
+ 13: sheep
2192
+ 14: wolf
2193
+ 15: villager
2194
+ 16: mooshroom
2195
+ 17: squid
2196
+ 18: rabbit
2197
+ 19: bat
2198
+ 20: iron_golem
2199
+ 21: snow_golem
2200
+ 22: ocelot
2201
+ 23: horse
2202
+ 24: donkey
2203
+ 25: mule
2204
+ 26: skeleton_horse
2205
+ 27: zombie_horse
2206
+ 28: polar_bear
2207
+ 29: llama
2208
+ 30: parrot
2209
+ 31: dolphin
2210
+ 32: zombie
2211
+ 33: creeper
2212
+ 34: skeleton
2213
+ 35: spider
2214
+ 36: zombie_pigman
2215
+ 37: slime
2216
+ 38: enderman
2217
+ 39: silverfish
2218
+ 40: cave_spider
2219
+ 41: ghast
2220
+ 42: magma_cube
2221
+ 43: blaze
2222
+ 44: zombie_villager
2223
+ 45: witch
2224
+ 46: stray
2225
+ 47: husk
2226
+ 48: wither_skeleton
2227
+ 49: guardian
2228
+ 50: elder_guardian
2229
+ 51: npc
2230
+ 52: wither
2231
+ 53: ender_dragon
2232
+ 54: shulker
2233
+ 55: endermite
2234
+ 56: agent # LEARN_TO_CODE_MASCOT
2235
+ 57: vindicator
2236
+ 58: phantom
2237
+ 61: armor_stand
2238
+ 62: tripod_camera
2239
+ 63: player
2240
+ 64: item
2241
+ 65: tnt
2242
+ 66: falling_block
2243
+ 67: moving_block
2244
+ 68: xp_bottle
2245
+ 69: xp_orb
2246
+ 70: eye_of_ender_signal
2247
+ 71: ender_crystal
2248
+ 72: fireworks_rocket
2249
+ 73: thrown_trident
2250
+ 74: turtle
2251
+ 75: cat
2252
+ 76: shulker_bullet
2253
+ 77: fishing_hook
2254
+ 78: chalkboard
2255
+ 79: dragon_fireball
2256
+ 80: arrow
2257
+ 81: snowball
2258
+ 82: egg
2259
+ 83: painting
2260
+ 84: minecart
2261
+ 85: fireball
2262
+ 86: splash_potion
2263
+ 87: ender_pearl
2264
+ 88: leash_knot
2265
+ 89: wither_skull
2266
+ 90: boat
2267
+ 91: wither_skull_dangerous
2268
+ 93: lightning_bolt
2269
+ 94: small_fireball
2270
+ 95: area_effect_cloud
2271
+ 96: hopper_minecart
2272
+ 97: tnt_minecart
2273
+ 98: chest_minecart
2274
+ 100: command_block_minecart
2275
+ 101: lingering_potion
2276
+ 102: llama_spit
2277
+ 103: evocation_fang
2278
+ 104: evocation_illager
2279
+ 105: vex
2280
+ 106: ice_bomb
2281
+ 107: balloon
2282
+ 108: pufferfish
2283
+ 109: salmon
2284
+ 110: drowned
2285
+ 111: tropicalfish
2286
+ 112: cod
2287
+ 113: panda
2288
+
2289
+ DeviceOS: li32 =>
2290
+ - Undefined
2291
+ - Android
2292
+ - IOS
2293
+ - OSX
2294
+ - FireOS
2295
+ # Deprecated
2296
+ - GearVR
2297
+ - Hololens
2298
+ - Win10
2299
+ - Win32
2300
+ - Dedicated
2301
+ - TVOS
2302
+ - Orbis
2303
+ - NintendoSwitch
2304
+ - Xbox
2305
+ - WindowsPhone
2306
+ - Linux
2307
+
2308
+
2309
+ AbilitySet: ["bitflags",
2310
+ {
2311
+ "type": "lu32",
2312
+ "flags": [
2313
+ "build",
2314
+ "mine",
2315
+ "doors_and_switches",
2316
+ "open_containers",
2317
+ "attack_players",
2318
+ "attack_mobs",
2319
+ "operator_commands",
2320
+ "teleport",
2321
+ "invulnerable",
2322
+ "flying",
2323
+ "may_fly",
2324
+ "instant_build",
2325
+ "lightning",
2326
+ "fly_speed",
2327
+ "walk_speed",
2328
+ "muted",
2329
+ "world_builder",
2330
+ "no_clip",
2331
+ "privileged_builder",
2332
+ "vertical_fly_speed",
2333
+ "count"
2334
+ ]
2335
+ }
2336
+ ]
2337
+
2338
+ # AbilityLayer represents the abilities of a specific layer, such as the base layer or the spectator layer.
2339
+ AbilityLayers:
2340
+ # Type represents the type of the layer. This is one of the AbilityLayerType constants defined above.
2341
+ type: lu16 =>
2342
+ - cache
2343
+ - base
2344
+ - spectator
2345
+ - commands
2346
+ - editor
2347
+ - loading_screen
2348
+ # The abilities that can be toggled between
2349
+ allowed: AbilitySet
2350
+ # The abilities that are currently active
2351
+ enabled: AbilitySet
2352
+ # FlySpeed is the default horizontal fly speed of the layer.
2353
+ fly_speed: lf32
2354
+ # VerticalFlySpeed is the default vertical fly speed of the layer.
2355
+ vertical_fly_speed: lf32
2356
+ # WalkSpeed is the default walk speed of the layer.
2357
+ walk_speed: lf32
2358
+
2359
+ CameraPresets:
2360
+ # Name is the name of the preset. Each preset must have their own unique name.
2361
+ name: string
2362
+ # Parent is the name of the preset that this preset extends upon. This can be left empty.
2363
+ parent: string
2364
+ position: Vec3fopts
2365
+ rotation: Vec2fopts
2366
+ # RotationSpeed is the speed at which the camera should rotate.
2367
+ rotation_speed?: lf32
2368
+ # SnapToTarget determines whether the camera should snap to the target entity or not.
2369
+ snap_to_target?: bool
2370
+ # horizontal_rotation_limit is the horizontal rotation limit of the camera.
2371
+ horizontal_rotation_limit?: vec2f
2372
+ # vertical_rotation_limit is the vertical rotation limit of the camera.
2373
+ vertical_rotation_limit?: vec2f
2374
+ # continue_targeting determines whether the camera should continue targeting the entity or not.
2375
+ continue_targeting?: bool
2376
+ # TrackingRadius is the radius around the camera that the aim assist should track targets.
2377
+ tracking_radius?: lf32
2378
+ # ViewOffset is only used in a follow_orbit camera and controls an offset based on a pivot point to the
2379
+ # player, causing it to be shifted in a certain direction.
2380
+ offset?: vec2f
2381
+ # EntityOffset controls the offset from the entity that the camera should be rendered at.
2382
+ entity_offset?: vec3f
2383
+ # Radius is only used in a follow_orbit camera and controls how far away from the player the camera should
2384
+ # be rendered.
2385
+ radius?: lf32
2386
+ yaw_limit_min?: lf32
2387
+ yaw_limit_max?: lf32
2388
+ ## TODO: make this an enum afer adding proper optional support inside pdefyaml
2389
+ audio_listener?: u8
2390
+ player_effects?: bool
2391
+ aim_assist?:
2392
+ # Preset is the ID of the preset that has previously been defined in the CameraAimAssistPresets packet.
2393
+ preset_id?: string
2394
+ target_mode?: li32 =>
2395
+ - angle
2396
+ - distance
2397
+ # Angle is the maximum angle around the playes's cursor that the aim assist should check for a target,
2398
+ # if `target_mode` is set to `angle`.
2399
+ angle?: vec2f
2400
+ # Distance is the maximum distance from the player's cursor should check for a target, if TargetMode is
2401
+ # set to target_mode distance.
2402
+ distance?: lf32
2403
+ control_scheme?: u8 =>
2404
+ - locked_player_relative_strafe
2405
+ - camera_relative
2406
+ - camera_relative_strafe
2407
+ - player_relative
2408
+ - player_relative_strafe
2409
+
2410
+
2411
+ # CameraRotationOption represents a rotation keyframe option for spline instructions.
2412
+ CameraRotationOption:
2413
+ # Value is the rotation value for the keyframe.
2414
+ value: vec3f
2415
+ # Time is the time of the keyframe within the spline.
2416
+ time: lf32
2417
+ has_ease_type: bool
2418
+ ease_type: has_ease_type ?
2419
+ if true: u8
2420
+
2421
+ # CameraSplineInstruction represents a camera spline instruction definition.
2422
+ CameraSplineInstruction:
2423
+ # TotalTime is the total time for the spline animation.
2424
+ total_time: lf32
2425
+ has_spline_type: bool
2426
+ spline_type: has_spline_type ?
2427
+ if true: u8
2428
+ # Curve is the list of curve points defining the spline.
2429
+ curve: vec3f[]varint
2430
+ # ProgressKeyFrames is a list of key frames for the spline progress.
2431
+ progress_key_frames: CameraProgressOption[]varint
2432
+ # RotationOptions is a list of rotation keyframes for the spline.
2433
+ rotation_options: CameraRotationOption[]varint
2434
+
2435
+ CameraProgressOption:
2436
+ value: lf32
2437
+ time: lf32
2438
+ has_ease_type: bool
2439
+ ease_type: has_ease_type ?
2440
+ if true: u8
2441
+
2442
+ CameraSplineDefinition:
2443
+ name: string
2444
+ instruction: CameraSplineInstruction
2445
+
2446
+ CameraAimAssistActorPriorityData:
2447
+ preset_index: li32
2448
+ category_index: li32
2449
+ actor_index: li32
2450
+ priority: li32
2451
+
2452
+ MemoryCategoryCounter:
2453
+ category: u8 =>
2454
+ - unknown
2455
+ - invalid_size_unknown
2456
+ - actor
2457
+ - actor_animation
2458
+ - actor_rendering
2459
+ - balancer
2460
+ - block_ticking_queues
2461
+ - biome_storage
2462
+ - cereal
2463
+ - circuit_system
2464
+ - client
2465
+ - commands
2466
+ - db_storage
2467
+ - debug
2468
+ - documentation
2469
+ - ecs_systems
2470
+ - fmod
2471
+ - fonts
2472
+ - im_gui
2473
+ - input
2474
+ - json_ui
2475
+ - json_ui_control_factory_json
2476
+ - json_ui_control_tree
2477
+ - json_ui_control_tree_control_element
2478
+ - json_ui_control_tree_populate_data_binding
2479
+ - json_ui_control_tree_populate_focus
2480
+ - json_ui_control_tree_populate_layout
2481
+ - json_ui_control_tree_populate_other
2482
+ - json_ui_control_tree_populate_sprite
2483
+ - json_ui_control_tree_populate_text
2484
+ - json_ui_control_tree_populate_tts
2485
+ - json_ui_control_tree_visibility
2486
+ - json_ui_create_ui
2487
+ - json_ui_defs
2488
+ - json_ui_layout_manager
2489
+ - json_ui_layout_manager_remove_dependencies
2490
+ - json_ui_layout_manager_init_variable
2491
+ - languages
2492
+ - level
2493
+ - level_structures
2494
+ - level_chunk
2495
+ - level_chunk_gen
2496
+ - level_chunk_gen_thread_local
2497
+ - network
2498
+ - marketplace
2499
+ - material_dragon_compiled_definition
2500
+ - material_dragon_material
2501
+ - material_dragon_resource
2502
+ - material_dragon_uniform_map
2503
+ - material_render_material
2504
+ - material_render_material_group
2505
+ - material_variation_manager
2506
+ - molang
2507
+ - ore_ui
2508
+ - persona
2509
+ - player
2510
+ - render_chunk
2511
+ - render_chunk_index_buffer
2512
+ - render_chunk_vertex_buffer
2513
+ - rendering
2514
+ - rendering_library
2515
+ - request_log
2516
+ - resource_packs
2517
+ - sound
2518
+ - sub_chunk_biome_data
2519
+ - sub_chunk_block_data
2520
+ - sub_chunk_light_data
2521
+ - textures
2522
+ - vr
2523
+ - weather_renderer
2524
+ - world_generator
2525
+ - tasks
2526
+ - test
2527
+ - scripting
2528
+ - scripting_runtime
2529
+ - scripting_context
2530
+ - scripting_context_bindings_mc
2531
+ - scripting_context_bindings_gt
2532
+ - scripting_context_run
2533
+ - data_driven_ui
2534
+ - data_driven_ui_defs
2535
+ bytes: lu64
2536
+
2537
+ VoxelCells:
2538
+ x_size: u8
2539
+ y_size: u8
2540
+ z_size: u8
2541
+ storage: u8[]varint
2542
+
2543
+ VoxelShape:
2544
+ cells: VoxelCells[]varint
2545
+ x_coordinates: lf32[]varint
2546
+ y_coordinates: lf32[]varint
2547
+ z_coordinates: lf32[]varint
2548
+
2549
+ VoxelShapeNameEntry:
2550
+ name: string
2551
+ id: lu16
2552
+
2553
+ GatheringJoinInfo:
2554
+ experience_id: string
2555
+ experience_name: string
2556
+ experience_world_id: string
2557
+ experience_world_name: string
2558
+ creator_id: string
2559
+ store_id: string
2560
+
2561
+ ServerJoinInformation:
2562
+ has_gathering_info: bool
2563
+ gathering_info: has_gathering_info ?
2564
+ if true: GatheringJoinInfo
2565
+
2566
+
2567
+ DisconnectFailReason: zigzag32 =>
2568
+ - unknown
2569
+ - cant_connect_no_internet
2570
+ - no_permissions
2571
+ - unrecoverable_error
2572
+ - third_party_blocked
2573
+ - third_party_no_internet
2574
+ - third_party_bad_ip
2575
+ - third_party_no_server_or_server_locked
2576
+ - version_mismatch
2577
+ - skin_issue
2578
+ - invite_session_not_found
2579
+ - edu_level_settings_missing
2580
+ - local_server_not_found
2581
+ - legacy_disconnect
2582
+ - user_leave_game_attempted
2583
+ - platform_locked_skins_error
2584
+ - realms_world_unassigned
2585
+ - realms_server_cant_connect
2586
+ - realms_server_hidden
2587
+ - realms_server_disabled_beta
2588
+ - realms_server_disabled
2589
+ - cross_platform_disallowed
2590
+ - cant_connect
2591
+ - session_not_found
2592
+ - client_settings_incompatible_with_server
2593
+ - server_full
2594
+ - invalid_platform_skin
2595
+ - edition_version_mismatch
2596
+ - edition_mismatch
2597
+ - level_newer_than_exe_version
2598
+ - no_fail_occurred
2599
+ - banned_skin
2600
+ - timeout
2601
+ - server_not_found
2602
+ - outdated_server
2603
+ - outdated_client
2604
+ - no_premium_platform
2605
+ - multiplayer_disabled
2606
+ - no_wifi
2607
+ - world_corruption
2608
+ - no_reason
2609
+ - disconnected
2610
+ - invalid_player
2611
+ - logged_in_other_location
2612
+ - server_id_conflict
2613
+ - not_allowed
2614
+ - not_authenticated
2615
+ - invalid_tenant
2616
+ - unknown_packet
2617
+ - unexpected_packet
2618
+ - invalid_command_request_packet
2619
+ - host_suspended
2620
+ - login_packet_no_request
2621
+ - login_packet_no_cert
2622
+ - missing_client
2623
+ - kicked
2624
+ - kicked_for_exploit
2625
+ - kicked_for_idle
2626
+ - resource_pack_problem
2627
+ - incompatible_pack
2628
+ - out_of_storage
2629
+ - invalid_level
2630
+ - disconnect_packet_deprecated
2631
+ - block_mismatch
2632
+ - invalid_heights
2633
+ - invalid_widths
2634
+ # deprecated
2635
+ - connection_lost
2636
+ - zombie_connection
2637
+ - shutdown
2638
+ - reason_not_set
2639
+ - loading_state_timeout
2640
+ - resource_pack_loading_failed
2641
+ - searching_for_session_loading_screen_failed
2642
+ - conn_protocol_version
2643
+ - subsystem_status_error
2644
+ - empty_auth_from_discovery
2645
+ - empty_url_from_discovery
2646
+ - expired_auth_from_discovery
2647
+ - unknown_signal_service_sign_in_failure
2648
+ - xbl_join_lobby_failure
2649
+ - unspecified_client_instance_disconnection
2650
+ - conn_session_not_found
2651
+ - conn_create_peer_connection
2652
+ - conn_ice
2653
+ - conn_connect_request
2654
+ - conn_connect_response
2655
+ - conn_negotiation_timeout
2656
+ - conn_inactivity_timeout
2657
+ - stale_connection_being_replaced
2658
+ - realms_session_not_found
2659
+ - bad_packet
2660
+ - conn_failed_to_create_offer
2661
+ - conn_failed_to_create_answer
2662
+ - conn_failed_to_set_local_description
2663
+ - conn_failed_to_set_remote_description
2664
+ - conn_negotiation_timeout_waiting_for_response
2665
+ - conn_negotiation_timeout_waiting_for_accept
2666
+ - conn_incoming_connection_ignored
2667
+ - conn_signaling_parsing_failure
2668
+ - conn_signaling_unknown_error
2669
+ - conn_signaling_unicast_delivery_failed
2670
+ - conn_signaling_broadcast_delivery_failed
2671
+ - conn_signaling_generic_delivery_failed
2672
+ - editor_mismatch_editor_world
2673
+ - editor_mismatch_vanilla_world
2674
+ - world_transfer_not_primary_client
2675
+ - server_shutdown
2676
+ - game_setup_cancelled
2677
+ - game_setup_failed
2678
+ - no_venue
2679
+ - conn_signalling_sign_in_failed
2680
+ - session_access_denied
2681
+ - service_sign_in_issue
2682
+ - conn_no_signaling_channel
2683
+ - conn_not_logged_in
2684
+ - conn_client_signalling_error
2685
+ - sub_client_login_disabled
2686
+ - deep_link_trying_to_open_demo_world_while_signed_in
2687
+ - async_join_task_denied
2688
+ - realms_timeline_required
2689
+ - guest_withough_host
2690
+ - failed_to_join_experience
2691
+ - host_signed_out
2692
+ - script_watchdog_exception
2693
+ - script_memory_limit_exceeded
2694
+ - storage_low_during_gameplay
2695
+ - storage_full_during_gameplay
2696
+ - level_storage_corruption
2697
+ - edition_mismatch_vanilla_to_edu
2698
+ - edition_mismatch_edu_to_vanilla
2699
+ - editor_mismatch_editor_to_vanilla
2700
+ - editor_mismatch_vanilla_to_editor
2701
+ - deny_listed
2702
+
2703
+ FullContainerName:
2704
+ container_id: ContainerSlotType
2705
+ dynamic_container_id?: u32
2706
+
2707
+ MovementEffectType: varint =>
2708
+ -1: invalid
2709
+ 0: GLIDE_BOOST
2710
+
2711
+ # BiomeDefinition represents a biome definition in the game. This can be a vanilla biome or a completely
2712
+ # custom biome.
2713
+ BiomeDefinition:
2714
+ # NameIndex represents the index of the biome name in the string list from BiomeDefinitionListPacket.
2715
+ name_index: li16
2716
+ # BiomeID is the biome ID. This is optional and can be empty.
2717
+ biome_id: lu16
2718
+ # Temperature is the temperature of the biome, used for weather, biome behaviours and sky colour.
2719
+ temperature: lf32
2720
+ # Downfall is the amount that precipitation affects colours and block changes.
2721
+ downfall: lf32
2722
+ # Changes leaves turning white in snow
2723
+ snow_foliage: lf32
2724
+ # Depth ...
2725
+ depth: lf32
2726
+ # Scale ...
2727
+ scale: lf32
2728
+ # MapWaterColour is an ARGB value for the water colour on maps in the biome.
2729
+ map_water_colour: li32
2730
+ # Rain is true if the biome has rain, false if it is a dry biome.
2731
+ rain: bool
2732
+ # Tags are a list of indices of tags in the string list. These are used to group biomes together for
2733
+ # biome generation and other purposes.
2734
+ tags?: lu16[]varint
2735
+ # ChunkGeneration is optional information to assist in client-side chunk generation.
2736
+ chunk_generation?: BiomeChunkGeneration
2737
+
2738
+
2739
+ # BiomeChunkGeneration represents the information required for the client to generate chunks itself
2740
+ # to create the illusion of a larger render distance.
2741
+ BiomeChunkGeneration:
2742
+ # Climate is optional information to specify the biome's climate.
2743
+ climate?: BiomeClimate
2744
+ # ConsolidatedFeatures is a list of features that are consolidated into a single feature.
2745
+ consolidated_features?: BiomeConsolidatedFeature[]varint
2746
+ # MountainParameters is optional information to specify the biome's mountain parameters.
2747
+ mountain_parameters?: BiomeMountainParameters
2748
+ # SurfaceMaterialAdjustments is a list of surface material adjustments.
2749
+ surface_material_adjustments?: BiomeElementData[]varint
2750
+ # SurfaceMaterials is a set of materials to use for the surface layers of the biome.
2751
+ surface_materials?: BiomeSurfaceMaterial
2752
+ # HasDefaultOverworldSurface is true if the biome has a default overworld surface.
2753
+ has_default_overworld_surface: bool
2754
+ # HasSwampSurface is true if the biome has a swamp surface.
2755
+ has_swamp_surface: bool
2756
+ # HasFrozenOceanSurface is true if the biome has a frozen ocean surface.
2757
+ has_frozen_ocean_surface: bool
2758
+ # HasEndSurface is true if the biome has an end surface.
2759
+ has_end_surface: bool
2760
+ # MesaSurface is optional information to specify the biome's mesa surface.
2761
+ mesa_surface?: BiomeMesaSurface
2762
+ # CappedSurface is optional information to specify the biome's capped surface, i.e. in the Nether.
2763
+ capped_surface?: BiomeCappedSurface
2764
+ # OverworldRules is optional information to specify the biome's overworld rules, such as rivers and hills.
2765
+ overworld_rules?: BiomeOverworldRules
2766
+ # MultiNoiseRules is optional information to specify the biome's multi-noise rules.
2767
+ multi_noise_rules?: BiomeMultiNoiseRules
2768
+ # LegacyRules is a list of legacy rules for the biomes using an older format, which is just a list of
2769
+ # weighted biomes.
2770
+ legacy_rules?: BiomeConditionalTransformation[]varint
2771
+ # ReplacementsData is a list of biome replacement data.
2772
+ replacements_data?: BiomeReplacementData[]varint
2773
+ has_village_type: bool
2774
+ village_type: has_village_type ?
2775
+ if true: u8
2776
+
2777
+ # BiomeClimate represents the climate of a biome, mainly for ambience but also defines certain behaviours.
2778
+ BiomeClimate:
2779
+ # Temperature is the temperature of the biome, used for weather, biome behaviours and sky colour.
2780
+ temperature: lf32
2781
+ # Downfall is the amount that precipitation affects colours and block changes.
2782
+ downfall: lf32
2783
+ # SnowAccumulationMin is the minimum amount of snow that can accumulate in the biome, every 0.125 is
2784
+ # another layer of snow.
2785
+ snow_accumulation_min: lf32
2786
+ # SnowAccumulationMax is the maximum amount of snow that can accumulate in the biome, every 0.125 is
2787
+ # another layer of snow.
2788
+ snow_accumulation_max: lf32
2789
+
2790
+ # BiomeMountainParameters specifies the parameters for a mountain biome.
2791
+ BiomeMountainParameters:
2792
+ # SteepBlock is the runtime ID of the block to use for steep slopes.
2793
+ steep_block: li32
2794
+ # NorthSlopes is true if the biome has north slopes.
2795
+ north_slopes: bool
2796
+ # SouthSlopes is true if the biome has south slopes.
2797
+ south_slopes: bool
2798
+ # WestSlopes is true if the biome has west slopes.
2799
+ west_slopes: bool
2800
+ # EastSlopes is true if the biome has east slopes.
2801
+ east_slopes: bool
2802
+ # TopSlideEnabled is true if the biome has top slide enabled.
2803
+ top_slide_enabled: bool
2804
+
2805
+ # BiomeSurfaceMaterial specifies the materials to use for the surface layers of the biome.
2806
+ BiomeSurfaceMaterial:
2807
+ # TopBlock is the runtime ID of the block to use for the top layer.
2808
+ top_block: li32
2809
+ # MidBlock is the runtime ID to use for the middle layers.
2810
+ mid_block: li32
2811
+ # SeaFloorBlock is the runtime ID to use for the sea floor.
2812
+ sea_floor_block: li32
2813
+ # FoundationBlock is the runtime ID to use for the foundation layers.
2814
+ foundation_block: li32
2815
+ # SeaBlock is the runtime ID to use for the sea layers.
2816
+ sea_block: li32
2817
+ # SeaFloorDepth is the depth of the sea floor, in blocks.
2818
+ sea_floor_depth: li32
2819
+
2820
+ # BiomeMesaSurface specifies the materials to use for the mesa biome.
2821
+ BiomeMesaSurface:
2822
+ # ClayMaterial is the runtime ID of the block to use for clay layers.
2823
+ clay_material: lu32
2824
+ # HardClayMaterial is the runtime ID of the block to use for hard clay layers.
2825
+ hard_clay_material: lu32
2826
+ # BrycePillars is true if the biome has bryce pillars, which are tall spire-like structures.
2827
+ bryce_pillars: bool
2828
+ # HasForest is true if the biome has a forest.
2829
+ has_forest: bool
2830
+
2831
+ # BiomeCappedSurface specifies the materials to use for the capped surface of a biome, such as in the Nether.
2832
+ BiomeCappedSurface:
2833
+ # FloorBlocks is a list of runtime IDs to use for the floor blocks.
2834
+ floor_blocks: li32[]varint
2835
+ # CeilingBlocks is a list of runtime IDs to use for the ceiling blocks.
2836
+ ceiling_blocks: li32[]varint
2837
+ # SeaBlock is an optional runtime ID to use for the sea block.
2838
+ sea_block?: lu32
2839
+ # FoundationBlock is an optional runtime ID to use for the foundation block.
2840
+ foundation_block?: lu32
2841
+ # BeachBlock is an optional runtime ID to use for the beach block.
2842
+ beach_block?: lu32
2843
+
2844
+ # BiomeMultiNoiseRules specifies the rules for multi-noise biomes, which are biomes that are defined by
2845
+ # multiple noise parameters instead of just temperature and humidity.
2846
+ BiomeMultiNoiseRules:
2847
+ # Temperature is the temperature level of the biome.
2848
+ temperature: lf32
2849
+ # Humidity is the humidity level of the biome.
2850
+ humidity: lf32
2851
+ # Altitude is the altitude level of the biome.
2852
+ altitude: lf32
2853
+ # Weirdness is the weirdness level of the biome.
2854
+ weirdness: lf32
2855
+ # Weight is the weight of the biome, with a higher weight being more likely to be selected.
2856
+ weight: lf32
2857
+
2858
+ # BiomeWeight defines the weight for a biome, used for weighted randomness.
2859
+ BiomeWeight:
2860
+ # Biome is the index of the biome name in the string list.
2861
+ biome: li16
2862
+ # Weight is the weight of the biome, with a higher weight being more likely to be selected.
2863
+ weight: lu32
2864
+
2865
+ # BiomeTemperatureWeight defines the weight for a temperature, used for weighted randomness.
2866
+ BiomeTemperatureWeight:
2867
+ # Temperature is the temperature that can be selected.
2868
+ temperature: zigzag32
2869
+ # Weight is the weight of the temperature, with a higher weight being more likely to be selected.
2870
+ weight: lu32
2871
+
2872
+ # BiomeConsolidatedFeature represents a feature that is consolidated into a single feature for the biome.
2873
+ BiomeConsolidatedFeature:
2874
+ # Scatter defines how the feature is scattered in the biome.
2875
+ scatter: BiomeScatterParameter
2876
+ # Feature is the index of the feature's name in the string list.
2877
+ feature: li16
2878
+ # Identifier is the index of the feature's identifier in the string list.
2879
+ identifier: li16
2880
+ # Pass is the index of the feature's pass in the string list.
2881
+ pass: li16
2882
+ # CanUseInternal is true if the feature can use internal features.
2883
+ can_use_internal: bool
2884
+
2885
+ BiomeScatterParameter:
2886
+ # Coordinates is a list of coordinate rules to scatter the feature within.
2887
+ coordinates: BiomeCoordinate[]varint
2888
+ # EvaluationOrder is the order in which the coordinates are evaluated.
2889
+ evaluation_order: zigzag32 => # BiomeCoordinateEvaluationOrder
2890
+ 0: xyz
2891
+ 1: xzy
2892
+ 2: yxz
2893
+ 3: yzx
2894
+ 4: zxy
2895
+ 5: zyx
2896
+ # ChancePercentType is the type of expression operation to use for the chance percent.
2897
+ chance_percent_type: zigzag32 # BiomeExpressionOp
2898
+ # ChancePercent is the index of the chance expression in the string list.
2899
+ chance_percent: li16
2900
+ # ChanceNumerator is the numerator of the chance expression.
2901
+ chance_numerator: li32
2902
+ # ChanceDenominator is the denominator of the chance expression.
2903
+ chance_denominator: li32
2904
+ # IterationsType is the type of expression operation to use for the iterations.
2905
+ iterations_type: zigzag32 # BiomeExpressionOp
2906
+ # Iterations is the index of the iterations expression in the string list.
2907
+ iterations: li16
2908
+
2909
+ # BiomeCoordinate specifies coordinate rules for where features can be scattered in the biome.
2910
+ BiomeCoordinate:
2911
+ # MinValueType is the type of expression operation to use for the minimum value.
2912
+ min_value_type: zigzag32 # BiomeExpressionOp
2913
+ # MinValue is the index of the minimum value expression in the string list.
2914
+ min_value: li16
2915
+ # MaxValueType is the type of expression operation to use for the maximum value.
2916
+ max_value_type: zigzag32 # BiomeExpressionOp
2917
+ # MaxValue is the index of the maximum value expression in the string list.
2918
+ max_value: li16
2919
+ # GridOffset is the offset of the grid, used for fixed grid and jittered grid distributions.
2920
+ grid_offset: lu32
2921
+ # GridStepSize is the step size of the grid, used for fixed grid and jittered grid distributions.
2922
+ grid_step_size: lu32
2923
+ # Distribution is the type of distribution to use for the coordinate.
2924
+ distribution: zigzag32 => # BiomeRandomDistributionType
2925
+ 0: single_valued
2926
+ 1: uniform
2927
+ 2: gaussian
2928
+ 3: inverse_gaussian
2929
+ 4: fixed_grid
2930
+ 5: jittered_grid
2931
+ 6: triangle
2932
+
2933
+ # BiomeElementData are set rules to adjust the surface materials of the biome.
2934
+ BiomeElementData:
2935
+ # NoiseFrequencyScale is the frequency scale of the noise used to adjust the surface materials.
2936
+ noise_frequency_scale: lf32
2937
+ # NoiseLowerBound is the minimum noise value required to be selected.
2938
+ noise_lower_bound: lf32
2939
+ # NoiseUpperBound is the maximum noise value required to be selected.
2940
+ noise_upper_bound: lf32
2941
+ # HeightMinType is the type of expression operation to use for the minimum height.
2942
+ height_min_type: zigzag32 # BiomeExpressionOp
2943
+ # HeightMin is the index of the minimum height expression in the string list.
2944
+ height_min: li16
2945
+ # HeightMaxType is the type of expression operation to use for the maximum height.
2946
+ height_max_type: zigzag32 # BiomeExpressionOp
2947
+ # HeightMax is the index of the maximum height expression in the string list.
2948
+ height_max: li16
2949
+ # AdjustedMaterials is the materials to use for the surface layers of the biome if selected.
2950
+ adjusted_materials: BiomeSurfaceMaterial
2951
+
2952
+ # BiomeOverworldRules specifies a list of transformation rules to apply to different parts of the overworld.
2953
+ BiomeOverworldRules:
2954
+ # HillsTransformations is a list of weighted biome transformations to apply to hills.
2955
+ hills_transformations: BiomeWeight[]varint
2956
+ # MutateTransformations is a list of weighted biome transformations to apply to mutated biomes.
2957
+ mutate_transformations: BiomeWeight[]varint
2958
+ # RiverTransformations is a list of weighted biome transformations to apply to rivers.
2959
+ river_transformations: BiomeWeight[]varint
2960
+ # ShoreTransformations is a list of weighted biome transformations to apply to shores.
2961
+ shore_transformations: BiomeWeight[]varint
2962
+ # PreHillsEdgeTransformations is a list of conditional transformations to apply to the edges of hills.
2963
+ pre_hills_edge_transformations: BiomeConditionalTransformation[]varint
2964
+ # PostShoreEdgeTransformations is a list of conditional transformations to apply to the edges of shores.
2965
+ post_shore_edge_transformations: BiomeConditionalTransformation[]varint
2966
+ # ClimateTransformations is a list of weighted temperature transformations to apply to the biome's climate.
2967
+ climate_transformations: BiomeTemperatureWeight[]varint
2968
+
2969
+ # BiomeConditionalTransformation is the legacy method of transforming biomes.
2970
+ BiomeConditionalTransformation:
2971
+ # WeightedBiomes is a list of biomes and their weights.
2972
+ weighted_biomes: BiomeWeight[]varint
2973
+ # ConditionJSON is an index of the condition JSON data in the string list.
2974
+ condition_json: li16
2975
+ # MinPassingNeighbours is the minimum number of neighbours that must pass the condition for the
2976
+ # transformation to be applied.
2977
+ min_passing_neighbours: lu32
2978
+
2979
+ # BiomeReplacementData represents data for biome replacements.
2980
+ BiomeReplacementData:
2981
+ # Biome is the biome ID to replace.
2982
+ biome: li16
2983
+ # Dimension is the dimension ID where the replacement applies.
2984
+ dimension: li16
2985
+ # TargetBiomes is a list of target biome IDs for the replacement.
2986
+ target_biomes: li16[]varint
2987
+ # Amount is the amount of replacement to apply.
2988
+ amount: lf32
2989
+ # NoiseFrequencyScale is the noise frequency scale to use for replacement selection.
2990
+ noise_frequency_scale: lf32
2991
+ # ReplacementIndex is the index of the replacement.
2992
+ replacement_index: lu32
2993
+
2994
+ EaseType: u8 =>
2995
+ - Linear
2996
+ - Spring
2997
+ - InQuad
2998
+ - OutQuad
2999
+ - InOutQuad
3000
+ - InCubic
3001
+ - OutCubic
3002
+ - InOutCubic
3003
+ - InQuart
3004
+ - OutQuart
3005
+ - InOutQuart
3006
+ - InQuint
3007
+ - OutQuint
3008
+ - InOutQuint
3009
+ - InSine
3010
+ - OutSine
3011
+ - InOutSine
3012
+ - InExpo
3013
+ - OutExpo
3014
+ - InOutExpo
3015
+ - InCirc
3016
+ - OutCirc
3017
+ - InOutCirc
3018
+ - InBounce
3019
+ - OutBounce
3020
+ - InOutBounce
3021
+ - InBack
3022
+ - OutBack
3023
+ - InOutBack
3024
+ - InElastic
3025
+ - OutElastic
3026
+ - InOutElastic
3027
+
3028
+ CameraSplineEaseType: u8 =>
3029
+ - catmull_rom
3030
+ - linear
3031
+
3032
+ ParameterKeyframeValue:
3033
+ # Time is the time of the keyframe.
3034
+ time: lf32
3035
+ # Value is the value at the keyframe.
3036
+ value: vec3f
3037
+
3038
+ GraphicsOverrideParameterType: u8 =>
3039
+ - sky_zenith_color
3040
+ - sky_horizon_color
3041
+ - horizon_blend_min
3042
+ - horizon_blend_max
3043
+ - horizon_blend_start
3044
+ - horizon_blend_mie_start
3045
+ - rayleigh_strength
3046
+ - sun_mie_strength
3047
+ - moon_mie_strength
3048
+ - sun_glare_shape
3049
+ - chlorophyll
3050
+ - cdom
3051
+ - suspended_sediment
3052
+ - waves_depth
3053
+ - waves_frequency
3054
+ - waves_frequency_scaling
3055
+ - waves_speed
3056
+ - waves_speed_scaling
3057
+ - waves_shape
3058
+ - waves_octaves
3059
+ - waves_mix
3060
+ - waves_pull
3061
+ - waves_direction_increment
3062
+ - midtones_contrast
3063
+ - highlights_contrast
3064
+ - shadows_contrast
3065
+
3066
+ DebugMarkerData:
3067
+ text: string
3068
+ position: vec3f
3069
+ color: lu32
3070
+ duration: lu64