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