minecraft-data 3.9.0 → 3.10.2

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