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