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