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