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