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