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