minecraft-data 3.104.0 → 3.105.1

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 (231) hide show
  1. package/.github/workflows/commands.yml +24 -0
  2. package/.github/workflows/npm-publish.yml +6 -4
  3. package/data.js +28 -1
  4. package/doc/history.md +8 -0
  5. package/index.d.ts +3 -3
  6. package/minecraft-data/data/bedrock/1.16.220/protocol.json +36 -1
  7. package/minecraft-data/data/bedrock/1.16.220/types.yml +5 -30
  8. package/minecraft-data/data/bedrock/1.17.0/protocol.json +36 -1
  9. package/minecraft-data/data/bedrock/1.17.0/types.yml +5 -30
  10. package/minecraft-data/data/bedrock/1.17.10/protocol.json +36 -1
  11. package/minecraft-data/data/bedrock/1.17.10/types.yml +5 -30
  12. package/minecraft-data/data/bedrock/1.17.30/protocol.json +36 -1
  13. package/minecraft-data/data/bedrock/1.17.30/types.yml +5 -30
  14. package/minecraft-data/data/bedrock/1.17.40/protocol.json +36 -1
  15. package/minecraft-data/data/bedrock/1.17.40/types.yml +5 -30
  16. package/minecraft-data/data/bedrock/1.18.0/protocol.json +36 -1
  17. package/minecraft-data/data/bedrock/1.18.0/types.yml +5 -30
  18. package/minecraft-data/data/bedrock/1.18.11/protocol.json +36 -1
  19. package/minecraft-data/data/bedrock/1.18.11/types.yml +5 -30
  20. package/minecraft-data/data/bedrock/1.18.30/protocol.json +36 -1
  21. package/minecraft-data/data/bedrock/1.18.30/types.yml +5 -30
  22. package/minecraft-data/data/bedrock/1.19.1/protocol.json +36 -1
  23. package/minecraft-data/data/bedrock/1.19.1/types.yml +5 -30
  24. package/minecraft-data/data/bedrock/1.19.10/protocol.json +36 -1
  25. package/minecraft-data/data/bedrock/1.19.10/types.yml +5 -30
  26. package/minecraft-data/data/bedrock/1.19.20/protocol.json +36 -1
  27. package/minecraft-data/data/bedrock/1.19.20/types.yml +5 -30
  28. package/minecraft-data/data/bedrock/1.19.21/protocol.json +36 -1
  29. package/minecraft-data/data/bedrock/1.19.21/types.yml +5 -30
  30. package/minecraft-data/data/bedrock/1.19.30/protocol.json +36 -1
  31. package/minecraft-data/data/bedrock/1.19.30/types.yml +5 -30
  32. package/minecraft-data/data/bedrock/1.19.40/protocol.json +36 -1
  33. package/minecraft-data/data/bedrock/1.19.40/types.yml +5 -30
  34. package/minecraft-data/data/bedrock/1.19.50/protocol.json +36 -1
  35. package/minecraft-data/data/bedrock/1.19.50/types.yml +5 -30
  36. package/minecraft-data/data/bedrock/1.19.60/protocol.json +36 -1
  37. package/minecraft-data/data/bedrock/1.19.60/types.yml +5 -30
  38. package/minecraft-data/data/bedrock/1.19.62/protocol.json +36 -1
  39. package/minecraft-data/data/bedrock/1.19.62/types.yml +5 -30
  40. package/minecraft-data/data/bedrock/1.19.70/protocol.json +36 -1
  41. package/minecraft-data/data/bedrock/1.19.70/types.yml +5 -30
  42. package/minecraft-data/data/bedrock/1.19.80/protocol.json +36 -1
  43. package/minecraft-data/data/bedrock/1.19.80/types.yml +5 -30
  44. package/minecraft-data/data/bedrock/1.20.0/protocol.json +36 -1
  45. package/minecraft-data/data/bedrock/1.20.0/types.yml +5 -30
  46. package/minecraft-data/data/bedrock/1.20.10/protocol.json +36 -1
  47. package/minecraft-data/data/bedrock/1.20.10/types.yml +5 -30
  48. package/minecraft-data/data/bedrock/1.20.30/protocol.json +36 -1
  49. package/minecraft-data/data/bedrock/1.20.30/types.yml +5 -30
  50. package/minecraft-data/data/bedrock/1.20.40/protocol.json +36 -1
  51. package/minecraft-data/data/bedrock/1.20.40/types.yml +5 -30
  52. package/minecraft-data/data/bedrock/1.20.50/protocol.json +36 -1
  53. package/minecraft-data/data/bedrock/1.20.50/types.yml +5 -30
  54. package/minecraft-data/data/bedrock/1.20.61/protocol.json +36 -1
  55. package/minecraft-data/data/bedrock/1.20.61/types.yml +5 -30
  56. package/minecraft-data/data/bedrock/1.20.71/protocol.json +36 -1
  57. package/minecraft-data/data/bedrock/1.20.71/types.yml +5 -30
  58. package/minecraft-data/data/bedrock/1.20.80/protocol.json +36 -1
  59. package/minecraft-data/data/bedrock/1.20.80/types.yml +5 -30
  60. package/minecraft-data/data/bedrock/1.21.0/protocol.json +36 -1
  61. package/minecraft-data/data/bedrock/1.21.0/types.yml +5 -30
  62. package/minecraft-data/data/bedrock/1.21.100/protocol.json +36 -1
  63. package/minecraft-data/data/bedrock/1.21.100/types.yml +5 -30
  64. package/minecraft-data/data/bedrock/1.21.111/protocol.json +36 -1
  65. package/minecraft-data/data/bedrock/1.21.111/types.yml +5 -30
  66. package/minecraft-data/data/bedrock/1.21.120/protocol.json +36 -1
  67. package/minecraft-data/data/bedrock/1.21.120/types.yml +5 -30
  68. package/minecraft-data/data/bedrock/1.21.124/protocol.json +36 -1
  69. package/minecraft-data/data/bedrock/1.21.124/types.yml +5 -30
  70. package/minecraft-data/data/bedrock/1.21.130/protocol.json +36 -1
  71. package/minecraft-data/data/bedrock/1.21.130/types.yml +5 -30
  72. package/minecraft-data/data/bedrock/1.21.2/protocol.json +36 -1
  73. package/minecraft-data/data/bedrock/1.21.2/types.yml +5 -30
  74. package/minecraft-data/data/bedrock/1.21.20/protocol.json +36 -1
  75. package/minecraft-data/data/bedrock/1.21.20/types.yml +5 -30
  76. package/minecraft-data/data/bedrock/1.21.30/protocol.json +36 -1
  77. package/minecraft-data/data/bedrock/1.21.30/types.yml +5 -30
  78. package/minecraft-data/data/bedrock/1.21.42/protocol.json +36 -1
  79. package/minecraft-data/data/bedrock/1.21.42/types.yml +5 -30
  80. package/minecraft-data/data/bedrock/1.21.50/protocol.json +36 -1
  81. package/minecraft-data/data/bedrock/1.21.50/types.yml +5 -30
  82. package/minecraft-data/data/bedrock/1.21.60/protocol.json +36 -1
  83. package/minecraft-data/data/bedrock/1.21.60/types.yml +5 -30
  84. package/minecraft-data/data/bedrock/1.21.70/protocol.json +36 -1
  85. package/minecraft-data/data/bedrock/1.21.70/types.yml +5 -30
  86. package/minecraft-data/data/bedrock/1.21.80/protocol.json +36 -1
  87. package/minecraft-data/data/bedrock/1.21.80/types.yml +5 -30
  88. package/minecraft-data/data/bedrock/1.21.90/protocol.json +36 -1
  89. package/minecraft-data/data/bedrock/1.21.90/types.yml +5 -30
  90. package/minecraft-data/data/bedrock/1.21.93/protocol.json +36 -1
  91. package/minecraft-data/data/bedrock/1.21.93/types.yml +5 -30
  92. package/minecraft-data/data/bedrock/1.26.0/protocol.json +36 -1
  93. package/minecraft-data/data/bedrock/latest/types.yml +5 -30
  94. package/minecraft-data/data/dataPaths.json +28 -1
  95. package/minecraft-data/data/pc/1.10/proto.yml +7 -9
  96. package/minecraft-data/data/pc/1.10/protocol.json +23 -30
  97. package/minecraft-data/data/pc/1.10-pre1/proto.yml +7 -9
  98. package/minecraft-data/data/pc/1.10-pre1/protocol.json +23 -30
  99. package/minecraft-data/data/pc/1.11/proto.yml +7 -9
  100. package/minecraft-data/data/pc/1.11/protocol.json +23 -30
  101. package/minecraft-data/data/pc/1.12/proto.yml +7 -9
  102. package/minecraft-data/data/pc/1.12/protocol.json +23 -30
  103. package/minecraft-data/data/pc/1.12-pre4/proto.yml +7 -9
  104. package/minecraft-data/data/pc/1.12-pre4/protocol.json +23 -30
  105. package/minecraft-data/data/pc/1.12.1/proto.yml +7 -9
  106. package/minecraft-data/data/pc/1.12.1/protocol.json +23 -30
  107. package/minecraft-data/data/pc/1.12.2/proto.yml +7 -9
  108. package/minecraft-data/data/pc/1.12.2/protocol.json +23 -30
  109. package/minecraft-data/data/pc/1.13/proto.yml +7 -9
  110. package/minecraft-data/data/pc/1.13/protocol.json +23 -30
  111. package/minecraft-data/data/pc/1.13.1/proto.yml +7 -9
  112. package/minecraft-data/data/pc/1.13.1/protocol.json +23 -30
  113. package/minecraft-data/data/pc/1.13.2/proto.yml +7 -9
  114. package/minecraft-data/data/pc/1.13.2/protocol.json +23 -30
  115. package/minecraft-data/data/pc/1.13.2-pre1/proto.yml +7 -9
  116. package/minecraft-data/data/pc/1.13.2-pre1/protocol.json +23 -30
  117. package/minecraft-data/data/pc/1.13.2-pre2/proto.yml +7 -9
  118. package/minecraft-data/data/pc/1.13.2-pre2/protocol.json +23 -30
  119. package/minecraft-data/data/pc/1.14/proto.yml +7 -9
  120. package/minecraft-data/data/pc/1.14/protocol.json +23 -30
  121. package/minecraft-data/data/pc/1.14.1/proto.yml +7 -9
  122. package/minecraft-data/data/pc/1.14.1/protocol.json +23 -30
  123. package/minecraft-data/data/pc/1.14.3/proto.yml +7 -9
  124. package/minecraft-data/data/pc/1.14.3/protocol.json +23 -30
  125. package/minecraft-data/data/pc/1.14.4/proto.yml +7 -9
  126. package/minecraft-data/data/pc/1.14.4/protocol.json +23 -30
  127. package/minecraft-data/data/pc/1.15/proto.yml +7 -9
  128. package/minecraft-data/data/pc/1.15/protocol.json +23 -30
  129. package/minecraft-data/data/pc/1.15.1/proto.yml +7 -9
  130. package/minecraft-data/data/pc/1.15.1/protocol.json +23 -30
  131. package/minecraft-data/data/pc/1.15.2/proto.yml +7 -9
  132. package/minecraft-data/data/pc/1.15.2/protocol.json +23 -30
  133. package/minecraft-data/data/pc/1.16/proto.yml +7 -9
  134. package/minecraft-data/data/pc/1.16/protocol.json +23 -30
  135. package/minecraft-data/data/pc/1.16-rc1/proto.yml +7 -9
  136. package/minecraft-data/data/pc/1.16-rc1/protocol.json +23 -30
  137. package/minecraft-data/data/pc/1.16.1/proto.yml +7 -9
  138. package/minecraft-data/data/pc/1.16.1/protocol.json +23 -30
  139. package/minecraft-data/data/pc/1.16.2/proto.yml +7 -9
  140. package/minecraft-data/data/pc/1.16.2/protocol.json +23 -30
  141. package/minecraft-data/data/pc/1.17/proto.yml +7 -9
  142. package/minecraft-data/data/pc/1.17/protocol.json +23 -30
  143. package/minecraft-data/data/pc/1.17.1/proto.yml +7 -9
  144. package/minecraft-data/data/pc/1.17.1/protocol.json +23 -30
  145. package/minecraft-data/data/pc/1.18/proto.yml +7 -9
  146. package/minecraft-data/data/pc/1.18/protocol.json +23 -30
  147. package/minecraft-data/data/pc/1.18.2/proto.yml +7 -9
  148. package/minecraft-data/data/pc/1.18.2/protocol.json +23 -30
  149. package/minecraft-data/data/pc/1.19/proto.yml +6 -6
  150. package/minecraft-data/data/pc/1.19/protocol.json +21 -20
  151. package/minecraft-data/data/pc/1.19.2/proto.yml +6 -6
  152. package/minecraft-data/data/pc/1.19.2/protocol.json +21 -20
  153. package/minecraft-data/data/pc/1.19.3/proto.yml +6 -6
  154. package/minecraft-data/data/pc/1.19.3/protocol.json +21 -20
  155. package/minecraft-data/data/pc/1.19.4/proto.yml +6 -6
  156. package/minecraft-data/data/pc/1.19.4/protocol.json +21 -20
  157. package/minecraft-data/data/pc/1.20/proto.yml +6 -6
  158. package/minecraft-data/data/pc/1.20/protocol.json +21 -20
  159. package/minecraft-data/data/pc/1.20.2/proto.yml +6 -6
  160. package/minecraft-data/data/pc/1.20.2/protocol.json +21 -20
  161. package/minecraft-data/data/pc/1.20.3/proto.yml +6 -6
  162. package/minecraft-data/data/pc/1.20.3/protocol.json +21 -20
  163. package/minecraft-data/data/pc/1.20.5/proto.yml +6 -6
  164. package/minecraft-data/data/pc/1.20.5/protocol.json +21 -20
  165. package/minecraft-data/data/pc/1.21.1/proto.yml +6 -6
  166. package/minecraft-data/data/pc/1.21.1/protocol.json +21 -20
  167. package/minecraft-data/data/pc/1.21.11/attributes.json +247 -0
  168. package/minecraft-data/data/pc/1.21.11/biomes.json +652 -0
  169. package/minecraft-data/data/pc/1.21.11/blockCollisionShapes.json +146215 -0
  170. package/minecraft-data/data/pc/1.21.11/blocks.json +44682 -0
  171. package/minecraft-data/data/pc/1.21.11/effects.json +242 -0
  172. package/minecraft-data/data/pc/1.21.11/enchantments.json +980 -0
  173. package/minecraft-data/data/pc/1.21.11/entities.json +4363 -0
  174. package/minecraft-data/data/pc/1.21.11/foods.json +442 -0
  175. package/minecraft-data/data/pc/1.21.11/instruments.json +94 -0
  176. package/minecraft-data/data/pc/1.21.11/items.json +10026 -0
  177. package/minecraft-data/data/pc/1.21.11/language.json +7769 -0
  178. package/minecraft-data/data/pc/1.21.11/loginPacket.json +19819 -0
  179. package/minecraft-data/data/pc/1.21.11/materials.json +233 -0
  180. package/minecraft-data/data/pc/1.21.11/particles.json +462 -0
  181. package/minecraft-data/data/pc/1.21.11/protocol.json +11696 -0
  182. package/minecraft-data/data/pc/1.21.11/recipes.json +31864 -0
  183. package/minecraft-data/data/pc/1.21.11/sounds.json +7354 -0
  184. package/minecraft-data/data/pc/1.21.11/tints.json +465 -0
  185. package/minecraft-data/data/pc/1.21.11/version.json +6 -0
  186. package/minecraft-data/data/pc/1.21.3/proto.yml +6 -6
  187. package/minecraft-data/data/pc/1.21.3/protocol.json +21 -20
  188. package/minecraft-data/data/pc/1.21.4/proto.yml +6 -6
  189. package/minecraft-data/data/pc/1.21.4/protocol.json +21 -20
  190. package/minecraft-data/data/pc/1.21.5/proto.yml +6 -6
  191. package/minecraft-data/data/pc/1.21.5/protocol.json +21 -20
  192. package/minecraft-data/data/pc/1.21.6/proto.yml +6 -6
  193. package/minecraft-data/data/pc/1.21.6/protocol.json +21 -20
  194. package/minecraft-data/data/pc/1.21.8/proto.yml +6 -6
  195. package/minecraft-data/data/pc/1.21.8/protocol.json +21 -20
  196. package/minecraft-data/data/pc/1.21.9/proto.yml +3771 -0
  197. package/minecraft-data/data/pc/1.7/proto.yml +6 -6
  198. package/minecraft-data/data/pc/1.7/protocol.json +21 -20
  199. package/minecraft-data/data/pc/1.8/proto.yml +9 -12
  200. package/minecraft-data/data/pc/1.8/protocol.json +25 -40
  201. package/minecraft-data/data/pc/1.9/proto.yml +7 -9
  202. package/minecraft-data/data/pc/1.9/protocol.json +23 -30
  203. package/minecraft-data/data/pc/1.9.1-pre2/proto.yml +7 -9
  204. package/minecraft-data/data/pc/1.9.1-pre2/protocol.json +23 -30
  205. package/minecraft-data/data/pc/1.9.2/proto.yml +7 -9
  206. package/minecraft-data/data/pc/1.9.2/protocol.json +23 -30
  207. package/minecraft-data/data/pc/1.9.4/proto.yml +7 -9
  208. package/minecraft-data/data/pc/1.9.4/protocol.json +23 -30
  209. package/minecraft-data/data/pc/15w40b/proto.yml +7 -9
  210. package/minecraft-data/data/pc/15w40b/protocol.json +23 -30
  211. package/minecraft-data/data/pc/16w20a/proto.yml +7 -9
  212. package/minecraft-data/data/pc/16w20a/protocol.json +23 -30
  213. package/minecraft-data/data/pc/16w35a/proto.yml +7 -9
  214. package/minecraft-data/data/pc/16w35a/protocol.json +23 -30
  215. package/minecraft-data/data/pc/17w15a/proto.yml +7 -9
  216. package/minecraft-data/data/pc/17w15a/protocol.json +23 -30
  217. package/minecraft-data/data/pc/17w18b/proto.yml +7 -9
  218. package/minecraft-data/data/pc/17w18b/protocol.json +23 -30
  219. package/minecraft-data/data/pc/17w50a/proto.yml +7 -9
  220. package/minecraft-data/data/pc/17w50a/protocol.json +23 -30
  221. package/minecraft-data/data/pc/20w13b/proto.yml +7 -9
  222. package/minecraft-data/data/pc/20w13b/protocol.json +23 -30
  223. package/minecraft-data/data/pc/21w07a/proto.yml +7 -9
  224. package/minecraft-data/data/pc/21w07a/protocol.json +23 -30
  225. package/minecraft-data/data/pc/common/features.json +5 -5
  226. package/minecraft-data/data/pc/common/protocolVersions.json +96 -0
  227. package/minecraft-data/data/pc/common/versions.json +2 -1
  228. package/minecraft-data/data/pc/latest/proto.yml +79 -3
  229. package/minecraft-data/doc/history.md +9 -0
  230. package/minecraft-data/tools/js/compileProtocol.js +8 -2
  231. package/package.json +2 -2
@@ -0,0 +1,3771 @@
1
+ !version: 1.21.9
2
+ !StartDocs: true
3
+
4
+ ^types:
5
+ varint: native
6
+ varlong: native
7
+ optvarint: varint
8
+ pstring: native
9
+ buffer: native
10
+ u8: native
11
+ u16: native
12
+ u32: native
13
+ u64: native
14
+ i8: native
15
+ i16: native
16
+ i32: native
17
+ i64: native
18
+ bool: native
19
+ f32: native
20
+ f64: native
21
+ UUID: native
22
+ option: native
23
+ entityMetadataLoop: native
24
+ topBitSetTerminatedArray: native
25
+ bitfield: native
26
+ bitflags: native
27
+ container: native
28
+ switch: native
29
+ void: native
30
+ array: native
31
+ restBuffer: native
32
+ anonymousNbt: native
33
+ anonOptionalNbt: native
34
+ registryEntryHolder: native
35
+ registryEntryHolderSet: native
36
+ lpVec3: native
37
+ ByteArray: ["buffer", { "countType": "varint" }]
38
+ string: ["pstring", { "countType": "varint" }]
39
+ vec2f:
40
+ x: f32
41
+ y: f32
42
+ vec3f:
43
+ x: f32
44
+ y: f32
45
+ z: f32
46
+ vec4f:
47
+ x: f32
48
+ y: f32
49
+ z: f32
50
+ w: f32
51
+ vec3f64:
52
+ x: f64
53
+ y: f64
54
+ z: f64
55
+ vec3i:
56
+ x: varint
57
+ y: varint
58
+ z: varint
59
+ vec3i32:
60
+ x: i32
61
+ y: i32
62
+ z: i32
63
+ IDSet: ["registryEntryHolderSet", {
64
+ "base": { name: "name", type: "string" },
65
+ "otherwise": { name: "ids", type: "varint" }
66
+ }]
67
+ ContainerID: varint
68
+ SlotComponentType: varint =>
69
+ - custom_data
70
+ - max_stack_size
71
+ - max_damage
72
+ - damage
73
+ - unbreakable
74
+ - custom_name
75
+ - item_name
76
+ - item_model
77
+ - lore
78
+ - rarity
79
+ - enchantments
80
+ - can_place_on
81
+ - can_break
82
+ - attribute_modifiers
83
+ - custom_model_data
84
+ - tooltip_display
85
+ - repair_cost
86
+ - creative_slot_lock
87
+ - enchantment_glint_override
88
+ - intangible_projectile
89
+ - food
90
+ - consumable
91
+ - use_remainder
92
+ - use_cooldown
93
+ - damage_resistant
94
+ - tool
95
+ - weapon
96
+ - enchantable
97
+ - equippable
98
+ - repairable
99
+ - glider
100
+ - tooltip_style
101
+ - death_protection
102
+ - blocks_attacks
103
+ - stored_enchantments
104
+ - dyed_color
105
+ - map_color
106
+ - map_id
107
+ - map_decorations
108
+ - map_post_processing
109
+ - potion_duration_scale
110
+ - charged_projectiles
111
+ - bundle_contents
112
+ - potion_contents
113
+ - suspicious_stew_effects
114
+ - writable_book_content
115
+ - written_book_content
116
+ - trim
117
+ - debug_stick_state
118
+ - entity_data
119
+ - bucket_entity_data
120
+ - block_entity_data
121
+ - instrument
122
+ - provides_trim_material
123
+ - ominous_bottle_amplifier
124
+ - jukebox_playable
125
+ - provides_banner_patterns
126
+ - recipes
127
+ - lodestone_tracker
128
+ - firework_explosion
129
+ - fireworks
130
+ - profile
131
+ - note_block_sound
132
+ - banner_patterns
133
+ - base_color
134
+ - pot_decorations
135
+ - container
136
+ - block_state
137
+ - bees
138
+ - lock
139
+ - container_loot
140
+ - break_sound
141
+ - villager/variant
142
+ - wolf/variant
143
+ - wolf/sound_variant
144
+ - wolf/collar
145
+ - fox/variant
146
+ - salmon/size
147
+ - parrot/variant
148
+ - tropical_fish/pattern
149
+ - tropical_fish/base_color
150
+ - tropical_fish/pattern_color
151
+ - mooshroom/variant
152
+ - rabbit/variant
153
+ - pig/variant
154
+ - cow/variant
155
+ - chicken/variant
156
+ - frog/variant
157
+ - horse/variant
158
+ - painting/variant
159
+ - llama/variant
160
+ - axolotl/variant
161
+ - cat/variant
162
+ - cat/collar
163
+ - sheep/color
164
+ - shulker/color
165
+
166
+ # Instead of sending NBT for items over the network, Minecraft since 1.20.5 sends a
167
+ # list of components that make up the item. This saves bandwidth by not encoding tag names.
168
+ SlotComponent:
169
+ type: SlotComponentType
170
+ ## Ref: client/net/minecraft/core/component/DataComponents.java
171
+ data: type ?
172
+ ## 'Unit' MC type is functionally void
173
+ if custom_data: anonymousNbt
174
+ if max_stack_size: varint
175
+ if max_damage: varint
176
+ if damage: varint
177
+ if unbreakable: void
178
+ if custom_name: anonymousNbt
179
+ if item_name: anonymousNbt
180
+ if item_model: string
181
+ if lore: anonymousNbt[]varint
182
+ if rarity: varint =>
183
+ - common
184
+ - uncommon
185
+ - rare
186
+ - epic
187
+ if enchantments or stored_enchantments:
188
+ enchantments: []varint
189
+ id: varint
190
+ level: varint
191
+ if can_place_on or can_break:
192
+ predicates: ItemBlockPredicate[]varint
193
+ if attribute_modifiers:
194
+ attributes: []varint
195
+ typeId: varint
196
+ name: string
197
+ value: f64
198
+ operation: varint =>
199
+ - add
200
+ - multiply_base
201
+ - multiply_total
202
+ slot: varint =>
203
+ - any
204
+ - main_hand
205
+ - off_hand
206
+ - hand
207
+ - feet
208
+ - legs
209
+ - chest
210
+ - head
211
+ - armor
212
+ - body
213
+ - saddle
214
+ display:
215
+ type: varint =>
216
+ - default
217
+ - hidden
218
+ - override
219
+ component: type ?
220
+ if override: anonymousNbt
221
+ if custom_model_data:
222
+ floats: f32[]varint
223
+ flags: bool[]varint
224
+ strings: string[]varint
225
+ colors: i32[]varint
226
+ if tooltip_display:
227
+ hideTooltip: bool
228
+ hiddenComponents: varint[]varint
229
+ if repair_cost: varint
230
+ if creative_slot_lock: void
231
+ if enchantment_glint_override: bool
232
+ if intangible_projectile: void
233
+ if blocks_attacks:
234
+ blockDelaySeconds: f32
235
+ disableCooldownScale: f32
236
+ damageReductions: []varint
237
+ horizontalBlockingAngle: f32
238
+ type?: IDSet
239
+ base: f32
240
+ factor: f32
241
+ itemDamage:
242
+ threshold: f32
243
+ base: f32
244
+ factor: f32
245
+ bypassedBy?: string
246
+ blockSound?: ItemSoundHolder
247
+ disableSound?: ItemSoundHolder
248
+ if food:
249
+ nutrition: varint
250
+ # How much saturation will be given after consuming the item.
251
+ saturationModifier: f32
252
+ # Whether the item can always be eaten, even at full hunger.
253
+ canAlwaysEat: bool
254
+ if consumable:
255
+ consume_seconds: f32
256
+ animation: varint =>
257
+ - none
258
+ - eat
259
+ - drink
260
+ - block
261
+ - bow
262
+ - spear
263
+ - crossbow
264
+ - spyglass
265
+ - toot_horn
266
+ - brush
267
+ - bundle
268
+ sound: ItemSoundHolder
269
+ makes_particles: bool
270
+ effects: ItemConsumeEffect[]varint
271
+ if use_remainder: Slot
272
+ if use_cooldown:
273
+ seconds: f32
274
+ cooldownGroup?: string
275
+ if damage_resistant: string
276
+ if tool:
277
+ rules: []varint
278
+ blocks: IDSet
279
+ # The speed at which the tool breaks this rules' blocks.
280
+ speed?: f32
281
+ # Whether items should drop only if this is the correct tool.
282
+ correctDropForBlocks?: bool
283
+ # The mining speed in case none of the previous rule were matched.
284
+ defaultMiningSpeed: f32
285
+ damagePerBlock: varint
286
+ canDestroyBlocksInCreative: bool
287
+ if weapon:
288
+ itemDamagePerAttack: varint
289
+ disableBlockingForSeconds: f32
290
+ # Enchantment cost up to which the item can be enchanted
291
+ if enchantable: varint
292
+ if equippable:
293
+ slot: varint =>
294
+ - main_hand
295
+ - off_hand
296
+ - feet
297
+ - legs
298
+ - chest
299
+ - head
300
+ - body
301
+ - saddle
302
+ sound: ItemSoundHolder
303
+ model?: string
304
+ cameraOverlay?: string
305
+ allowedEntities?: IDSet
306
+ dispensable: bool
307
+ swappable: bool
308
+ damageable: bool
309
+ equipOnInteract: bool
310
+ shearable: bool
311
+ shearingSound: ItemSoundHolder
312
+ if repairable:
313
+ items: IDSet
314
+ if glider: void
315
+ if tooltip_style: string
316
+ if death_protection:
317
+ effects: ItemConsumeEffect[]varint
318
+ if dyed_color: i32
319
+ if map_color: i32
320
+ if map_id: varint
321
+ if map_decorations: anonymousNbt
322
+ if map_post_processing: varint
323
+ if potion_duration_scale: f32
324
+ if charged_projectiles:
325
+ projectiles: Slot[]varint
326
+ if bundle_contents:
327
+ contents: Slot[]varint
328
+ if potion_contents:
329
+ # True if this potion has an ID in the potion registry--it has the default effects associated with the potion type.
330
+ potionId?: varint
331
+ # The RGB components of the color, encoded as an integer.
332
+ customColor?: i32
333
+ customEffects: ItemPotionEffect[]varint
334
+ customName?: string
335
+ if suspicious_stew_effects:
336
+ effects: []varint
337
+ # The ID of the effect in the potion effect type registry.
338
+ effect: varint
339
+ # The duration of the effect.
340
+ duration: varint
341
+ if writable_book_content:
342
+ # Max 100 pages
343
+ pages: ItemBookPage[]varint
344
+ if written_book_content:
345
+ rawTitle: string
346
+ filteredTitle?: string
347
+ author: string
348
+ generation: varint
349
+ pages: ItemWrittenBookPage[]varint
350
+ resolved: bool
351
+ if trim:
352
+ material: ["registryEntryHolder", { "baseName": "materialId", "otherwise": { "name": "data", "type": "ArmorTrimMaterial" } }]
353
+ pattern: ["registryEntryHolder", { "baseName": "patternId", "otherwise": { "name": "data", "type": "ArmorTrimPattern" } }]
354
+ if debug_stick_state: anonymousNbt
355
+ if entity_data or block_entity_data:
356
+ type: varint
357
+ data: anonymousNbt
358
+ if bucket_entity_data: anonymousNbt
359
+ if instrument:
360
+ hasHolder: bool
361
+ data: hasHolder ?
362
+ if true: ["registryEntryHolder", { "baseName": "instrumentId", "otherwise": { "name": "data", "type": "InstrumentData" } }]
363
+ if false: string
364
+ if provides_trim_material:
365
+ hasHolder: bool
366
+ material: hasHolder ?
367
+ if true: ["registryEntryHolder", { "baseName": "materialId", "otherwise": { "name": "data", "type": "ArmorTrimMaterial" } }]
368
+ if false: string
369
+ if ominous_bottle_amplifier: varint
370
+ if jukebox_playable:
371
+ hasHolder: bool
372
+ song: hasHolder ?
373
+ if true: ["registryEntryHolder", { "baseName": "songId", "otherwise": { "name": "data", "type": "JukeboxSongData" } }]
374
+ if false: string
375
+ if provides_banner_patterns: string
376
+ if recipes: anonymousNbt
377
+ if lodestone_tracker:
378
+ # Specified if this lodestone points to a position; otherwise it spins randomly.
379
+ globalPosition?: GlobalPos
380
+ # Whether the component is removed when the associated lodestone is broken.
381
+ tracked: bool
382
+ if firework_explosion: ItemFireworkExplosion
383
+ if fireworks:
384
+ flightDuration: varint
385
+ explosions: ItemFireworkExplosion[]varint
386
+ if profile: ResolvableProfile
387
+ if note_block_sound: string
388
+ if banner_patterns:
389
+ layers: BannerPatternLayer[]varint
390
+ if base_color: varint
391
+ if pot_decorations:
392
+ # The ID of the items in the item registry.
393
+ decorations: varint[]varint
394
+ if container:
395
+ contents: Slot[]varint
396
+ if block_state:
397
+ properties: []varint
398
+ name: string
399
+ value: string
400
+ if bees:
401
+ bees: []varint
402
+ # Custom data for the entity, always a Compound Tag. Same structure as the minecraft:custom_data component.
403
+ nbtData: anonymousNbt
404
+ ticksInHive: varint
405
+ minTicksInHive: varint
406
+ if lock: anonymousNbt
407
+ if container_loot: anonymousNbt
408
+ if break_sound: ItemSoundHolder
409
+ if villager/variant: varint
410
+ if wolf/variant: varint
411
+ if wolf/sound_variant: varint
412
+ if wolf/collar: varint
413
+ if fox/variant: varint
414
+ if salmon/size: varint
415
+ if parrot/variant: varint
416
+ if tropical_fish/pattern: varint
417
+ if tropical_fish/base_color: varint
418
+ if tropical_fish/pattern_color: varint
419
+ if mooshroom/variant: varint
420
+ if rabbit/variant: varint
421
+ if pig/variant: varint
422
+ if cow/variant: varint
423
+ if chicken/variant: ["registryEntryHolder", { "baseName": "variantId", "otherwise": { "name": "variantData", "type": "string" } }]
424
+ if frog/variant: varint
425
+ if horse/variant: varint
426
+ if painting/variant: ["registryEntryHolder", { "baseName": "variantId", "otherwise": { "name": "data", "type": "EntityMetadataPaintingVariant" } }]
427
+ if llama/variant: varint
428
+ if axolotl/variant: varint
429
+ if cat/variant: varint
430
+ if cat/collar: varint
431
+ if sheep/color: varint
432
+ if shulker/color: varint
433
+
434
+ ItemSoundEvent:
435
+ soundName: string
436
+ fixedRange?: f32
437
+ ItemSoundHolder: ["registryEntryHolder", {
438
+ "baseName": "soundId",
439
+ "otherwise": { name: "data", type: "ItemSoundEvent" }
440
+ }]
441
+
442
+ ItemFireworkExplosion:
443
+ shape: varint =>
444
+ - small_ball
445
+ - large_ball
446
+ - star
447
+ - creeper
448
+ - burst
449
+ # The RGB components of the color, encoded as an integer.
450
+ colors: i32[]varint
451
+ # The RGB components of the color, encoded as an integer.
452
+ fadeColors: i32[]varint
453
+ # Whether the firework has a trail.
454
+ hasTrail: bool
455
+ # Whether the firework has a twinkle effect.
456
+ hasTwinkle: bool
457
+
458
+ ItemEffectDetail:
459
+ amplifier: varint
460
+ duration: varint
461
+ ambient: bool
462
+ showParticles: bool
463
+ showIcon: bool
464
+ hiddenEffect?: ItemEffectDetail
465
+
466
+ ItemPotionEffect:
467
+ id: varint
468
+ details: ItemEffectDetail
469
+
470
+ ItemBlockProperty:
471
+ name: string
472
+ isExactMatch: bool
473
+ value: isExactMatch ?
474
+ if true:
475
+ exactValue: string
476
+ if false:
477
+ minValue: string
478
+ maxValue: string
479
+
480
+ ExactComponentMatcher: SlotComponent[]varint
481
+
482
+ DataComponentMatchers:
483
+ exactMatchers: ExactComponentMatcher
484
+ partialMatchers: varint[]varint
485
+
486
+ ItemBlockPredicate:
487
+ blockSet?: ["registryEntryHolderSet", {
488
+ "base": { name: "name", type: "string" },
489
+ "otherwise": { name: "blockIds", "type": "varint" }
490
+ }]
491
+ properties?: ItemBlockProperty[]varint
492
+ nbt: anonOptionalNbt
493
+ components: DataComponentMatchers
494
+
495
+ ItemBookPage:
496
+ # The raw text of the page. TextComponent, max 1024 characters.
497
+ content: string
498
+ filteredContent?: string
499
+ ItemWrittenBookPage:
500
+ content: anonymousNbt
501
+ filteredContent: anonOptionalNbt
502
+
503
+ ItemConsumeEffect: # 1.21.3
504
+ type: varint =>
505
+ - apply_effects
506
+ - remove_effects
507
+ - clear_all_effects
508
+ - teleport_randomly
509
+ - play_sound
510
+ _: type ?
511
+ if apply_effects:
512
+ effects: ItemPotionEffect[]varint
513
+ probability: f32
514
+ if remove_effects:
515
+ effects: IDSet
516
+ if clear_all_effects: void
517
+ if teleport_randomly:
518
+ diameter: f32
519
+ if play_sound:
520
+ sound: ItemSoundHolder
521
+
522
+ ArmorTrimMaterial:
523
+ assetBase: string
524
+ overrideArmorAssets: []varint
525
+ key: string
526
+ value: string
527
+ description: anonymousNbt
528
+
529
+ ArmorTrimPattern:
530
+ assetId: string
531
+ description: anonymousNbt
532
+ decal: bool
533
+
534
+ InstrumentData:
535
+ soundEvent: ItemSoundHolder
536
+ useDuration: f32
537
+ range: f32
538
+ description: anonymousNbt
539
+
540
+ JukeboxSongData:
541
+ soundEvent: ItemSoundHolder
542
+ description: anonymousNbt
543
+ lengthInSeconds: f32
544
+ comparatorOutput: varint
545
+
546
+ BannerPattern:
547
+ assetId: string
548
+ translationKey: string
549
+ BannerPatternLayer:
550
+ pattern: ["registryEntryHolder", { "baseName": "patternId", "otherwise": { "name": "data", "type": "BannerPattern" } }]
551
+ colorId: varint
552
+
553
+ # This represents a single component within an UntrustedSlot.
554
+ # The 'data' field is a varint-prefixed byte array that contains the actual component data.
555
+ # The code generator will need to know that it should read a varint for length, then the bytes.
556
+ UntrustedSlotComponent:
557
+ type: SlotComponentType
558
+ data: ByteArray
559
+
560
+ # An UntrustedSlot is structurally identical to a regular Slot,
561
+ # but it uses the special UntrustedSlotComponent type for its component list.
562
+ # It's optional because the player might be clearing the slot.
563
+ UntrustedSlot:
564
+ itemCount: varint
565
+ _: itemCount ?
566
+ if 0: void
567
+ default:
568
+ itemId: varint
569
+ addedComponentCount: varint
570
+ removedComponentCount: varint
571
+ components: UntrustedSlotComponent[]$addedComponentCount
572
+ removeComponents: []$removedComponentCount
573
+ type: SlotComponentType
574
+ if false: void
575
+
576
+ Slot:
577
+ itemCount: varint
578
+ _: itemCount ?
579
+ if 0: void
580
+ default:
581
+ itemId: varint
582
+ # https://wiki.vg/Slot_Data#Structured_components
583
+ addedComponentCount: varint
584
+ removedComponentCount: varint
585
+ components: SlotComponent[]$addedComponentCount
586
+ removeComponents: []$removedComponentCount
587
+ type: SlotComponentType
588
+
589
+ HashedSlot:
590
+ itemId: varint
591
+ itemCount: varint
592
+ components: []varint
593
+ type: SlotComponentType
594
+ hash: i32
595
+ removeComponents: []varint
596
+ type: SlotComponentType
597
+
598
+ RespawnData:
599
+ globalPos: GlobalPos
600
+ yaw: f32
601
+ pitch: f32
602
+
603
+ GlobalPos:
604
+ dimensionName: string
605
+ location: position
606
+
607
+ DebugStructureInfo:
608
+ boundingBoxMin: position
609
+ boundingBoxMax: position
610
+ pieces: []varint
611
+ boundingBoxMin: position
612
+ boundingBoxMax: position
613
+ isStart: bool
614
+
615
+ Node:
616
+ position: vec3i32
617
+ walkedDistance: f32
618
+ costMalus: f32
619
+ closed: bool
620
+ type: varint =>
621
+ - blocked
622
+ - open
623
+ - walkable
624
+ - walkable_door
625
+ - trapdoor
626
+ - powder_snow
627
+ - danger_powder_snow
628
+ - fence
629
+ - lava
630
+ - water
631
+ - water_border
632
+ - rail
633
+ - unpassable_rail
634
+ - danger_fire
635
+ - damage_fire
636
+ - danger_other
637
+ - damage_other
638
+ - door_open
639
+ - door_wood_closed
640
+ - door_iron_closed
641
+ - breach
642
+ - leaves
643
+ - sticky_honey
644
+ - cocoa
645
+ - damage_cautious
646
+ - danger_trapdoor
647
+ f: f32
648
+
649
+ PathDebugData:
650
+ openSet: Node[]varint
651
+ closedSet: Node[]varint
652
+ targetNodes: Node[]varint
653
+
654
+ Path:
655
+ reached: bool
656
+ nextNodeIndex: i32
657
+ target: position
658
+ nodes: Node[]varint
659
+ debugData: PathDebugData
660
+
661
+ DebugSubscriptionDataType: varint =>
662
+ - DedicatedServerTickTime
663
+ - Bees
664
+ - Brains
665
+ - Breezes
666
+ - GoalSelectors
667
+ - EntityPaths
668
+ - EntityBlockIntersections
669
+ - BeeHives
670
+ - Pois
671
+ - RedstoneWireOrientations
672
+ - VillageSections
673
+ - Raids
674
+ - Structures
675
+ - GameEventListeners
676
+ - NeighborUpdates
677
+ - GameEvents
678
+
679
+ DebugSubscriptionUpdate:
680
+ type: DebugSubscriptionDataType
681
+ _: type ?
682
+ if DedicatedServerTickTime: void
683
+ default:
684
+ payload?: type ?
685
+ if DedicatedServerTickTime or VillageSections: void
686
+ if Bees: # DebugSubscriptionDataBeeInfo
687
+ hivePos?: position
688
+ flowerPos?: position
689
+ travelTicks: varint
690
+ blacklistedHives: position[]varint
691
+ if Brains: # DebugSubscriptionDataBrainDump
692
+ name: string
693
+ profession: string
694
+ xp: i32
695
+ health: f32
696
+ maxHealth: f32
697
+ inventory: string
698
+ wantsGolem: bool
699
+ angerLevel: i32
700
+ activities: string[]varint
701
+ behaviors: string[]varint
702
+ memories: string[]varint
703
+ gossips: string[]varint
704
+ pois: position[]varint
705
+ potentialPois: position[]varint
706
+ if Breezes: # DebugSubscriptionDataBreezeInfo
707
+ attackTarget?: varint
708
+ jumpTarget?: position
709
+ if GoalSelectors: # DebugSubscriptionDataGoalInfo
710
+ goals: []varint
711
+ priority: varint
712
+ running: bool
713
+ name: string
714
+ if EntityPaths: # DebugSubscriptionDataPathInfo
715
+ path: Path
716
+ maxNodeDistance: f32
717
+ if EntityBlockIntersections: # DebugSubscriptionDataEntityBlockIntersection
718
+ id: varint
719
+ if BeeHives: # DebugSubscriptionDataHiveInfo
720
+ type: varint
721
+ occupantCount: varint
722
+ honeyLevel: varint
723
+ sedated: bool
724
+ if Pois: # DebugSubscriptionDataPoiInfo
725
+ pos: position
726
+ poiType: varint
727
+ freeTicketCount: varint
728
+ if RedstoneWireOrientations: # DebugSubscriptionDataOrientation
729
+ index: varint
730
+ if Raids: # DebugSubscriptionDataRaids
731
+ positions: position[]varint
732
+ if Structures: # DebugSubscriptionDataStructures
733
+ structures: DebugStructureInfo[]varint
734
+ if GameEventListeners: # DebugSubscriptionDataGameEventListenerInfo
735
+ listenerRadius: varint
736
+ if NeighborUpdates: # DebugSubscriptionDataNeighbor
737
+ pos: position
738
+ if GameEvents: # DebugSubscriptionDataGameEventInfo
739
+ event: varint
740
+ pos: vec3f64
741
+
742
+ DebugSubscriptionEvent:
743
+ type: DebugSubscriptionDataType
744
+ value: type ?
745
+ if DedicatedServerTickTime or VillageSections: void
746
+ if Bees: # DebugSubscriptionDataBeeInfo
747
+ hivePos?: position
748
+ flowerPos?: position
749
+ travelTicks: varint
750
+ blacklistedHives: position[]varint
751
+ if Brains: # DebugSubscriptionDataBrainDump
752
+ name: string
753
+ profession: string
754
+ xp: i32
755
+ health: f32
756
+ maxHealth: f32
757
+ inventory: string
758
+ wantsGolem: bool
759
+ angerLevel: i32
760
+ activities: string[]varint
761
+ behaviors: string[]varint
762
+ memories: string[]varint
763
+ gossips: string[]varint
764
+ pois: position[]varint
765
+ potentialPois: position[]varint
766
+ if Breezes: # DebugSubscriptionDataBreezeInfo
767
+ attackTarget?: varint
768
+ jumpTarget?: position
769
+ if GoalSelectors: # DebugSubscriptionDataGoalInfo
770
+ priority: varint
771
+ running: bool
772
+ name: string
773
+ if EntityPaths: # DebugSubscriptionDataPathInfo
774
+ path: Path
775
+ maxNodeDistance: f32
776
+ if EntityBlockIntersections: # DebugSubscriptionDataEntityBlockIntersection
777
+ id: varint
778
+ if BeeHives: # DebugSubscriptionDataHiveInfo
779
+ type: varint
780
+ occupantCount: varint
781
+ honeyLevel: varint
782
+ sedated: bool
783
+ if Pois: # DebugSubscriptionDataPoiInfo
784
+ pos: position
785
+ poiType: varint
786
+ freeTicketCount: varint
787
+ if RedstoneWireOrientations: # DebugSubscriptionDataOrientation
788
+ index: varint
789
+ if Raids: # DebugSubscriptionDataRaids
790
+ positions: position[]varint
791
+ if Structures: # DebugSubscriptionDataStructures
792
+ structures: DebugStructureInfo[]varint
793
+ if GameEventListeners: # DebugSubscriptionDataGameEventListenerInfo
794
+ listenerRadius: varint
795
+ if NeighborUpdates: # DebugSubscriptionDataNeighbor
796
+ pos: position
797
+ if GameEvents: # DebugSubscriptionDataGameEventInfo
798
+ event: varint
799
+ pos: vec3f64
800
+
801
+ Particle:
802
+ # See client/net/minecraft/core/particles/ParticleTypes.java
803
+ type: varint =>
804
+ - angry_villager
805
+ - block
806
+ - block_marker
807
+ - bubble
808
+ - cloud
809
+ - copper_fire_flame
810
+ - crit
811
+ - damage_indicator
812
+ - dragon_breath
813
+ - dripping_lava
814
+ - falling_lava
815
+ - landing_lava
816
+ - dripping_water
817
+ - falling_water
818
+ - dust
819
+ - dust_color_transition
820
+ - effect
821
+ - elder_guardian
822
+ - enchanted_hit
823
+ - enchant
824
+ - end_rod
825
+ - entity_effect
826
+ - explosion_emitter
827
+ - explosion
828
+ - gust
829
+ - small_gust
830
+ - gust_emitter_large
831
+ - gust_emitter_small
832
+ - sonic_boom
833
+ - falling_dust
834
+ - firework
835
+ - fishing
836
+ - flame
837
+ - infested
838
+ - cherry_leaves
839
+ - pale_oak_leaves
840
+ - tinted_leaves
841
+ - sculk_soul
842
+ - sculk_charge
843
+ - sculk_charge_pop
844
+ - soul_fire_flame
845
+ - soul
846
+ - flash
847
+ - happy_villager
848
+ - composter
849
+ - heart
850
+ - instant_effect
851
+ - item
852
+ - vibration
853
+ - trail
854
+ - item_slime
855
+ - item_cobweb
856
+ - item_snowball
857
+ - large_smoke
858
+ - lava
859
+ - mycelium
860
+ - note
861
+ - poof
862
+ - portal
863
+ - rain
864
+ - smoke
865
+ - white_smoke
866
+ - sneeze
867
+ - spit
868
+ - squid_ink
869
+ - sweep_attack
870
+ - totem_of_undying
871
+ - underwater
872
+ - splash
873
+ - witch
874
+ - bubble_pop
875
+ - current_down
876
+ - bubble_column_up
877
+ - nautilus
878
+ - dolphin
879
+ - campfire_cosy_smoke
880
+ - campfire_signal_smoke
881
+ - dripping_honey
882
+ - falling_honey
883
+ - landing_honey
884
+ - falling_nectar
885
+ - falling_spore_blossom
886
+ - ash
887
+ - crimson_spore
888
+ - warped_spore
889
+ - spore_blossom_air
890
+ - dripping_obsidian_tear
891
+ - falling_obsidian_tear
892
+ - landing_obsidian_tear
893
+ - reverse_portal
894
+ - white_ash
895
+ - small_flame
896
+ - snowflake
897
+ - dripping_dripstone_lava
898
+ - falling_dripstone_lava
899
+ - dripping_dripstone_water
900
+ - falling_dripstone_water
901
+ - glow_squid_ink
902
+ - glow
903
+ - wax_on
904
+ - wax_off
905
+ - electric_spark
906
+ - scrape
907
+ - shriek
908
+ - egg_crack
909
+ - dust_plume
910
+ - trial_spawner_detected_player
911
+ - trial_spawner_detected_player_ominous
912
+ - vault_connection
913
+ - dust_pillar
914
+ - ominous_spawning
915
+ - raid_omen
916
+ - trial_omen
917
+ - block_crumble
918
+ - firefly
919
+ ## ## Tips for reviewing particle data (as of 1.20.5)
920
+ ## Inside the registry code, each particle can have an associated "options" type and
921
+ ## each options type can add additional data to be encoded.
922
+ ## For example, this line
923
+ ## public static final ParticleType<BlockParticleOption> BLOCK = register("block", false, BlockParticleOption::codec, BlockParticleOption::streamCodec);
924
+ ## will read the stream codec from BlockParticleOption.java's streamCodec member; then we see
925
+ ## return ByteBufCodecs.idMapper(Block.BLOCK_STATE_REGISTRY).map(var1 -> new BlockParticleOption(var0, var1), var0x -> var0x.state);
926
+ ## this encodes with the ByteBufCodecs.idMapper function. Inside this function we find
927
+ ## public void encode(ByteBuf var1x, T var2) {
928
+ ## int var3 = var1.applyAsInt(var2);
929
+ ## VarInt.write(var1x, var3);
930
+ ## }
931
+ ## which as we can see writes the varint to the buffer.
932
+ ## If you want to see all the serializers try regexp searching "StreamCodec.*Particle"
933
+ data: type ?
934
+ if block or block_marker or falling_dust or dust_pillar or block_crumble: varint
935
+ if dust:
936
+ red: f32
937
+ green: f32
938
+ blue: f32
939
+ scale: f32
940
+ if dust_color_transition:
941
+ fromRed: f32
942
+ fromGreen: f32
943
+ fromBlue: f32
944
+ scale: f32
945
+ toRed: f32
946
+ toGreen: f32
947
+ toBlue: f32
948
+ if entity_effect: i32
949
+ if item: Slot
950
+ if sculk_charge: f32
951
+ if shriek: varint
952
+ if vibration:
953
+ positionType: varint =>
954
+ - block
955
+ - entity
956
+ position: positionType ?
957
+ if block: position
958
+ if entity:
959
+ entityId: varint
960
+ entityEyeHeight: f32
961
+ ticks: varint
962
+ if trail:
963
+ target: vec3f64
964
+ color: u8
965
+ if tinted_leaves: i32
966
+ if firefly: void
967
+ if dragon_breath:
968
+ power: f32
969
+ if effect or instant_effect:
970
+ color: i32
971
+ power: f32
972
+ if flash: i32
973
+ ingredient: Slot[]varint
974
+ position: [
975
+ "bitfield",
976
+ [
977
+ {
978
+ "name": "x",
979
+ "size": 26,
980
+ "signed": true
981
+ },
982
+ {
983
+ "name": "z",
984
+ "size": 26,
985
+ "signed": true
986
+ },
987
+ {
988
+ "name": "y",
989
+ "size": 12,
990
+ "signed": true
991
+ }
992
+ ]
993
+ ]
994
+ soundSource: varint =>
995
+ 0: master
996
+ 1: music
997
+ 2: record
998
+ 3: weather
999
+ 4: block
1000
+ 5: hostile
1001
+ 6: neutral
1002
+ 7: player
1003
+ 8: ambient
1004
+ 9: voice
1005
+ 10: ui
1006
+ packedChunkPos:
1007
+ z: i32
1008
+ x: i32
1009
+ previousMessages: []varint
1010
+ id: varint
1011
+ signature: id ?
1012
+ if 0: [
1013
+ "buffer",
1014
+ {
1015
+ "count": 256
1016
+ }
1017
+ ]
1018
+ default: void
1019
+ entityMetadataEntry:
1020
+ key: u8
1021
+ type: varint =>
1022
+ - byte
1023
+ - int
1024
+ - long
1025
+ - float
1026
+ - string
1027
+ - component
1028
+ - optional_component
1029
+ - item_stack
1030
+ - boolean
1031
+ - rotations
1032
+ - block_pos
1033
+ - optional_block_pos
1034
+ - direction
1035
+ - optional_uuid
1036
+ - block_state
1037
+ - optional_block_state
1038
+ - particle
1039
+ - particles
1040
+ - villager_data
1041
+ - optional_unsigned_int
1042
+ - pose
1043
+ - cat_variant
1044
+ - cow_variant
1045
+ - wolf_variant
1046
+ - wolf_sound_variant
1047
+ - frog_variant
1048
+ - pig_variant
1049
+ - chicken_variant
1050
+ - optional_global_pos
1051
+ - painting_variant
1052
+ - sniffer_state
1053
+ - armadillo_state
1054
+ - copper_golem_state
1055
+ - weathering_copper_golem_state
1056
+ - vector3
1057
+ - quaternion
1058
+ - resolvable_profile
1059
+ value: type ?
1060
+ if byte: i8
1061
+ if int: varint
1062
+ if long: varlong
1063
+ if float: f32
1064
+ if string: string
1065
+ if component: anonymousNbt
1066
+ if optional_component: ["option", "anonymousNbt"]
1067
+ if item_stack: Slot
1068
+ if boolean: bool
1069
+ if rotations:
1070
+ pitch: f32
1071
+ yaw: f32
1072
+ roll: f32
1073
+ if block_pos: position
1074
+ if optional_block_pos: ["option", "position"]
1075
+ if direction: varint
1076
+ if optional_uuid: ["option", "UUID"]
1077
+ if block_state: varint
1078
+ if optional_block_state: optvarint
1079
+ if particle: Particle
1080
+ if particles: Particle[]varint
1081
+ if villager_data:
1082
+ villagerType: varint
1083
+ villagerProfession: varint
1084
+ level: varint
1085
+ if optional_unsigned_int: optvarint
1086
+ if pose: varint
1087
+ if cat_variant: varint
1088
+ if cow_variant: varint
1089
+ if wolf_variant: varint
1090
+ if wolf_sound_variant: varint
1091
+ if frog_variant: varint
1092
+ if pig_variant: varint
1093
+ if chicken_variant: varint
1094
+ if optional_global_pos: ["option", "GlobalPos"]
1095
+ if painting_variant: ["registryEntryHolder", {
1096
+ "baseName": "variantId",
1097
+ "otherwise": { name: "variantData", type: "EntityMetadataPaintingVariant" }
1098
+ }]
1099
+ if sniffer_state: varint
1100
+ if armadillo_state: varint
1101
+ if copper_golem_state: varint
1102
+ if weathering_copper_golem_state: varint
1103
+ if vector3: vec3f
1104
+ if quaternion: vec4f
1105
+ if resolvable_profile: ResolvableProfile
1106
+ EntityMetadataPaintingVariant:
1107
+ width: i32
1108
+ height: i32
1109
+ assetId: string
1110
+ title?: anonymousNbt
1111
+ author?: anonymousNbt
1112
+ entityMetadata: ["entityMetadataLoop", { "endVal": 255, "type": "entityMetadataEntry" }]
1113
+ tags: []varint
1114
+ tagName: string
1115
+ entries: varint[]varint
1116
+ chunkBlockEntity:
1117
+ _: [
1118
+ "bitfield",
1119
+ [
1120
+ {
1121
+ "name": "x",
1122
+ "size": 4,
1123
+ "signed": false
1124
+ },
1125
+ {
1126
+ "name": "z",
1127
+ "size": 4,
1128
+ "signed": false
1129
+ }
1130
+ ]
1131
+ ]
1132
+ y: i16
1133
+ type: varint
1134
+ nbtData: anonOptionalNbt
1135
+ chat_session?:
1136
+ uuid: UUID
1137
+ publicKey:
1138
+ expireTime: i64
1139
+ keyBytes: [
1140
+ "buffer",
1141
+ {
1142
+ "countType": "varint"
1143
+ }
1144
+ ]
1145
+ keySignature: [
1146
+ "buffer",
1147
+ {
1148
+ "countType": "varint"
1149
+ }
1150
+ ]
1151
+ # No UUID
1152
+ game_profile_name_prop:
1153
+ name: string
1154
+ properties: GameProfileProperty[]varint
1155
+ # With UUID
1156
+ GameProfile:
1157
+ uuid: UUID
1158
+ name: string
1159
+ properties: GameProfileProperty[]varint
1160
+ PartialResolvableProfile:
1161
+ name?: string
1162
+ uuid?: UUID
1163
+ properties: GameProfileProperty[]varint
1164
+ GameProfileProperty:
1165
+ name: string
1166
+ value: string
1167
+ signature?: string
1168
+ ResolvableProfile:
1169
+ type: varint =>
1170
+ - partial
1171
+ - complete
1172
+ _: type ?
1173
+ if partial: PartialResolvableProfile
1174
+ if complete: GameProfile
1175
+ skinPatch: PlayerSkinPatch
1176
+ PlayerSkinPatch:
1177
+ body?: string
1178
+ cape?: string
1179
+ elytra?: string
1180
+ model?: varint =>
1181
+ - wide
1182
+ - slim
1183
+ command_node:
1184
+ flags: [
1185
+ "bitfield",
1186
+ [
1187
+ {
1188
+ "name": "unused",
1189
+ "size": 2,
1190
+ "signed": false
1191
+ },
1192
+ {
1193
+ "name": "allows_restricted",
1194
+ "size": 1,
1195
+ "signed": false
1196
+ },
1197
+ {
1198
+ "name": "has_custom_suggestions",
1199
+ "size": 1,
1200
+ "signed": false
1201
+ },
1202
+ {
1203
+ "name": "has_redirect_node",
1204
+ "size": 1,
1205
+ "signed": false
1206
+ },
1207
+ {
1208
+ "name": "has_command",
1209
+ "size": 1,
1210
+ "signed": false
1211
+ },
1212
+ {
1213
+ "name": "command_node_type",
1214
+ "size": 2,
1215
+ "signed": false
1216
+ }
1217
+ ]
1218
+ ]
1219
+ children: varint[]varint
1220
+ redirectNode: flags/has_redirect_node ?
1221
+ if 1: varint
1222
+ default: void
1223
+ extraNodeData: flags/command_node_type ?
1224
+ if 0: void
1225
+ if 1:
1226
+ name: string
1227
+ if 2:
1228
+ name: string
1229
+ parser: varint =>
1230
+ - brigadier:bool
1231
+ - brigadier:float
1232
+ - brigadier:double
1233
+ - brigadier:integer
1234
+ - brigadier:long
1235
+ - brigadier:string
1236
+ - minecraft:entity
1237
+ - minecraft:game_profile
1238
+ - minecraft:block_pos
1239
+ - minecraft:column_pos
1240
+ - minecraft:vec3
1241
+ - minecraft:vec2
1242
+ - minecraft:block_state
1243
+ - minecraft:block_predicate
1244
+ - minecraft:item_stack
1245
+ - minecraft:item_predicate
1246
+ - minecraft:color
1247
+ - minecraft:hex_color # 1.21.6
1248
+ - minecraft:component
1249
+ - minecraft:style
1250
+ - minecraft:message
1251
+ - minecraft:nbt
1252
+ - minecraft:nbt_tag
1253
+ - minecraft:nbt_path
1254
+ - minecraft:objective
1255
+ - minecraft:objective_criteria
1256
+ - minecraft:operation
1257
+ - minecraft:particle
1258
+ - minecraft:angle
1259
+ - minecraft:rotation
1260
+ - minecraft:scoreboard_slot
1261
+ - minecraft:score_holder
1262
+ - minecraft:swizzle
1263
+ - minecraft:team
1264
+ - minecraft:item_slot
1265
+ - minecraft:item_slots # 1.20.5
1266
+ - minecraft:resource_location
1267
+ - minecraft:function
1268
+ - minecraft:entity_anchor
1269
+ - minecraft:int_range
1270
+ - minecraft:float_range
1271
+ - minecraft:dimension
1272
+ - minecraft:gamemode
1273
+ - minecraft:time
1274
+ - minecraft:resource_or_tag
1275
+ - minecraft:resource_or_tag_key
1276
+ - minecraft:resource
1277
+ - minecraft:resource_key
1278
+ - minecraft:resource_selector
1279
+ - minecraft:template_mirror
1280
+ - minecraft:template_rotation
1281
+ - minecraft:heightmap
1282
+ - minecraft:loot_table # 1.20.5
1283
+ - minecraft:loot_predicate # 1.20.5
1284
+ - minecraft:loot_modifier # 1.20.5
1285
+ - minecraft:dialog # 1.21.6
1286
+ - minecraft:uuid
1287
+ properties: parser ?
1288
+ if brigadier:bool: void
1289
+ if brigadier:float:
1290
+ flags: [
1291
+ "bitfield",
1292
+ [
1293
+ {
1294
+ "name": "unused",
1295
+ "size": 6,
1296
+ "signed": false
1297
+ },
1298
+ {
1299
+ "name": "max_present",
1300
+ "size": 1,
1301
+ "signed": false
1302
+ },
1303
+ {
1304
+ "name": "min_present",
1305
+ "size": 1,
1306
+ "signed": false
1307
+ }
1308
+ ]
1309
+ ]
1310
+ min: flags/min_present ?
1311
+ if 1: f32
1312
+ default: void
1313
+ max: flags/max_present ?
1314
+ if 1: f32
1315
+ default: void
1316
+ if brigadier:double:
1317
+ flags: [
1318
+ "bitfield",
1319
+ [
1320
+ {
1321
+ "name": "unused",
1322
+ "size": 6,
1323
+ "signed": false
1324
+ },
1325
+ {
1326
+ "name": "max_present",
1327
+ "size": 1,
1328
+ "signed": false
1329
+ },
1330
+ {
1331
+ "name": "min_present",
1332
+ "size": 1,
1333
+ "signed": false
1334
+ }
1335
+ ]
1336
+ ]
1337
+ min: flags/min_present ?
1338
+ if 1: f64
1339
+ default: void
1340
+ max: flags/max_present ?
1341
+ if 1: f64
1342
+ default: void
1343
+ if brigadier:integer:
1344
+ flags: [
1345
+ "bitfield",
1346
+ [
1347
+ {
1348
+ "name": "unused",
1349
+ "size": 6,
1350
+ "signed": false
1351
+ },
1352
+ {
1353
+ "name": "max_present",
1354
+ "size": 1,
1355
+ "signed": false
1356
+ },
1357
+ {
1358
+ "name": "min_present",
1359
+ "size": 1,
1360
+ "signed": false
1361
+ }
1362
+ ]
1363
+ ]
1364
+ min: flags/min_present ?
1365
+ if 1: i32
1366
+ default: void
1367
+ max: flags/max_present ?
1368
+ if 1: i32
1369
+ default: void
1370
+ if brigadier:long:
1371
+ flags: [
1372
+ "bitfield",
1373
+ [
1374
+ {
1375
+ "name": "unused",
1376
+ "size": 6,
1377
+ "signed": false
1378
+ },
1379
+ {
1380
+ "name": "max_present",
1381
+ "size": 1,
1382
+ "signed": false
1383
+ },
1384
+ {
1385
+ "name": "min_present",
1386
+ "size": 1,
1387
+ "signed": false
1388
+ }
1389
+ ]
1390
+ ]
1391
+ min: flags/min_present ?
1392
+ if 1: i64
1393
+ default: void
1394
+ max: flags/max_present ?
1395
+ if 1: i64
1396
+ default: void
1397
+ if brigadier:string: varint =>
1398
+ 0: SINGLE_WORD
1399
+ 1: QUOTABLE_PHRASE
1400
+ 2: GREEDY_PHRASE
1401
+ if minecraft:entity: [
1402
+ "bitfield",
1403
+ [
1404
+ {
1405
+ "name": "unused",
1406
+ "size": 6,
1407
+ "signed": false
1408
+ },
1409
+ {
1410
+ "name": "onlyAllowPlayers",
1411
+ "size": 1,
1412
+ "signed": false
1413
+ },
1414
+ {
1415
+ "name": "onlyAllowEntities",
1416
+ "size": 1,
1417
+ "signed": false
1418
+ }
1419
+ ]
1420
+ ]
1421
+ if minecraft:game_profile: void
1422
+ if minecraft:block_pos: void
1423
+ if minecraft:column_pos: void
1424
+ if minecraft:vec3: void
1425
+ if minecraft:vec2: void
1426
+ if minecraft:block_state: void
1427
+ if minecraft:block_predicate: void
1428
+ if minecraft:item_stack: void
1429
+ if minecraft:item_predicate: void
1430
+ if minecraft:color: void
1431
+ if minecraft:hex_color: void
1432
+ if minecraft:component: void
1433
+ if minecraft:message: void
1434
+ if minecraft:nbt: void
1435
+ if minecraft:nbt_path: void
1436
+ if minecraft:objective: void
1437
+ if minecraft:objective_criteria: void
1438
+ if minecraft:operation: void
1439
+ if minecraft:particle: void
1440
+ if minecraft:angle: void
1441
+ if minecraft:rotation: void
1442
+ if minecraft:scoreboard_slot: void
1443
+ if minecraft:score_holder: [
1444
+ "bitfield",
1445
+ [
1446
+ {
1447
+ "name": "unused",
1448
+ "size": 7,
1449
+ "signed": false
1450
+ },
1451
+ {
1452
+ "name": "allowMultiple",
1453
+ "size": 1,
1454
+ "signed": false
1455
+ }
1456
+ ]
1457
+ ]
1458
+ if minecraft:swizzle: void
1459
+ if minecraft:team: void
1460
+ if minecraft:item_slot: void
1461
+ if minecraft:resource_location: void
1462
+ if minecraft:function: void
1463
+ if minecraft:entity_anchor: void
1464
+ if minecraft:int_range: void
1465
+ if minecraft:float_range: void
1466
+ if minecraft:dimension: void
1467
+ if minecraft:gamemode: void
1468
+ if minecraft:time:
1469
+ min: i32
1470
+ if minecraft:resource_or_tag or minecraft:resource_or_tag_key or minecraft:resource or minecraft:resource_key or minecraft:resource_selector:
1471
+ registry: string
1472
+ if minecraft:template_mirror: void
1473
+ if minecraft:template_rotation: void
1474
+ if minecraft:heightmap: void
1475
+ if minecraft:dialog: void
1476
+ if minecraft:uuid: void
1477
+ suggestionType: ../flags/has_custom_suggestions ?
1478
+ if 1: string
1479
+ default: void
1480
+ # # Shared Packets
1481
+ # These are packets that are shared between multiple states.
1482
+ # They are defined here to avoid duplication.
1483
+ # =====
1484
+ # MC: ServerboundClientInformationPacket
1485
+ packet_common_settings:
1486
+ locale: string
1487
+ viewDistance: i8
1488
+ chatFlags: varint
1489
+ chatColors: bool
1490
+ skinParts: u8
1491
+ mainHand: varint
1492
+ enableTextFiltering: bool
1493
+ enableServerListing: bool
1494
+ particleStatus: varint =>
1495
+ - all
1496
+ - decreased
1497
+ - minimal
1498
+ # MC: ClientboundCookieRequestPacket
1499
+ packet_common_cookie_request:
1500
+ cookie: string
1501
+ # MC: ClientboundStoreCookiePacket
1502
+ packet_common_store_cookie:
1503
+ key: string
1504
+ value: ByteArray
1505
+ # MC: ClientboundTransferPacket
1506
+ packet_common_transfer:
1507
+ host: string
1508
+ port: varint
1509
+ # MC: ServerboundCookieResponsePacket
1510
+ packet_common_cookie_response:
1511
+ key: string
1512
+ value?: ByteArray
1513
+ # MC: ServerboundSelectKnownPacks
1514
+ # MC: ClientboundSelectKnownPacks
1515
+ packet_common_select_known_packs:
1516
+ packs: []varint
1517
+ namespace: string
1518
+ id: string
1519
+ version: string
1520
+ # MC: ClientboundCustomReportDetailsPacket
1521
+ packet_common_custom_report_details:
1522
+ details: []varint
1523
+ key: string
1524
+ value: string
1525
+ # MC: ClientboundResourcePackPopPacket
1526
+ packet_common_remove_resource_pack:
1527
+ uuid?: UUID
1528
+ # MC: ClientboundResourcePackPushPacket
1529
+ packet_common_add_resource_pack:
1530
+ uuid: UUID
1531
+ url: string
1532
+ hash: string
1533
+ forced: bool
1534
+ promptMessage?: anonymousNbt
1535
+
1536
+ ServerLinkType: varint =>
1537
+ - bug_report
1538
+ - community_guidelines
1539
+ - support
1540
+ - status
1541
+ - feedback
1542
+ - community
1543
+ - website
1544
+ - forums
1545
+ - news
1546
+ - announcements
1547
+ # MC: ClientboundServerLinksPacket
1548
+ # This packet contains a list of links that the Notchian client will display in the menu
1549
+ # available from the pause menu. Link labels can be built-in or custom (i.e., any text).
1550
+ packet_common_server_links:
1551
+ links: []varint
1552
+ hasKnownType: bool
1553
+ knownType: hasKnownType ?
1554
+ if true: ServerLinkType
1555
+ unknownType: hasKnownType ?
1556
+ if false: anonymousNbt
1557
+ link: string
1558
+ # MC: ClientboundClearDialogPacket
1559
+ packet_common_clear_dialog:
1560
+ # empty
1561
+ # MC: ServerboundCustomClickActionPacket
1562
+ packet_common_custom_click_action:
1563
+ id: string
1564
+ nbt?: anonymousNbt
1565
+
1566
+ ^handshaking.toClient.types:
1567
+ packet:
1568
+ name: varint =>
1569
+ params: ["switch",{"compareTo":"name","fields":{}}]
1570
+ ^handshaking.toServer.types:
1571
+ packet_set_protocol:
1572
+ protocolVersion: varint
1573
+ serverHost: string
1574
+ serverPort: u16
1575
+ nextState: varint
1576
+ packet_legacy_server_list_ping:
1577
+ payload: u8
1578
+ packet:
1579
+ name: varint =>
1580
+ 0x00: set_protocol
1581
+ 0xfe: legacy_server_list_ping
1582
+ params: name ?
1583
+ if set_protocol: packet_set_protocol
1584
+ if legacy_server_list_ping: packet_legacy_server_list_ping
1585
+ ^status.toClient.types:
1586
+ # MC: ClientboundStatusResponsePacket
1587
+ packet_server_info:
1588
+ response: string
1589
+ # MC: ClientboundPongResponsePacket
1590
+ packet_ping:
1591
+ time: i64
1592
+ packet:
1593
+ name: varint =>
1594
+ 0x00: server_info
1595
+ 0x01: ping
1596
+ params: name ?
1597
+ if server_info: packet_server_info
1598
+ if ping: packet_ping
1599
+ ^status.toServer.types:
1600
+ # MC: ServerboundStatusRequestPacket
1601
+ packet_ping_start:
1602
+ # Empty
1603
+ # MC: ServerboundPingRequestPacket
1604
+ packet_ping:
1605
+ time: i64
1606
+ packet:
1607
+ name: varint =>
1608
+ 0x00: ping_start
1609
+ 0x01: ping
1610
+ params: name ?
1611
+ if ping_start: packet_ping_start
1612
+ if ping: packet_ping
1613
+ ^login.toClient.types:
1614
+ # MC: ClientboundLoginDisconnectPacket
1615
+ packet_disconnect:
1616
+ reason: string
1617
+ # MC: ClientboundHelloPacket
1618
+ packet_encryption_begin:
1619
+ serverId: string
1620
+ publicKey: [
1621
+ "buffer",
1622
+ {
1623
+ "countType": "varint"
1624
+ }
1625
+ ]
1626
+ verifyToken: [
1627
+ "buffer",
1628
+ {
1629
+ "countType": "varint"
1630
+ }
1631
+ ]
1632
+ shouldAuthenticate: bool
1633
+ # MC: ClientboundLoginFinishedPacket
1634
+ packet_success:
1635
+ uuid: UUID
1636
+ username: string
1637
+ properties: []varint
1638
+ name: string
1639
+ value: string
1640
+ signature?: string
1641
+ # MC: ClientboundLoginCompressionPacket
1642
+ packet_compress:
1643
+ threshold: varint
1644
+ # MC: ClientboundCustomQueryPacket
1645
+ packet_login_plugin_request:
1646
+ messageId: varint
1647
+ channel: string
1648
+ data: restBuffer
1649
+ ## (Cookie Request is Common) ##
1650
+ packet:
1651
+ name: varint =>
1652
+ - disconnect
1653
+ - encryption_begin
1654
+ - success
1655
+ - compress
1656
+ - login_plugin_request
1657
+ - cookie_request
1658
+ params: name ?
1659
+ if disconnect: packet_disconnect
1660
+ if encryption_begin: packet_encryption_begin
1661
+ if success: packet_success
1662
+ if compress: packet_compress
1663
+ if login_plugin_request: packet_login_plugin_request
1664
+ if cookie_request: packet_common_cookie_request
1665
+ ^login.toServer.types:
1666
+ # MC: ServerboundHelloPacket
1667
+ packet_login_start:
1668
+ username: string
1669
+ playerUUID: UUID
1670
+ # MC: ServerboundKeyPacket
1671
+ packet_encryption_begin:
1672
+ sharedSecret: [
1673
+ "buffer",
1674
+ {
1675
+ "countType": "varint"
1676
+ }
1677
+ ]
1678
+ verifyToken: [
1679
+ "buffer",
1680
+ {
1681
+ "countType": "varint"
1682
+ }
1683
+ ]
1684
+ # MC: ServerboundCustomQueryAnswerPacket
1685
+ packet_login_plugin_response:
1686
+ messageId: varint
1687
+ data?: restBuffer
1688
+ # MC: ServerboundLoginAcknowledgedPacket
1689
+ packet_login_acknowledged:
1690
+ # Empty
1691
+ ## (Cookie Response is Common) ##
1692
+ packet:
1693
+ name: varint =>
1694
+ - login_start
1695
+ - encryption_begin
1696
+ - login_plugin_response
1697
+ - login_acknowledged
1698
+ - cookie_response
1699
+ params: name ?
1700
+ if login_start: packet_login_start
1701
+ if encryption_begin: packet_encryption_begin
1702
+ if login_plugin_response: packet_login_plugin_response
1703
+ if login_acknowledged: packet_login_acknowledged
1704
+ if cookie_response: packet_common_cookie_response
1705
+ ^configuration.toClient.types:
1706
+ ## (Cookie Request is common)
1707
+ # MC: ClientboundCodeOfConductPacket
1708
+ packet_code_of_conduct:
1709
+ contents: string
1710
+ # MC: ClientboundCustomPayloadPacket
1711
+ packet_custom_payload:
1712
+ channel: string
1713
+ data: restBuffer
1714
+ # MC: ClientboundDisconnectPacket
1715
+ packet_disconnect:
1716
+ reason: anonymousNbt
1717
+ # MC: ClientboundFinishConfigurationPacket
1718
+ packet_finish_configuration:
1719
+ # Empty
1720
+ # MC: ClientboundKeepAlivePacket
1721
+ packet_keep_alive:
1722
+ keepAliveId: i64
1723
+ # MC: ClientboundPingPacket
1724
+ packet_ping:
1725
+ id: i32
1726
+ # MC: ClientboundResetChatPacket
1727
+ packet_reset_chat:
1728
+ # Empty
1729
+ # MC: ClientboundRegistryDataPacket
1730
+ packet_registry_data:
1731
+ # The server can send multiple registries
1732
+ id: string
1733
+ entries: []varint
1734
+ key: string
1735
+ value?: anonymousNbt
1736
+ ## (Store cookie and Transfer are Common) ##
1737
+ # MC: ClientboundUpdateEnabledFeaturesPacket
1738
+ packet_feature_flags:
1739
+ features: string[]varint
1740
+ # MC: ClientboundUpdateTagsPacket
1741
+ packet_tags:
1742
+ tags: []varint
1743
+ tagType: string
1744
+ tags: tags
1745
+ ## (Select known packs is common)
1746
+ # MC: ClientboundShowDialogConfigurationPacket
1747
+ packet_show_dialog:
1748
+ dialog: anonymousNbt
1749
+ packet:
1750
+ name: varint =>
1751
+ - cookie_request
1752
+ - custom_payload
1753
+ - disconnect
1754
+ - finish_configuration
1755
+ - keep_alive
1756
+ - ping
1757
+ - reset_chat
1758
+ - registry_data
1759
+ - remove_resource_pack
1760
+ - add_resource_pack
1761
+ - store_cookie
1762
+ - transfer
1763
+ - feature_flags
1764
+ - tags
1765
+ - select_known_packs
1766
+ - custom_report_details
1767
+ - server_links
1768
+ - clear_dialog
1769
+ - show_dialog
1770
+ - code_of_conduct
1771
+ params: name ?
1772
+ if cookie_request: packet_common_cookie_request
1773
+ if custom_payload: packet_custom_payload
1774
+ if disconnect: packet_disconnect
1775
+ if finish_configuration: packet_finish_configuration
1776
+ if keep_alive: packet_keep_alive
1777
+ if ping: packet_ping
1778
+ if reset_chat: packet_reset_chat
1779
+ if registry_data: packet_registry_data
1780
+ if remove_resource_pack: packet_common_remove_resource_pack
1781
+ if add_resource_pack: packet_common_add_resource_pack
1782
+ if store_cookie: packet_common_store_cookie
1783
+ if transfer: packet_common_transfer
1784
+ if feature_flags: packet_feature_flags
1785
+ if tags: packet_tags
1786
+ if select_known_packs: packet_common_select_known_packs
1787
+ if custom_report_details: packet_common_custom_report_details
1788
+ if server_links: packet_common_server_links
1789
+ if clear_dialog: packet_common_clear_dialog
1790
+ if show_dialog: packet_show_dialog
1791
+ if code_of_conduct: packet_code_of_conduct
1792
+ ^configuration.toServer.types:
1793
+ ## (Settings is Common) ##
1794
+ ## (Cookie Response is Common) ##
1795
+ # MC: ServerboundAcceptCodeOfConductPacket
1796
+ packet_accept_code_of_conduct:
1797
+ # Empty
1798
+ # MC: ServerboundCustomPayloadPacket
1799
+ packet_custom_payload:
1800
+ channel: string
1801
+ data: restBuffer
1802
+ # MC: ServerboundFinishConfigurationPacket
1803
+ packet_finish_configuration:
1804
+ # Empty
1805
+ # MC: ServerboundKeepAlivePacket
1806
+ packet_keep_alive:
1807
+ keepAliveId: i64
1808
+ # MC: ServerboundPongPacket
1809
+ packet_pong:
1810
+ id: i32
1811
+ # MC: ServerboundResourcePackPacket
1812
+ packet_resource_pack_receive:
1813
+ uuid: UUID
1814
+ result: varint
1815
+ packet:
1816
+ name: varint =>
1817
+ - settings
1818
+ - cookie_response
1819
+ - custom_payload
1820
+ - finish_configuration
1821
+ - keep_alive
1822
+ - pong
1823
+ - resource_pack_receive
1824
+ - select_known_packs
1825
+ - custom_click_action
1826
+ - accept_code_of_conduct
1827
+ params: name ?
1828
+ if settings: packet_common_settings
1829
+ if cookie_response: packet_common_cookie_response
1830
+ if custom_payload: packet_custom_payload
1831
+ if finish_configuration: packet_finish_configuration
1832
+ if keep_alive: packet_keep_alive
1833
+ if pong: packet_pong
1834
+ if resource_pack_receive: packet_resource_pack_receive
1835
+ if select_known_packs: packet_common_select_known_packs
1836
+ if custom_click_action: packet_common_custom_click_action
1837
+ if accept_code_of_conduct: packet_accept_code_of_conduct
1838
+ ^play.toClient.types:
1839
+ SlotDisplay:
1840
+ type: varint =>
1841
+ - empty
1842
+ - any_fuel
1843
+ - item
1844
+ - item_stack
1845
+ - tag
1846
+ - smithing_trim
1847
+ - with_remainder
1848
+ - composite
1849
+ data: type ?
1850
+ if empty or any_fuel: void
1851
+ if item: varint
1852
+ if item_stack: Slot
1853
+ if tag: string
1854
+ if smithing_trim:
1855
+ base: SlotDisplay
1856
+ material: SlotDisplay
1857
+ pattern: ["registryEntryHolder", { "baseName": "patternId", "otherwise": { "name": "data", "type": "ArmorTrimPattern" } }]
1858
+ if with_remainder:
1859
+ input: SlotDisplay
1860
+ remainder: SlotDisplay
1861
+ if composite: SlotDisplay[]varint
1862
+ RecipeDisplay:
1863
+ type: varint =>
1864
+ - crafting_shapeless
1865
+ - crafting_shaped
1866
+ - furnace
1867
+ - stonecutter
1868
+ - smithing
1869
+ data: type ?
1870
+ if crafting_shapeless:
1871
+ ingredients: SlotDisplay[]varint
1872
+ result: SlotDisplay
1873
+ craftingStation: SlotDisplay
1874
+ if crafting_shaped:
1875
+ width: varint
1876
+ height: varint
1877
+ ingredients: SlotDisplay[]varint
1878
+ result: SlotDisplay
1879
+ craftingStation: SlotDisplay
1880
+ if furnace:
1881
+ ingredient: SlotDisplay
1882
+ fuel: SlotDisplay
1883
+ result: SlotDisplay
1884
+ craftingStation: SlotDisplay
1885
+ duration: varint
1886
+ experience: f32
1887
+ if stonecutter:
1888
+ ingredient: SlotDisplay
1889
+ result: SlotDisplay
1890
+ craftingStation: SlotDisplay
1891
+ if smithing:
1892
+ template: SlotDisplay
1893
+ base: SlotDisplay
1894
+ addition: SlotDisplay
1895
+ result: SlotDisplay
1896
+ craftingStation: SlotDisplay
1897
+ # World state information for spawn and respawn packets
1898
+ SpawnInfo:
1899
+ dimension: varint
1900
+ name: string
1901
+ hashedSeed: i64
1902
+ gamemode: i8 =>
1903
+ - survival
1904
+ - creative
1905
+ - adventure
1906
+ - spectator
1907
+ previousGamemode: u8
1908
+ isDebug: bool
1909
+ isFlat: bool
1910
+ death?: GlobalPos
1911
+ portalCooldown: varint
1912
+ seaLevel: varint
1913
+
1914
+ # MC: ClientboundAddEntityPacket
1915
+ packet_spawn_entity:
1916
+ entityId: varint
1917
+ objectUUID: UUID
1918
+ type: varint
1919
+ x: f64
1920
+ y: f64
1921
+ z: f64
1922
+ velocity: lpVec3
1923
+ pitch: i8
1924
+ yaw: i8
1925
+ headPitch: i8
1926
+ objectData: varint
1927
+ # MC: ClientboundAnimatePacket
1928
+ packet_animation:
1929
+ entityId: varint
1930
+ animation: u8
1931
+ # MC: ClientboundAwardStatsPacket
1932
+ packet_statistics:
1933
+ entries: []varint
1934
+ categoryId: varint
1935
+ statisticId: varint
1936
+ value: varint
1937
+ # MC: ClientboundBlockChangedAckPacket
1938
+ packet_acknowledge_player_digging:
1939
+ sequenceId: varint
1940
+ # MC: ClientboundBlockDestructionPacket
1941
+ packet_block_break_animation:
1942
+ entityId: varint
1943
+ location: position
1944
+ destroyStage: i8
1945
+ # MC: ClientboundBlockEntityDataPacket
1946
+ packet_tile_entity_data:
1947
+ location: position
1948
+ action: varint
1949
+ nbtData: anonOptionalNbt
1950
+ # MC: ClientboundBlockEventPacket
1951
+ packet_block_action:
1952
+ location: position
1953
+ byte1: u8
1954
+ byte2: u8
1955
+ blockId: varint
1956
+ # MC: ClientboundBlockUpdatePacket
1957
+ packet_block_change:
1958
+ location: position
1959
+ type: varint
1960
+ # MC: ClientboundBossEventPacket
1961
+ packet_boss_bar:
1962
+ entityUUID: UUID
1963
+ action: varint
1964
+ title: action ?
1965
+ if 0: anonymousNbt
1966
+ if 3: anonymousNbt
1967
+ default: void
1968
+ health: action ?
1969
+ if 0: f32
1970
+ if 2: f32
1971
+ default: void
1972
+ color: action ?
1973
+ if 0: varint
1974
+ if 4: varint
1975
+ default: void
1976
+ dividers: action ?
1977
+ if 0: varint
1978
+ if 4: varint
1979
+ default: void
1980
+ flags: action ?
1981
+ if 0: u8
1982
+ if 5: u8
1983
+ default: void
1984
+ # MC: ClientboundChangeDifficultyPacket
1985
+ packet_difficulty:
1986
+ difficulty: varint =>
1987
+ 0: peaceful
1988
+ 1: easy
1989
+ 2: normal
1990
+ 3: hard
1991
+ difficultyLocked: bool
1992
+ # MC: ClientboundChunkBatchFinishedPacket
1993
+ packet_chunk_batch_finished:
1994
+ batchSize: varint
1995
+ # MC: ClientboundChunkBatchStartPacket
1996
+ packet_chunk_batch_start:
1997
+ # Empty
1998
+ # MC: ClientboundChunksBiomesPacket
1999
+ packet_chunk_biomes:
2000
+ biomes: []varint
2001
+ position: packedChunkPos
2002
+ data: ByteArray
2003
+ # MC: ClientboundClearTitlesPacket
2004
+ packet_clear_titles:
2005
+ reset: bool
2006
+ # MC: ClientboundCommandSuggestionsPacket
2007
+ packet_tab_complete:
2008
+ transactionId: varint
2009
+ start: varint
2010
+ length: varint
2011
+ matches: []varint
2012
+ match: string
2013
+ tooltip?: anonymousNbt
2014
+ # MC: ClientboundCommandsPacket
2015
+ packet_declare_commands:
2016
+ nodes: command_node[]varint
2017
+ rootIndex: varint
2018
+ # MC: ClientboundContainerClosePacket
2019
+ packet_close_window:
2020
+ windowId: ContainerID
2021
+ # MC: ClientboundContainerSetContentPacket
2022
+ packet_window_items:
2023
+ windowId: ContainerID
2024
+ stateId: varint
2025
+ items: Slot[]varint
2026
+ carriedItem: Slot
2027
+ # MC: ClientboundContainerSetDataPacket
2028
+ packet_craft_progress_bar:
2029
+ windowId: ContainerID
2030
+ property: i16
2031
+ value: i16
2032
+ # MC: ClientboundContainerSetSlotPacket
2033
+ packet_set_slot:
2034
+ windowId: ContainerID
2035
+ stateId: varint
2036
+ slot: i16
2037
+ item: Slot
2038
+ ## (Cookie Request is Common)
2039
+ # MC: ClientboundCooldownPacket
2040
+ packet_set_cooldown:
2041
+ # TODO: figure out what this is
2042
+ cooldownGroup: string
2043
+ cooldownTicks: varint
2044
+ # MC: ClientboundCustomChatCompletionsPacket
2045
+ packet_chat_suggestions:
2046
+ action: varint
2047
+ entries: string[]varint
2048
+ # MC: ClientboundCustomPayloadPacket
2049
+ packet_custom_payload:
2050
+ channel: string
2051
+ data: restBuffer
2052
+ # MC: ClientboundDamageEventPacket
2053
+ packet_damage_event:
2054
+ entityId: varint
2055
+ sourceTypeId: varint
2056
+ sourceCauseId: varint
2057
+ sourceDirectId: varint
2058
+ sourcePosition?: vec3f64
2059
+ # MC: ClientboundDebugBlockValuePacket
2060
+ packet_debug_block_value:
2061
+ blockPos: position
2062
+ update: DebugSubscriptionUpdate
2063
+ # MC: ClientboundDebugChunkValuePacket
2064
+ packet_debug_chunk_value:
2065
+ chunkPos: packedChunkPos
2066
+ update: DebugSubscriptionUpdate
2067
+ # MC: ClientboundEntityEntityValuePacket
2068
+ packet_debug_entity_value:
2069
+ entityId: varint
2070
+ update: DebugSubscriptionUpdate
2071
+ # MC: ClientboundDebugEventPacket
2072
+ packet_debug_event:
2073
+ event: DebugSubscriptionEvent
2074
+ # MC: ClientboundDebugSamplePacket
2075
+ packet_debug_sample:
2076
+ sample: i64[]varint
2077
+ type: varint
2078
+ # MC: ClientboundDeleteChatPacket
2079
+ packet_hide_message:
2080
+ id: varint
2081
+ signature: id ?
2082
+ if 0: [
2083
+ "buffer",
2084
+ {
2085
+ "count": 256
2086
+ }
2087
+ ]
2088
+ default: void
2089
+ # MC: ClientboundDisconnectPacket
2090
+ packet_kick_disconnect:
2091
+ reason: anonymousNbt
2092
+
2093
+ ## client\net\minecraft\network\chat\ChatTypeDecoration.java
2094
+ ## via client\net\minecraft\network\chat\ChatType.java
2095
+ ChatTypeParameterType: varint =>
2096
+ - content
2097
+ - sender
2098
+ - target
2099
+ ChatType:
2100
+ translationKey: string
2101
+ parameters: ChatTypeParameterType[]varint
2102
+ style: anonymousNbt
2103
+ ChatTypes:
2104
+ chat: ChatType
2105
+ narration: ChatType
2106
+ ChatTypesHolder: ["registryEntryHolder", { "baseName": "chatType", "otherwise": { name: "data", type: "ChatTypes" } }]
2107
+
2108
+ # MC: ClientboundDisguisedChatPacket
2109
+ packet_profileless_chat:
2110
+ message: anonymousNbt
2111
+ type: ChatTypesHolder
2112
+ name: anonymousNbt
2113
+ target?: anonymousNbt
2114
+ # MC: ClientboundEntityEventPacket
2115
+ packet_entity_status:
2116
+ entityId: i32
2117
+ entityStatus: i8
2118
+ # MC: ClientboundEntityPositionSyncPacket
2119
+ packet_sync_entity_position:
2120
+ entityId: varint
2121
+ x: f64
2122
+ y: f64
2123
+ z: f64
2124
+ dx: f64
2125
+ dy: f64
2126
+ dz: f64
2127
+ yaw: f32
2128
+ pitch: f32
2129
+ onGround: bool
2130
+ ExplosionParticleInfo:
2131
+ particle: Particle
2132
+ scaling: f32
2133
+ speed: f32
2134
+ ExplosionParticleEntry:
2135
+ data: ExplosionParticleInfo
2136
+ weight: varint
2137
+ # MC: ClientboundExplodePacket
2138
+ packet_explosion:
2139
+ center: vec3f64
2140
+ radius: f32
2141
+ blockCount: i32
2142
+ playerKnockback?: vec3f64
2143
+ explosionParticle: Particle
2144
+ sound: ItemSoundHolder
2145
+ blockParticles: ExplosionParticleEntry[]varint
2146
+ # MC: ClientboundForgetLevelChunkPacket
2147
+ packet_unload_chunk:
2148
+ chunkZ: i32
2149
+ chunkX: i32
2150
+ # MC: ClientboundGameEventPacket
2151
+ packet_game_state_change:
2152
+ reason: u8 =>
2153
+ 0: no_respawn_block_available
2154
+ 1: start_raining
2155
+ 2: stop_raining
2156
+ 3: change_game_mode
2157
+ 4: win_game
2158
+ 5: demo_event
2159
+ 6: play_arrow_hit_sound
2160
+ 7: rain_level_change
2161
+ 8: thunder_level_change
2162
+ 9: puffer_fish_sting
2163
+ 10: guardian_elder_effect
2164
+ 11: immediate_respawn
2165
+ 12: limited_crafting
2166
+ 13: level_chunks_load_start
2167
+ gameMode: f32
2168
+ # MC: ClientboundGameTestHighlightPosPacket
2169
+ packet_game_test_highlight_pos:
2170
+ absolutePos: position
2171
+ relativePos: position
2172
+ # MC: ClientboundHorseScreenOpenPacket
2173
+ packet_open_horse_window:
2174
+ windowId: ContainerID
2175
+ nbSlots: varint
2176
+ entityId: i32
2177
+ # MC: ClientboundHurtAnimationPacket
2178
+ packet_hurt_animation:
2179
+ entityId: varint
2180
+ yaw: f32
2181
+ # MC: ClientboundInitializeBorderPacket
2182
+ packet_initialize_world_border:
2183
+ x: f64
2184
+ z: f64
2185
+ oldDiameter: f64
2186
+ newDiameter: f64
2187
+ speed: varint
2188
+ portalTeleportBoundary: varint
2189
+ warningBlocks: varint
2190
+ warningTime: varint
2191
+ # MC: ClientboundKeepAlivePacket
2192
+ packet_keep_alive:
2193
+ keepAliveId: i64
2194
+ # MC: ClientboundLevelChunkWithLightPacket
2195
+ packet_map_chunk:
2196
+ x: i32
2197
+ z: i32
2198
+ heightmaps: []varint
2199
+ type: varint =>
2200
+ 0: world_surface_wg
2201
+ 1: world_surface
2202
+ 2: ocean_floor_wg
2203
+ 3: ocean_floor
2204
+ 4: motion_blocking
2205
+ 5: motion_blocking_no_leaves
2206
+ data: i64[]varint
2207
+ chunkData: ByteArray
2208
+ blockEntities: chunkBlockEntity[]varint
2209
+ skyLightMask: i64[]varint
2210
+ blockLightMask: i64[]varint
2211
+ emptySkyLightMask: i64[]varint
2212
+ emptyBlockLightMask: i64[]varint
2213
+ skyLight: []varint
2214
+ _: u8[]varint
2215
+ blockLight: []varint
2216
+ _: u8[]varint
2217
+ # MC: ClientboundLevelEventPacket
2218
+ packet_world_event:
2219
+ effectId: i32
2220
+ location: position
2221
+ data: i32
2222
+ global: bool
2223
+ # MC: ClientboundLevelParticlesPacket
2224
+ packet_world_particles:
2225
+ longDistance: bool
2226
+ alwaysShow: bool
2227
+ x: f64
2228
+ y: f64
2229
+ z: f64
2230
+ offsetX: f32
2231
+ offsetY: f32
2232
+ offsetZ: f32
2233
+ velocityOffset: f32
2234
+ amount: i32
2235
+ particle: Particle
2236
+ # MC: ClientboundLightUpdatePacket
2237
+ packet_update_light:
2238
+ chunkX: varint
2239
+ chunkZ: varint
2240
+ skyLightMask: i64[]varint
2241
+ blockLightMask: i64[]varint
2242
+ emptySkyLightMask: i64[]varint
2243
+ emptyBlockLightMask: i64[]varint
2244
+ skyLight: []varint
2245
+ _: u8[]varint
2246
+ blockLight: []varint
2247
+ _: u8[]varint
2248
+ # MC: ClientboundLoginPacket
2249
+ packet_login:
2250
+ entityId: i32
2251
+ isHardcore: bool
2252
+ worldNames: string[]varint
2253
+ maxPlayers: varint
2254
+ viewDistance: varint
2255
+ simulationDistance: varint
2256
+ reducedDebugInfo: bool
2257
+ enableRespawnScreen: bool
2258
+ doLimitedCrafting: bool
2259
+ worldState: SpawnInfo
2260
+ enforcesSecureChat: bool
2261
+ # MC: ClientboundMapItemDataPacket
2262
+ packet_map:
2263
+ itemDamage: varint
2264
+ scale: i8
2265
+ locked: bool
2266
+ icons?: []varint
2267
+ type: varint
2268
+ x: i8
2269
+ z: i8
2270
+ direction: u8
2271
+ displayName?: anonymousNbt
2272
+ columns: u8
2273
+ rows: columns ?
2274
+ if 0: void
2275
+ default: u8
2276
+ x: columns ?
2277
+ if 0: void
2278
+ default: u8
2279
+ y: columns ?
2280
+ if 0: void
2281
+ default: u8
2282
+ data: columns ?
2283
+ if 0: void
2284
+ default: [
2285
+ "buffer",
2286
+ {
2287
+ "countType": "varint"
2288
+ }
2289
+ ]
2290
+ # MC: ClientboundMerchantOffersPacket
2291
+ packet_trade_list:
2292
+ windowId: ContainerID
2293
+ ## https://github.com/extremeheat/extracted_minecraft_data/blob/client1.20.5/client/net/minecraft/world/item/trading/MerchantOffer.java#L210
2294
+ trades: []varint
2295
+ inputItem1:
2296
+ itemId: varint
2297
+ itemCount: varint
2298
+ components: ExactComponentMatcher
2299
+ outputItem: Slot
2300
+ inputItem2?:
2301
+ itemId: varint
2302
+ itemCount: varint
2303
+ components: ExactComponentMatcher
2304
+ tradeDisabled: bool
2305
+ nbTradeUses: i32
2306
+ maximumNbTradeUses: i32
2307
+ xp: i32
2308
+ specialPrice: i32
2309
+ priceMultiplier: f32
2310
+ demand: i32
2311
+ villagerLevel: varint
2312
+ experience: varint
2313
+ isRegularVillager: bool
2314
+ canRestock: bool
2315
+ # MC: ClientboundMoveEntityPacket.Pos
2316
+ packet_rel_entity_move:
2317
+ entityId: varint
2318
+ dX: i16
2319
+ dY: i16
2320
+ dZ: i16
2321
+ onGround: bool
2322
+ # MC: ClientboundMoveEntityPacket.PosRot
2323
+ packet_entity_move_look:
2324
+ entityId: varint
2325
+ dX: i16
2326
+ dY: i16
2327
+ dZ: i16
2328
+ yaw: i8
2329
+ pitch: i8
2330
+ onGround: bool
2331
+ # MC: ClientboundMoveMinecartPacket
2332
+ packet_move_minecart: # 1.21.3
2333
+ entityId: varint
2334
+ steps: []varint
2335
+ position: vec3f
2336
+ velocity: vec3f
2337
+ yaw: f32
2338
+ pitch: f32
2339
+ weight: f32
2340
+ # MC: ClientboundMoveEntityPacket.Rot
2341
+ packet_entity_look:
2342
+ entityId: varint
2343
+ yaw: i8
2344
+ pitch: i8
2345
+ onGround: bool
2346
+ # MC: ClientboundMoveVehiclePacket
2347
+ packet_vehicle_move:
2348
+ x: f64
2349
+ y: f64
2350
+ z: f64
2351
+ yaw: f32
2352
+ pitch: f32
2353
+ # MC: ClientboundOpenBookPacket
2354
+ packet_open_book:
2355
+ hand: varint
2356
+ # MC: ClientboundOpenScreenPacket
2357
+ packet_open_window:
2358
+ windowId: varint
2359
+ inventoryType: varint
2360
+ windowTitle: anonymousNbt
2361
+ # MC: ClientboundOpenSignEditorPacket
2362
+ packet_open_sign_entity:
2363
+ location: position
2364
+ isFrontText: bool
2365
+ # MC: ClientboundPingPacket
2366
+ packet_ping:
2367
+ id: i32
2368
+ # MC: ClientboundPongResponsePacket
2369
+ packet_ping_response:
2370
+ id: i64
2371
+ # MC: ClientboundPlaceGhostRecipePacket
2372
+ packet_craft_recipe_response:
2373
+ windowId: ContainerID
2374
+ recipeDisplay: RecipeDisplay
2375
+ # MC: ClientboundPlayerAbilitiesPacket
2376
+ packet_abilities:
2377
+ flags: i8
2378
+ flyingSpeed: f32
2379
+ walkingSpeed: f32
2380
+ # MC: ClientboundPlayerChatPacket
2381
+ packet_player_chat:
2382
+ globalIndex: varint
2383
+ senderUuid: UUID
2384
+ index: varint
2385
+ signature?: [
2386
+ "buffer",
2387
+ {
2388
+ "count": 256
2389
+ }
2390
+ ]
2391
+ plainMessage: string
2392
+ timestamp: i64
2393
+ salt: i64
2394
+ previousMessages: previousMessages
2395
+ unsignedChatContent?: anonymousNbt
2396
+ filterType: varint
2397
+ filterTypeMask: filterType ?
2398
+ if 2: i64[]varint
2399
+ default: void
2400
+ type: ChatTypesHolder
2401
+ networkName: anonymousNbt
2402
+ networkTargetName?: anonymousNbt
2403
+ # MC: ClientboundPlayerCombatEndPacket
2404
+ packet_end_combat_event:
2405
+ duration: varint
2406
+ # MC: ClientboundPlayerCombatEnterPacket
2407
+ packet_enter_combat_event:
2408
+ # Empty
2409
+ # MC: ClientboundPlayerCombatKillPacket
2410
+ packet_death_combat_event:
2411
+ playerId: varint
2412
+ message: anonymousNbt
2413
+ # MC: ClientboundPlayerInfoRemovePacket
2414
+ packet_player_remove:
2415
+ players: UUID[]varint
2416
+ # MC: ClientboundPlayerInfoUpdatePacket
2417
+ packet_player_info:
2418
+ ## ClientboundPlayerInfoUpdatePacket.java#L160
2419
+ action: ["bitflags", {
2420
+ "type": "u8",
2421
+ "flags": [
2422
+ "add_player",
2423
+ "initialize_chat",
2424
+ "update_game_mode",
2425
+ "update_listed",
2426
+ "update_latency",
2427
+ "update_display_name",
2428
+ "update_hat",
2429
+ "update_list_order"
2430
+ ]
2431
+ }]
2432
+ data: []varint
2433
+ uuid: UUID
2434
+ player: ../action/add_player ?
2435
+ if true: game_profile_name_prop
2436
+ default: void
2437
+ chatSession: ../action/initialize_chat ?
2438
+ if true: chat_session
2439
+ default: void
2440
+ gamemode: ../action/update_game_mode ?
2441
+ if true: varint
2442
+ default: void
2443
+ listed: ../action/update_listed ?
2444
+ if true: varint
2445
+ default: void
2446
+ latency: ../action/update_latency ?
2447
+ if true: varint
2448
+ default: void
2449
+ displayName: ../action/update_display_name ?
2450
+ if true: ["option", "anonymousNbt"]
2451
+ default: void
2452
+ listPriority: ../action/update_list_order ?
2453
+ if true: varint
2454
+ default: void
2455
+ showHat: ../action/update_hat ?
2456
+ if true: bool
2457
+ default: void
2458
+
2459
+ # MC: ClientboundPlayerLookAtPacket
2460
+ packet_face_player:
2461
+ feet_eyes: varint
2462
+ x: f64
2463
+ y: f64
2464
+ z: f64
2465
+ isEntity: bool
2466
+ entityId: isEntity ?
2467
+ if true: varint
2468
+ default: void
2469
+ entity_feet_eyes: isEntity ?
2470
+ if true: varint
2471
+ default: void
2472
+
2473
+ # https://github.com/extremeheat/extracted_minecraft_data/blob/client1.21.2/client/net/minecraft/world/entity/Relative.java#L82
2474
+ PositionUpdateRelatives: ["bitflags", {
2475
+ "type": "u32",
2476
+ "flags": ["x", "y", "z", "yaw", "pitch", "dx", "dy", "dz", "yawDelta"]
2477
+ }]
2478
+ # MC: ClientboundPlayerPositionPacket
2479
+ packet_position:
2480
+ teleportId: varint
2481
+ x: f64
2482
+ y: f64
2483
+ z: f64
2484
+ dx: f64
2485
+ dy: f64
2486
+ dz: f64
2487
+ yaw: f32
2488
+ pitch: f32
2489
+ flags: PositionUpdateRelatives
2490
+ # MC: ClientboundPlayerRotationPacket
2491
+ packet_player_rotation:
2492
+ yaw: f32
2493
+ relativeYaw: bool
2494
+ pitch: f32
2495
+ relativePitch: bool
2496
+
2497
+ # MC: ClientboundRecipeBookAddPacket
2498
+ packet_recipe_book_add:
2499
+ entries: []varint
2500
+ # RecipeDisplayEntry
2501
+ recipe:
2502
+ displayId: varint
2503
+ display: RecipeDisplay
2504
+ group: optvarint
2505
+ # This ID corresponds to the "recipe_book_category" registry
2506
+ category: varint =>
2507
+ - crafting_building_blocks
2508
+ - crafting_redstone
2509
+ - crafting_equipment
2510
+ - crafting_misc
2511
+ - furnace_food
2512
+ - furnace_blocks
2513
+ - furnace_misc
2514
+ - blast_furnace_blocks
2515
+ - blast_furnace_misc
2516
+ - smoker_food
2517
+ - stonecutter
2518
+ - smithing
2519
+ - campfire
2520
+ craftingRequirements?: IDSet[]varint
2521
+ flags: ["bitflags", {
2522
+ "type": "u8",
2523
+ "flags": ["notification", "highlight"]
2524
+ }]
2525
+ replace: bool
2526
+ # MC: ClientboundRecipeBookRemovePacket
2527
+ packet_recipe_book_remove:
2528
+ recipeIds: varint[]varint
2529
+ # MC: ClientboundRecipeBookSettingsPacket
2530
+ RecipeBookSetting:
2531
+ open: bool
2532
+ filtering: bool
2533
+ packet_recipe_book_settings:
2534
+ crafting: RecipeBookSetting
2535
+ furnace: RecipeBookSetting
2536
+ blast: RecipeBookSetting
2537
+ smoker: RecipeBookSetting
2538
+ # MC: ClientboundRemoveEntitiesPacket
2539
+ packet_entity_destroy:
2540
+ entityIds: varint[]varint
2541
+ # MC: ClientboundRemoveMobEffectPacket
2542
+ packet_remove_entity_effect:
2543
+ entityId: varint
2544
+ effectId: varint
2545
+ # MC: ClientboundResetScorePacket
2546
+ packet_reset_score:
2547
+ entity_name: string
2548
+ objective_name?: string
2549
+ ## (remove_resource_pack is common)
2550
+ # MC: ClientboundRespawnPacket
2551
+ packet_respawn:
2552
+ worldState: SpawnInfo
2553
+ # Bit field: 0b1 - KEEP_ATTRIBUTE_MODIFIERS, 0b10 - KEEP_ENTITY_DATA
2554
+ copyMetadata: u8
2555
+ # MC: ClientboundRotateHeadPacket
2556
+ packet_entity_head_rotation:
2557
+ entityId: varint
2558
+ headYaw: i8
2559
+ # MC: ClientboundSectionBlocksUpdatePacket
2560
+ packet_multi_block_change:
2561
+ chunkCoordinates: [ "bitfield", [
2562
+ { "name": "x", "size": 22, "signed": true },
2563
+ { "name": "z", "size": 22, "signed": true },
2564
+ { "name": "y", "size": 20, "signed": true }
2565
+ ]]
2566
+ records: varint[]varint
2567
+ # MC: ClientboundSelectAdvancementsTabPacket
2568
+ packet_select_advancement_tab:
2569
+ id?: string
2570
+ # MC: ClientboundServerDataPacket
2571
+ packet_server_data:
2572
+ motd: anonymousNbt
2573
+ iconBytes?: ByteArray
2574
+ # MC: ClientboundSetActionBarTextPacket
2575
+ packet_action_bar:
2576
+ text: anonymousNbt
2577
+ # MC: ClientboundSetBorderCenterPacket
2578
+ packet_world_border_center:
2579
+ x: f64
2580
+ z: f64
2581
+ # MC: ClientboundSetBorderLerpSizePacket
2582
+ packet_world_border_lerp_size:
2583
+ oldDiameter: f64
2584
+ newDiameter: f64
2585
+ speed: varint
2586
+ # MC: ClientboundSetBorderSizePacket
2587
+ packet_world_border_size:
2588
+ diameter: f64
2589
+ # MC: ClientboundSetBorderWarningDelayPacket
2590
+ packet_world_border_warning_delay:
2591
+ warningTime: varint
2592
+ # MC: ClientboundSetBorderWarningDistancePacket
2593
+ packet_world_border_warning_reach:
2594
+ warningBlocks: varint
2595
+ # MC: ClientboundSetCameraPacket
2596
+ packet_camera:
2597
+ cameraId: varint
2598
+ # MC: ClientboundSetChunkCacheCenterPacket
2599
+ packet_update_view_position:
2600
+ chunkX: varint
2601
+ chunkZ: varint
2602
+ # MC: ClientboundSetChunkCacheRadiusPacket
2603
+ packet_update_view_distance:
2604
+ viewDistance: varint
2605
+ # MC: ClientboundSetCursorItemPacket
2606
+ packet_set_cursor_item:
2607
+ contents: Slot
2608
+ # MC: ClientboundSetDefaultSpawnPositionPacket
2609
+ packet_spawn_position: RespawnData
2610
+ # MC: ClientboundSetDisplayObjectivePacket
2611
+ packet_scoreboard_display_objective:
2612
+ position: varint
2613
+ name: string
2614
+ # MC: ClientboundSetEntityDataPacket
2615
+ packet_entity_metadata:
2616
+ entityId: varint
2617
+ metadata: entityMetadata
2618
+ # MC: ClientboundSetEntityLinkPacket
2619
+ packet_attach_entity:
2620
+ entityId: i32
2621
+ vehicleId: i32
2622
+ # MC: ClientboundSetEntityMotionPacket
2623
+ packet_entity_velocity:
2624
+ entityId: varint
2625
+ velocity: lpVec3
2626
+ # MC: ClientboundSetEquipmentPacket
2627
+ packet_entity_equipment:
2628
+ entityId: varint
2629
+ equipments: [
2630
+ "topBitSetTerminatedArray",
2631
+ {
2632
+ "type": [
2633
+ "container",
2634
+ [
2635
+ {
2636
+ "name": "slot",
2637
+ "type": "i8"
2638
+ },
2639
+ {
2640
+ "name": "item",
2641
+ "type": "Slot"
2642
+ }
2643
+ ]
2644
+ ]
2645
+ }
2646
+ ]
2647
+ # MC: ClientboundSetExperiencePacket
2648
+ packet_experience:
2649
+ experienceBar: f32
2650
+ level: varint
2651
+ totalExperience: varint
2652
+ # MC: ClientboundSetHealthPacket
2653
+ packet_update_health:
2654
+ health: f32
2655
+ food: varint
2656
+ foodSaturation: f32
2657
+ # MC: ClientboundSetHeldSlotPacket
2658
+ packet_held_item_slot:
2659
+ slot: varint
2660
+ # MC: ClientboundSetObjectivePacket
2661
+ packet_scoreboard_objective:
2662
+ name: string
2663
+ action: i8
2664
+ displayText: action ?
2665
+ if 0: anonymousNbt
2666
+ if 2: anonymousNbt
2667
+ default: void
2668
+ type: action ?
2669
+ if 0: varint
2670
+ if 2: varint
2671
+ default: void
2672
+ number_format: action ?
2673
+ if 0: [
2674
+ "option",
2675
+ "varint"
2676
+ ]
2677
+ if 2: [
2678
+ "option",
2679
+ "varint"
2680
+ ]
2681
+ default: void
2682
+ styling: action ?
2683
+ if 0: number_format ?
2684
+ if 1: anonymousNbt
2685
+ if 2: anonymousNbt
2686
+ default: void
2687
+ if 2: number_format ?
2688
+ if 1: anonymousNbt
2689
+ if 2: anonymousNbt
2690
+ default: void
2691
+ default: void
2692
+ # MC: ClientboundSetPassengersPacket
2693
+ packet_set_passengers:
2694
+ entityId: varint
2695
+ passengers: varint[]varint
2696
+ # MC: ClientboundSetPlayerInventoryPacket
2697
+ packet_set_player_inventory:
2698
+ slotId: varint
2699
+ contents: Slot
2700
+ # MC: ClientboundSetPlayerTeamPacket
2701
+ packet_teams:
2702
+ team: string
2703
+ mode: i8 =>
2704
+ - add
2705
+ - remove
2706
+ - change
2707
+ - join
2708
+ - leave
2709
+ _: mode ?
2710
+ if add or change:
2711
+ name: anonymousNbt
2712
+ flags: ["bitflags", {
2713
+ "type": "u8",
2714
+ "flags": ["friendly_fire", "see_friendly_invisible"]
2715
+ }]
2716
+ nameTagVisibility: varint =>
2717
+ - always
2718
+ - never
2719
+ - hide_for_other_teams
2720
+ - hide_for_own_team
2721
+ collisionRule: varint =>
2722
+ - always
2723
+ - never
2724
+ - push_other_teams
2725
+ - push_own_team
2726
+ formatting: varint
2727
+ prefix: anonymousNbt
2728
+ suffix: anonymousNbt
2729
+ default: void
2730
+ players: mode ?
2731
+ if add or join or leave: string[]varint
2732
+ default: void
2733
+ # MC: ClientboundSetScorePacket
2734
+ packet_scoreboard_score:
2735
+ itemName: string
2736
+ scoreName: string
2737
+ value: varint
2738
+ display_name?: anonymousNbt
2739
+ number_format?: varint
2740
+ styling: number_format ?
2741
+ if 1: anonymousNbt
2742
+ if 2: anonymousNbt
2743
+ default: void
2744
+ # MC: ClientboundSetSimulationDistancePacket
2745
+ packet_simulation_distance:
2746
+ distance: varint
2747
+ # MC: ClientboundSetSubtitleTextPacket
2748
+ packet_set_title_subtitle:
2749
+ text: anonymousNbt
2750
+ # MC: ClientboundSetTimePacket
2751
+ packet_update_time:
2752
+ age: i64
2753
+ time: i64
2754
+ tickDayTime: bool
2755
+ # MC: ClientboundSetTitleTextPacket
2756
+ packet_set_title_text:
2757
+ text: anonymousNbt
2758
+ # MC: ClientboundSetTitlesAnimationPacket
2759
+ packet_set_title_time:
2760
+ fadeIn: i32
2761
+ stay: i32
2762
+ fadeOut: i32
2763
+ # MC: ClientboundSoundEntityPacket
2764
+ packet_entity_sound_effect:
2765
+ sound: ItemSoundHolder
2766
+ soundCategory: soundSource
2767
+ entityId: varint
2768
+ volume: f32
2769
+ pitch: f32
2770
+ seed: i64
2771
+ # MC: ClientboundSoundPacket
2772
+ packet_sound_effect:
2773
+ sound: ItemSoundHolder
2774
+ soundCategory: soundSource
2775
+ x: i32
2776
+ y: i32
2777
+ z: i32
2778
+ volume: f32
2779
+ pitch: f32
2780
+ seed: i64
2781
+ # MC: ClientboundStartConfigurationPacket
2782
+ packet_start_configuration:
2783
+ # Empty
2784
+ # MC: ClientboundStopSoundPacket
2785
+ packet_stop_sound:
2786
+ flags: i8
2787
+ source: flags ?
2788
+ if 1: varint
2789
+ if 3: varint
2790
+ default: void
2791
+ sound: flags ?
2792
+ if 2: string
2793
+ if 3: string
2794
+ default: void
2795
+ ## (Store Cookie is Common)
2796
+ # MC: ClientboundSystemChatPacket
2797
+ packet_system_chat:
2798
+ content: anonymousNbt
2799
+ isActionBar: bool
2800
+ # MC: ClientboundTabListPacket
2801
+ packet_playerlist_header:
2802
+ header: anonymousNbt
2803
+ footer: anonymousNbt
2804
+ # MC: ClientboundTagQueryPacket
2805
+ packet_nbt_query_response:
2806
+ transactionId: varint
2807
+ nbt: anonOptionalNbt
2808
+ # MC: ClientboundTakeItemEntityPacket
2809
+ packet_collect:
2810
+ collectedEntityId: varint
2811
+ collectorEntityId: varint
2812
+ pickupItemCount: varint
2813
+ # MC: ClientboundTeleportEntityPacket
2814
+ packet_entity_teleport:
2815
+ entityId: varint
2816
+ x: f64
2817
+ y: f64
2818
+ z: f64
2819
+ yaw: i8
2820
+ pitch: i8
2821
+ onGround: bool
2822
+ # MC: ClientboundTestInstanceBlockStatusPacket
2823
+ packet_test_instance_block_status:
2824
+ status: anonymousNbt
2825
+ size?: vec3i
2826
+ # MC: ClientboundTickingStatePacket
2827
+ packet_set_ticking_state:
2828
+ tick_rate: f32
2829
+ is_frozen: bool
2830
+ # MC: ClientboundTickingStepPacket
2831
+ packet_step_tick:
2832
+ tick_steps: varint
2833
+ ## (Transfer is common)
2834
+ # MC: ClientboundUpdateAdvancementsPacket
2835
+ packet_advancements:
2836
+ reset: bool
2837
+ advancementMapping: []varint
2838
+ key: string
2839
+ value:
2840
+ parentId?: string
2841
+ displayData?:
2842
+ title: anonymousNbt
2843
+ description: anonymousNbt
2844
+ icon: Slot
2845
+ frameType: varint
2846
+ flags: ["bitfield", [
2847
+ { "name": "unused", "size": 29, "signed": false },
2848
+ { "name": "hidden", "size": 1, "signed": false },
2849
+ { "name": "show_toast", "size": 1, "signed": false },
2850
+ { "name": "has_background_texture", "size": 1, "signed": false }
2851
+ ]]
2852
+ backgroundTexture: flags/has_background_texture ?
2853
+ if 1: string
2854
+ default: void
2855
+ xCord: f32
2856
+ yCord: f32
2857
+ requirements: []varint
2858
+ _: string[]varint
2859
+ sendsTelemtryData: bool
2860
+ identifiers: string[]varint
2861
+ progressMapping: []varint
2862
+ key: string
2863
+ value: []varint
2864
+ criterionIdentifier: string
2865
+ criterionProgress?: i64
2866
+ showAdvancements: bool
2867
+ # MC: ClientboundUpdateAttributesPacket
2868
+ packet_entity_update_attributes:
2869
+ entityId: varint
2870
+ properties: []varint
2871
+ key: varint =>
2872
+ - generic.armor
2873
+ - generic.armor_toughness
2874
+ - generic.attack_damage
2875
+ - generic.attack_knockback
2876
+ - generic.attack_speed
2877
+ - player.block_break_speed
2878
+ - player.block_interaction_range
2879
+ - burning_time
2880
+ - camera_distance
2881
+ - explosion_knockback_resistance
2882
+ - player.entity_interaction_range
2883
+ - generic.fall_damage_multiplier
2884
+ - generic.flying_speed
2885
+ - generic.follow_range
2886
+ - generic.gravity
2887
+ - generic.jump_strength
2888
+ - generic.knockback_resistance
2889
+ - generic.luck
2890
+ - generic.max_absorption
2891
+ - generic.max_health
2892
+ - generic.movement_speed
2893
+ - generic.safe_fall_distance
2894
+ - generic.scale
2895
+ - zombie.spawn_reinforcements
2896
+ - generic.step_height
2897
+ - submerged_mining_speed
2898
+ - sweeping_damage_ratio
2899
+ - tempt_range
2900
+ - water_movement_efficiency
2901
+ - waypoint_transmit_range
2902
+ - waypoint_receive_range
2903
+ value: f64
2904
+ modifiers: []varint
2905
+ uuid: string
2906
+ amount: f64
2907
+ operation: i8
2908
+ # MC: ClientboundUpdateMobEffectPacket
2909
+ packet_entity_effect:
2910
+ entityId: varint
2911
+ effectId: varint
2912
+ amplifier: varint
2913
+ duration: varint
2914
+ # a bitfield of 0x01 for ambient, 0x02 for show particles
2915
+ # flags: ["bitfield", [
2916
+ # { "name": "unused", "size": 4 },
2917
+ # { "name": "ambient", "size": 1 },
2918
+ # { "name": "showParticles", "size": 1 },
2919
+ # { "name": "showIcon", "size": 1 },
2920
+ # { "name": "blend", "size": 1 }
2921
+ # ]]
2922
+ flags: u8
2923
+ # MC: ClientboundUpdateRecipesPacket
2924
+ packet_declare_recipes:
2925
+ recipes: []varint
2926
+ name: string
2927
+ items: varint[]varint
2928
+ stoneCutterRecipes: []varint
2929
+ input: IDSet
2930
+ slotDisplay: SlotDisplay
2931
+
2932
+ # MC: ClientboundUpdateTagsPacket
2933
+ packet_tags:
2934
+ tags: []varint
2935
+ tagType: string
2936
+ tags: tags
2937
+ # MC: ClientboundProjectilePowerPacket
2938
+ packet_set_projectile_power:
2939
+ id: varint
2940
+ accelerationPower: f64
2941
+ ## (ClientboundCustomReportDetailsPacket, ClientboundServerLinksPacket is common)
2942
+ # MC: ClientboundTrackedWaypointPacket
2943
+ packet_tracked_waypoint:
2944
+ operation: varint =>
2945
+ 0: track
2946
+ 1: untrack
2947
+ 2: update
2948
+ waypoint:
2949
+ hasUUID: bool
2950
+ _: hasUUID ?
2951
+ if true:
2952
+ uuid: UUID
2953
+ if false:
2954
+ id: string
2955
+ icon:
2956
+ style: string
2957
+ color?:
2958
+ red: u8
2959
+ green: u8
2960
+ blue: u8
2961
+ type: varint =>
2962
+ 0: empty
2963
+ 1: vec3i
2964
+ 2: chunk
2965
+ 3: azimuth
2966
+ data: type ?
2967
+ if vec3i: vec3i
2968
+ if chunk:
2969
+ chunkX: varint
2970
+ chunkZ: varint
2971
+ if azimuth: f32
2972
+ ## (clear_dialog is common)
2973
+ # MC: ClientboundShowDialogGamePacket
2974
+ packet_show_dialog:
2975
+ dialog: ["registryEntryHolder", { "baseName": "dialog", "otherwise": { "name": "data", "type": "anonymousNbt" } }]
2976
+ packet:
2977
+ name: varint =>
2978
+ - bundle_delimiter
2979
+ - spawn_entity
2980
+ - animation
2981
+ - statistics
2982
+ - acknowledge_player_digging
2983
+ - block_break_animation
2984
+ - tile_entity_data
2985
+ - block_action
2986
+ - block_change
2987
+ - boss_bar
2988
+ - difficulty
2989
+ - chunk_batch_finished
2990
+ - chunk_batch_start
2991
+ - chunk_biomes
2992
+ - clear_titles
2993
+ - tab_complete
2994
+ - declare_commands
2995
+ - close_window
2996
+ - window_items
2997
+ - craft_progress_bar
2998
+ - set_slot
2999
+ - cookie_request
3000
+ - set_cooldown
3001
+ - chat_suggestions
3002
+ - custom_payload
3003
+ - damage_event
3004
+ - debug_block_value
3005
+ - debug_chunk_value
3006
+ - debug_entity_value
3007
+ - debug_event
3008
+ - debug_sample
3009
+ - hide_message
3010
+ - kick_disconnect
3011
+ - profileless_chat
3012
+ - entity_status
3013
+ - sync_entity_position
3014
+ - explosion
3015
+ - unload_chunk
3016
+ - game_state_change
3017
+ - game_test_highlight_pos
3018
+ - open_horse_window
3019
+ - hurt_animation
3020
+ - initialize_world_border
3021
+ - keep_alive
3022
+ - map_chunk
3023
+ - world_event
3024
+ - world_particles
3025
+ - update_light
3026
+ - login
3027
+ - map
3028
+ - trade_list
3029
+ - rel_entity_move
3030
+ - entity_move_look
3031
+ - move_minecart
3032
+ - entity_look
3033
+ - vehicle_move
3034
+ - open_book
3035
+ - open_window
3036
+ - open_sign_entity
3037
+ - ping
3038
+ - ping_response
3039
+ - craft_recipe_response
3040
+ - abilities
3041
+ - player_chat
3042
+ - end_combat_event
3043
+ - enter_combat_event
3044
+ - death_combat_event
3045
+ - player_remove
3046
+ - player_info
3047
+ - face_player
3048
+ - position
3049
+ - player_rotation
3050
+ - recipe_book_add
3051
+ - recipe_book_remove
3052
+ - recipe_book_settings
3053
+ - entity_destroy
3054
+ - remove_entity_effect
3055
+ - reset_score
3056
+ - remove_resource_pack
3057
+ - add_resource_pack
3058
+ - respawn
3059
+ - entity_head_rotation
3060
+ - multi_block_change
3061
+ - select_advancement_tab
3062
+ - server_data
3063
+ - action_bar
3064
+ - world_border_center
3065
+ - world_border_lerp_size
3066
+ - world_border_size
3067
+ - world_border_warning_delay
3068
+ - world_border_warning_reach
3069
+ - camera
3070
+ - update_view_position
3071
+ - update_view_distance
3072
+ - set_cursor_item
3073
+ - spawn_position
3074
+ - scoreboard_display_objective
3075
+ - entity_metadata
3076
+ - attach_entity
3077
+ - entity_velocity
3078
+ - entity_equipment
3079
+ - experience
3080
+ - update_health
3081
+ - held_item_slot
3082
+ - scoreboard_objective
3083
+ - set_passengers
3084
+ - set_player_inventory
3085
+ - teams
3086
+ - scoreboard_score
3087
+ - simulation_distance
3088
+ - set_title_subtitle
3089
+ - update_time
3090
+ - set_title_text
3091
+ - set_title_time
3092
+ - entity_sound_effect
3093
+ - sound_effect
3094
+ - start_configuration
3095
+ - stop_sound
3096
+ - store_cookie
3097
+ - system_chat
3098
+ - playerlist_header
3099
+ - nbt_query_response
3100
+ - collect
3101
+ - entity_teleport
3102
+ - test_instance_block_status
3103
+ - set_ticking_state
3104
+ - step_tick
3105
+ - transfer
3106
+ - advancements
3107
+ - entity_update_attributes
3108
+ - entity_effect
3109
+ - declare_recipes
3110
+ - tags
3111
+ - set_projectile_power
3112
+ - custom_report_details
3113
+ - server_links
3114
+ - tracked_waypoint
3115
+ - clear_dialog
3116
+ - show_dialog
3117
+ params: name ?
3118
+ if bundle_delimiter: void
3119
+ if spawn_entity: packet_spawn_entity
3120
+ if animation: packet_animation
3121
+ if statistics: packet_statistics
3122
+ if acknowledge_player_digging: packet_acknowledge_player_digging
3123
+ if block_break_animation: packet_block_break_animation
3124
+ if tile_entity_data: packet_tile_entity_data
3125
+ if block_action: packet_block_action
3126
+ if block_change: packet_block_change
3127
+ if boss_bar: packet_boss_bar
3128
+ if difficulty: packet_difficulty
3129
+ if chunk_batch_finished: packet_chunk_batch_finished
3130
+ if chunk_batch_start: packet_chunk_batch_start
3131
+ if chunk_biomes: packet_chunk_biomes
3132
+ if clear_titles: packet_clear_titles
3133
+ if tab_complete: packet_tab_complete
3134
+ if declare_commands: packet_declare_commands
3135
+ if close_window: packet_close_window
3136
+ if window_items: packet_window_items
3137
+ if craft_progress_bar: packet_craft_progress_bar
3138
+ if set_slot: packet_set_slot
3139
+ if cookie_request: packet_common_cookie_request
3140
+ if set_cooldown: packet_set_cooldown
3141
+ if chat_suggestions: packet_chat_suggestions
3142
+ if custom_payload: packet_custom_payload
3143
+ if damage_event: packet_damage_event
3144
+ if debug_block_value: packet_debug_block_value
3145
+ if debug_chunk_value: packet_debug_chunk_value
3146
+ if debug_entity_value: packet_debug_entity_value
3147
+ if debug_event: packet_debug_event
3148
+ if debug_sample: packet_debug_sample
3149
+ if hide_message: packet_hide_message
3150
+ if kick_disconnect: packet_kick_disconnect
3151
+ if profileless_chat: packet_profileless_chat
3152
+ if entity_status: packet_entity_status
3153
+ if sync_entity_position: packet_sync_entity_position
3154
+ if explosion: packet_explosion
3155
+ if unload_chunk: packet_unload_chunk
3156
+ if game_state_change: packet_game_state_change
3157
+ if game_test_highlight_pos: packet_game_test_highlight_pos
3158
+ if open_horse_window: packet_open_horse_window
3159
+ if hurt_animation: packet_hurt_animation
3160
+ if initialize_world_border: packet_initialize_world_border
3161
+ if keep_alive: packet_keep_alive
3162
+ if map_chunk: packet_map_chunk
3163
+ if world_event: packet_world_event
3164
+ if world_particles: packet_world_particles
3165
+ if update_light: packet_update_light
3166
+ if login: packet_login
3167
+ if map: packet_map
3168
+ if trade_list: packet_trade_list
3169
+ if rel_entity_move: packet_rel_entity_move
3170
+ if entity_move_look: packet_entity_move_look
3171
+ if move_minecart: packet_move_minecart
3172
+ if entity_look: packet_entity_look
3173
+ if vehicle_move: packet_vehicle_move
3174
+ if open_book: packet_open_book
3175
+ if open_window: packet_open_window
3176
+ if open_sign_entity: packet_open_sign_entity
3177
+ if ping: packet_ping
3178
+ if ping_response: packet_ping_response
3179
+ if craft_recipe_response: packet_craft_recipe_response
3180
+ if abilities: packet_abilities
3181
+ if player_chat: packet_player_chat
3182
+ if end_combat_event: packet_end_combat_event
3183
+ if enter_combat_event: packet_enter_combat_event
3184
+ if death_combat_event: packet_death_combat_event
3185
+ if player_remove: packet_player_remove
3186
+ if player_info: packet_player_info
3187
+ if face_player: packet_face_player
3188
+ if position: packet_position
3189
+ if player_rotation: packet_player_rotation
3190
+ if recipe_book_add: packet_recipe_book_add
3191
+ if recipe_book_remove: packet_recipe_book_remove
3192
+ if recipe_book_settings: packet_recipe_book_settings
3193
+ if entity_destroy: packet_entity_destroy
3194
+ if remove_entity_effect: packet_remove_entity_effect
3195
+ if reset_score: packet_reset_score
3196
+ if remove_resource_pack: packet_common_remove_resource_pack
3197
+ if add_resource_pack: packet_common_add_resource_pack
3198
+ if respawn: packet_respawn
3199
+ if entity_head_rotation: packet_entity_head_rotation
3200
+ if multi_block_change: packet_multi_block_change
3201
+ if select_advancement_tab: packet_select_advancement_tab
3202
+ if server_data: packet_server_data
3203
+ if action_bar: packet_action_bar
3204
+ if world_border_center: packet_world_border_center
3205
+ if world_border_lerp_size: packet_world_border_lerp_size
3206
+ if world_border_size: packet_world_border_size
3207
+ if world_border_warning_delay: packet_world_border_warning_delay
3208
+ if world_border_warning_reach: packet_world_border_warning_reach
3209
+ if camera: packet_camera
3210
+ if update_view_position: packet_update_view_position
3211
+ if update_view_distance: packet_update_view_distance
3212
+ if set_cursor_item: packet_set_cursor_item
3213
+ if held_item_slot: packet_held_item_slot
3214
+ if spawn_position: packet_spawn_position
3215
+ if scoreboard_display_objective: packet_scoreboard_display_objective
3216
+ if entity_metadata: packet_entity_metadata
3217
+ if attach_entity: packet_attach_entity
3218
+ if entity_velocity: packet_entity_velocity
3219
+ if entity_equipment: packet_entity_equipment
3220
+ if experience: packet_experience
3221
+ if update_health: packet_update_health
3222
+ if scoreboard_objective: packet_scoreboard_objective
3223
+ if set_passengers: packet_set_passengers
3224
+ if set_player_inventory: packet_set_player_inventory
3225
+ if teams: packet_teams
3226
+ if scoreboard_score: packet_scoreboard_score
3227
+ if simulation_distance: packet_simulation_distance
3228
+ if set_title_subtitle: packet_set_title_subtitle
3229
+ if update_time: packet_update_time
3230
+ if set_title_text: packet_set_title_text
3231
+ if set_title_time: packet_set_title_time
3232
+ if entity_sound_effect: packet_entity_sound_effect
3233
+ if sound_effect: packet_sound_effect
3234
+ if start_configuration: packet_start_configuration
3235
+ if stop_sound: packet_stop_sound
3236
+ if store_cookie: packet_common_store_cookie
3237
+ if system_chat: packet_system_chat
3238
+ if playerlist_header: packet_playerlist_header
3239
+ if nbt_query_response: packet_nbt_query_response
3240
+ if collect: packet_collect
3241
+ if entity_teleport: packet_entity_teleport
3242
+ if test_instance_block_status: packet_test_instance_block_status
3243
+ if set_ticking_state: packet_set_ticking_state
3244
+ if step_tick: packet_step_tick
3245
+ if transfer: packet_common_transfer
3246
+ if advancements: packet_advancements
3247
+ if entity_update_attributes: packet_entity_update_attributes
3248
+ if entity_effect: packet_entity_effect
3249
+ if declare_recipes: packet_declare_recipes
3250
+ if tags: packet_tags
3251
+ if set_projectile_power: packet_set_projectile_power
3252
+ if custom_report_details: packet_common_custom_report_details
3253
+ if server_links: packet_common_server_links
3254
+ if tracked_waypoint: packet_tracked_waypoint
3255
+ if clear_dialog: packet_common_clear_dialog
3256
+ if show_dialog: packet_show_dialog
3257
+ ^play.toServer.types:
3258
+ # MC: ServerboundAcceptTeleportationPacket
3259
+ packet_teleport_confirm:
3260
+ teleportId: varint
3261
+ # MC: ServerboundBlockEntityTagQueryPacket
3262
+ packet_query_block_nbt:
3263
+ transactionId: varint
3264
+ location: position
3265
+ # MC: ServerboundSelectBundleItemPacket
3266
+ packet_select_bundle_item:
3267
+ slotId: varint
3268
+ selectedItemIndex: varint
3269
+ # MC: ServerboundChangeDifficultyPacket
3270
+ packet_set_difficulty:
3271
+ newDifficulty: varint =>
3272
+ 0: peaceful
3273
+ 1: easy
3274
+ 2: normal
3275
+ 3: hard
3276
+ # MC: ServerboundChangeGameModePacket
3277
+ packet_change_gamemode:
3278
+ mode: varint =>
3279
+ 0: survival
3280
+ 1: creative
3281
+ 2: adventure
3282
+ 3: spectator
3283
+ # MC: ServerboundChatAckPacket
3284
+ packet_message_acknowledgement:
3285
+ count: varint
3286
+ # MC: ServerboundChatCommandPacket
3287
+ packet_chat_command:
3288
+ command: string
3289
+ # MC: ServerboundChatCommandSignedPacket
3290
+ packet_chat_command_signed:
3291
+ command: string
3292
+ timestamp: i64
3293
+ salt: i64
3294
+ argumentSignatures: []varint
3295
+ argumentName: string
3296
+ signature: [
3297
+ "buffer",
3298
+ {
3299
+ "count": 256
3300
+ }
3301
+ ]
3302
+ messageCount: varint
3303
+ acknowledged: [
3304
+ "buffer",
3305
+ {
3306
+ "count": 3
3307
+ }
3308
+ ]
3309
+ checksum: i8
3310
+ # MC: ServerboundChatPacket
3311
+ packet_chat_message:
3312
+ message: string
3313
+ timestamp: i64
3314
+ salt: i64
3315
+ signature?: [
3316
+ "buffer",
3317
+ {
3318
+ "count": 256
3319
+ }
3320
+ ]
3321
+ offset: varint
3322
+ acknowledged: [
3323
+ "buffer",
3324
+ {
3325
+ "count": 3
3326
+ }
3327
+ ]
3328
+ checksum: u8
3329
+ # MC: ServerboundChatSessionUpdatePacket
3330
+ packet_chat_session_update:
3331
+ sessionUUID: UUID
3332
+ expireTime: i64
3333
+ publicKey: ByteArray
3334
+ signature: ByteArray
3335
+ # MC: ServerboundChunkBatchReceivedPacket
3336
+ packet_chunk_batch_received:
3337
+ chunksPerTick: f32
3338
+ # MC: ServerboundClientCommandPacket
3339
+ packet_client_command:
3340
+ actionId: varint
3341
+ # MC: ServerboundClientTickEndPacket
3342
+ packet_tick_end:
3343
+ # Empty
3344
+ # MC: ServerboundCommandSuggestionPacket
3345
+ packet_tab_complete:
3346
+ transactionId: varint
3347
+ text: string
3348
+ # MC: ServerboundConfigurationAcknowledgedPacket
3349
+ packet_configuration_acknowledged:
3350
+ # Empty
3351
+ # MC: ServerboundContainerButtonClickPacket
3352
+ packet_enchant_item:
3353
+ windowId: ContainerID
3354
+ enchantment: i8
3355
+ # MC: ServerboundContainerClickPacket
3356
+ packet_window_click:
3357
+ windowId: ContainerID
3358
+ stateId: varint
3359
+ slot: i16
3360
+ mouseButton: i8
3361
+ mode: varint
3362
+ changedSlots: []varint
3363
+ location: i16
3364
+ item?: HashedSlot
3365
+ cursorItem?: HashedSlot
3366
+ # MC: ServerboundContainerClosePacket
3367
+ packet_close_window:
3368
+ windowId: ContainerID
3369
+ # MC: ServerboundContainerSlotStateChangedPacket
3370
+ packet_set_slot_state:
3371
+ slot_id: varint
3372
+ window_id: ContainerID
3373
+ state: bool
3374
+ ## (ServerboundCookieResponsePacket is common)
3375
+ # MC: ServerboundCustomPayloadPacket
3376
+ packet_custom_payload:
3377
+ channel: string
3378
+ data: restBuffer
3379
+ # MC: ServerboundDebugSubscriptionRequestPacket
3380
+ packet_debug_subscription_request:
3381
+ subscriptions: DebugSubscriptionDataType[]varint
3382
+ # MC: ServerboundEditBookPacket
3383
+ packet_edit_book:
3384
+ hand: varint
3385
+ pages: string[]varint
3386
+ title?: string
3387
+ # MC: ServerboundEntityTagQuery
3388
+ packet_query_entity_nbt:
3389
+ transactionId: varint
3390
+ entityId: varint
3391
+ # MC: ServerboundInteractPacket
3392
+ packet_use_entity:
3393
+ target: varint
3394
+ mouse: varint
3395
+ x: mouse ?
3396
+ if 2: f32
3397
+ default: void
3398
+ y: mouse ?
3399
+ if 2: f32
3400
+ default: void
3401
+ z: mouse ?
3402
+ if 2: f32
3403
+ default: void
3404
+ hand: mouse ?
3405
+ if 0: varint
3406
+ if 2: varint
3407
+ default: void
3408
+ sneaking: bool
3409
+ # MC: ServerboundJigsawGeneratePacket
3410
+ packet_generate_structure:
3411
+ location: position
3412
+ levels: varint
3413
+ keepJigsaws: bool
3414
+ # MC: ServerboundKeepAlivePacket
3415
+ packet_keep_alive:
3416
+ keepAliveId: i64
3417
+ # MC: ServerboundLockDifficultyPacket
3418
+ packet_lock_difficulty:
3419
+ locked: bool
3420
+
3421
+ MovementFlags: ["bitflags", {
3422
+ "type": "u8",
3423
+ "flags": ["onGround", "hasHorizontalCollision"]
3424
+ }]
3425
+ # MC: ServerboundMovePlayerPacket.Pos
3426
+ packet_position:
3427
+ x: f64
3428
+ y: f64
3429
+ z: f64
3430
+ flags: MovementFlags
3431
+ # MC: ServerboundMovePlayerPacket.PosRot
3432
+ packet_position_look:
3433
+ x: f64
3434
+ y: f64
3435
+ z: f64
3436
+ yaw: f32
3437
+ pitch: f32
3438
+ flags: MovementFlags
3439
+ # MC: ServerboundMovePlayerPacket.Rot
3440
+ packet_look:
3441
+ yaw: f32
3442
+ pitch: f32
3443
+ flags: MovementFlags
3444
+ # MC: ServerboundMovePlayerPacket.StatusOnly
3445
+ packet_flying:
3446
+ flags: MovementFlags
3447
+ # MC: ServerboundMoveVehiclePacket
3448
+ packet_vehicle_move:
3449
+ x: f64
3450
+ y: f64
3451
+ z: f64
3452
+ yaw: f32
3453
+ pitch: f32
3454
+ onGround: bool
3455
+ # MC: ServerboundPaddleBoatPacket
3456
+ packet_steer_boat:
3457
+ leftPaddle: bool
3458
+ rightPaddle: bool
3459
+ # MC: ServerboundPickItemFromBlockPacket
3460
+ packet_pick_item_from_block:
3461
+ position: position
3462
+ includeData: bool
3463
+ # MC: ServerboundPickItemFromEntityPacket
3464
+ packet_pick_item_from_entity:
3465
+ entityId: varint
3466
+ includeData: bool
3467
+ # MC: ServerboundPingRequestPacket
3468
+ packet_ping_request:
3469
+ id: i64
3470
+ # MC: ServerboundPlaceRecipePacket
3471
+ packet_craft_recipe_request:
3472
+ windowId: ContainerID
3473
+ recipeId: varint
3474
+ makeAll: bool
3475
+ # MC: ServerboundPlayerAbilitiesPacket
3476
+ packet_abilities:
3477
+ flags: i8
3478
+ # MC: ServerboundPlayerActionPacket
3479
+ packet_block_dig:
3480
+ status: varint
3481
+ location: position
3482
+ face: i8
3483
+ sequence: varint
3484
+ # MC: ServerboundPlayerCommandPacket
3485
+ packet_entity_action:
3486
+ entityId: varint
3487
+ actionId: varint =>
3488
+ - leave_bed
3489
+ - start_sprinting
3490
+ - stop_sprinting
3491
+ - start_horse_jump
3492
+ - stop_horse_jump
3493
+ - open_vehicle_inventory
3494
+ - start_elytra_flying
3495
+ jumpBoost: varint
3496
+ # MC: ServerboundPlayerInputPacket
3497
+ # previously: packet_steer_vehicle
3498
+ packet_player_input:
3499
+ ## client/net/minecraft/world/entity/player/Input.java
3500
+ inputs: ["bitflags", {
3501
+ "type": "u8",
3502
+ "flags": ["forward", "backward", "left", "right", "jump", "shift", "sprint"]
3503
+ }]
3504
+ # MC: ServerboundPlayerLoadedPacket
3505
+ packet_player_loaded:
3506
+ # Empty
3507
+ # MC: ServerboundPongPacket
3508
+ packet_pong:
3509
+ id: i32
3510
+ # MC: ServerboundRecipeBookChangeSettingsPacket
3511
+ packet_recipe_book:
3512
+ bookId: varint
3513
+ bookOpen: bool
3514
+ filterActive: bool
3515
+ # MC: ServerboundRecipeBookSeenRecipePacket
3516
+ packet_displayed_recipe:
3517
+ recipeId: varint
3518
+ # MC: ServerboundRenameItemPacket
3519
+ packet_name_item:
3520
+ name: string
3521
+ # MC: ServerboundResourcePackPacket
3522
+ packet_resource_pack_receive:
3523
+ uuid: UUID
3524
+ result: varint
3525
+ # MC: ServerboundSeenAdvancementsPacket
3526
+ packet_advancement_tab:
3527
+ action: varint
3528
+ tabId: action ?
3529
+ if 0: string
3530
+ if 1: void
3531
+ # MC: ServerboundSelectTradePacket
3532
+ packet_select_trade:
3533
+ slot: varint
3534
+ # MC: ServerboundSetBeaconPacket
3535
+ packet_set_beacon_effect:
3536
+ primary_effect?: varint
3537
+ secondary_effect?: varint
3538
+ # MC: ServerboundSetCarriedItemPacket
3539
+ packet_held_item_slot:
3540
+ slotId: i16
3541
+ # MC: ServerboundSetCommandBlockPacket
3542
+ packet_update_command_block:
3543
+ location: position
3544
+ command: string
3545
+ mode: varint
3546
+ flags: u8
3547
+ # MC: ServerboundSetCommandMinecartPacket
3548
+ packet_update_command_block_minecart:
3549
+ entityId: varint
3550
+ command: string
3551
+ track_output: bool
3552
+ # MC: ServerboundSetCreativeModeSlotPacket
3553
+ packet_set_creative_slot:
3554
+ slot: i16
3555
+ item: UntrustedSlot
3556
+ # MC: ServerboundSetJigsawBlockPacket
3557
+ packet_update_jigsaw_block:
3558
+ location: position
3559
+ name: string
3560
+ target: string
3561
+ pool: string
3562
+ finalState: string
3563
+ jointType: string
3564
+ selection_priority: varint
3565
+ placement_priority: varint
3566
+ # MC: ServerboundSetStructureBlockPacket
3567
+ packet_update_structure_block:
3568
+ location: position
3569
+ action: varint
3570
+ mode: varint
3571
+ name: string
3572
+ offset_x: i8
3573
+ offset_y: i8
3574
+ offset_z: i8
3575
+ size_x: i8
3576
+ size_y: i8
3577
+ size_z: i8
3578
+ mirror: varint
3579
+ rotation: varint
3580
+ metadata: string
3581
+ integrity: f32
3582
+ seed: varint
3583
+ # New `strict` flag
3584
+ flags: u8 =>
3585
+ - ignore_entities
3586
+ - show_air
3587
+ - show_bounding_box
3588
+ - strict
3589
+ # MC: ServerboundSetTestBlockPacket
3590
+ packet_set_test_block:
3591
+ position: position
3592
+ mode: varint
3593
+ message: string
3594
+ # MC: ServerboundSignUpdatePacket
3595
+ packet_update_sign:
3596
+ location: position
3597
+ isFrontText: bool
3598
+ text1: string
3599
+ text2: string
3600
+ text3: string
3601
+ text4: string
3602
+ # MC: ServerboundSwingPacket
3603
+ packet_arm_animation:
3604
+ hand: varint
3605
+ # MC: ServerboundTeleportToEntityPacket
3606
+ packet_spectate:
3607
+ target: UUID
3608
+ # MC: ServerboundTestInstanceBlockActionPacket
3609
+ packet_test_instance_block_action:
3610
+ pos: position
3611
+ action: varint
3612
+ data:
3613
+ test?: string
3614
+ size: vec3i
3615
+ rotation: varint
3616
+ ignoreEntities: bool
3617
+ status: varint
3618
+ errorMessage?: anonymousNbt
3619
+ # MC: ServerboundUseItemOnPacket
3620
+ packet_block_place:
3621
+ hand: varint
3622
+ location: position
3623
+ direction: varint
3624
+ cursorX: f32
3625
+ cursorY: f32
3626
+ cursorZ: f32
3627
+ insideBlock: bool
3628
+ worldBorderHit: bool
3629
+ sequence: varint
3630
+ # MC: ServerboundUseItemPacket
3631
+ packet_use_item:
3632
+ hand: varint
3633
+ sequence: varint
3634
+ rotation: vec2f
3635
+
3636
+ packet:
3637
+ name: varint =>
3638
+ - teleport_confirm
3639
+ - query_block_nbt
3640
+ - select_bundle_item
3641
+ - set_difficulty
3642
+ - change_gamemode
3643
+ - message_acknowledgement
3644
+ - chat_command
3645
+ - chat_command_signed
3646
+ - chat_message
3647
+ - chat_session_update
3648
+ - chunk_batch_received
3649
+ - client_command
3650
+ - tick_end
3651
+ - settings
3652
+ - tab_complete
3653
+ - configuration_acknowledged
3654
+ # Maybe rename enchant_item if it is used for other things too
3655
+ - enchant_item
3656
+ - window_click
3657
+ - close_window
3658
+ - set_slot_state
3659
+ - cookie_response
3660
+ - custom_payload
3661
+ - debug_subscription_request
3662
+ - edit_book
3663
+ - query_entity_nbt
3664
+ - use_entity
3665
+ - generate_structure
3666
+ - keep_alive
3667
+ - lock_difficulty
3668
+ - position
3669
+ - position_look
3670
+ - look
3671
+ - flying
3672
+ - vehicle_move
3673
+ - steer_boat
3674
+ - pick_item_from_block
3675
+ - pick_item_from_entity
3676
+ - ping_request
3677
+ - craft_recipe_request
3678
+ - abilities
3679
+ - block_dig
3680
+ - entity_action
3681
+ - player_input
3682
+ - player_loaded
3683
+ - pong
3684
+ - recipe_book
3685
+ - displayed_recipe
3686
+ - name_item
3687
+ - resource_pack_receive
3688
+ - advancement_tab
3689
+ - select_trade
3690
+ - set_beacon_effect
3691
+ - held_item_slot
3692
+ - update_command_block
3693
+ - update_command_block_minecart
3694
+ - set_creative_slot
3695
+ - update_jigsaw_block
3696
+ - update_structure_block
3697
+ - set_test_block
3698
+ - update_sign
3699
+ - arm_animation
3700
+ - spectate
3701
+ - test_instance_block_action
3702
+ - block_place
3703
+ - use_item
3704
+ - custom_click_action
3705
+ params: name ?
3706
+ if teleport_confirm: packet_teleport_confirm
3707
+ if query_block_nbt: packet_query_block_nbt
3708
+ if select_bundle_item: packet_select_bundle_item
3709
+ if set_difficulty: packet_set_difficulty
3710
+ if change_gamemode: packet_change_gamemode
3711
+ if message_acknowledgement: packet_message_acknowledgement
3712
+ if chat_command: packet_chat_command
3713
+ if chat_command_signed: packet_chat_command_signed
3714
+ if chat_message: packet_chat_message
3715
+ if chat_session_update: packet_chat_session_update
3716
+ if chunk_batch_received: packet_chunk_batch_received
3717
+ if client_command: packet_client_command
3718
+ if tick_end: packet_tick_end
3719
+ if settings: packet_common_settings
3720
+ if tab_complete: packet_tab_complete
3721
+ if configuration_acknowledged: packet_configuration_acknowledged
3722
+ if enchant_item: packet_enchant_item
3723
+ if window_click: packet_window_click
3724
+ if close_window: packet_close_window
3725
+ if set_slot_state: packet_set_slot_state
3726
+ if cookie_response: packet_common_cookie_response
3727
+ if custom_payload: packet_custom_payload
3728
+ if debug_subscription_request: packet_debug_subscription_request
3729
+ if edit_book: packet_edit_book
3730
+ if query_entity_nbt: packet_query_entity_nbt
3731
+ if use_entity: packet_use_entity
3732
+ if generate_structure: packet_generate_structure
3733
+ if keep_alive: packet_keep_alive
3734
+ if lock_difficulty: packet_lock_difficulty
3735
+ if position: packet_position
3736
+ if position_look: packet_position_look
3737
+ if look: packet_look
3738
+ if flying: packet_flying
3739
+ if vehicle_move: packet_vehicle_move
3740
+ if steer_boat: packet_steer_boat
3741
+ if pick_item_from_block: packet_pick_item_from_block
3742
+ if pick_item_from_entity: packet_pick_item_from_entity
3743
+ if ping_request: packet_ping_request
3744
+ if craft_recipe_request: packet_craft_recipe_request
3745
+ if abilities: packet_abilities
3746
+ if block_dig: packet_block_dig
3747
+ if entity_action: packet_entity_action
3748
+ if player_input: packet_player_input
3749
+ if player_loaded: packet_player_loaded
3750
+ if pong: packet_pong
3751
+ if recipe_book: packet_recipe_book
3752
+ if displayed_recipe: packet_displayed_recipe
3753
+ if name_item: packet_name_item
3754
+ if resource_pack_receive: packet_resource_pack_receive
3755
+ if advancement_tab: packet_advancement_tab
3756
+ if select_trade: packet_select_trade
3757
+ if set_beacon_effect: packet_set_beacon_effect
3758
+ if held_item_slot: packet_held_item_slot
3759
+ if update_command_block: packet_update_command_block
3760
+ if update_command_block_minecart: packet_update_command_block_minecart
3761
+ if set_creative_slot: packet_set_creative_slot
3762
+ if update_jigsaw_block: packet_update_jigsaw_block
3763
+ if update_structure_block: packet_update_structure_block
3764
+ if set_test_block: packet_set_test_block
3765
+ if update_sign: packet_update_sign
3766
+ if arm_animation: packet_arm_animation
3767
+ if spectate: packet_spectate
3768
+ if test_instance_block_action: packet_test_instance_block_action
3769
+ if block_place: packet_block_place
3770
+ if use_item: packet_use_item
3771
+ if custom_click_action: packet_common_custom_click_action