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