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