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