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