minecraft-data 3.100.0 → 3.102.0

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