Skip to main content

kojacoord_protocol/
registry.rs

1use std::collections::HashMap;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
4pub enum ProtocolState {
5    Handshake,
6    Status,
7    Login,
8    Configuration,
9    Play,
10}
11
12#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
13pub enum Direction {
14    Serverbound,
15    Clientbound,
16}
17
18#[derive(Debug, Clone)]
19pub struct PacketMeta {
20    pub id: u8,
21    pub name: &'static str,
22}
23
24pub struct PacketRegistry {
25    map: HashMap<ProtocolState, HashMap<Direction, Vec<(u32, PacketMeta)>>>,
26}
27
28impl PacketRegistry {
29    pub fn new() -> Self {
30        Self {
31            map: HashMap::new(),
32        }
33    }
34
35    pub fn register(
36        &mut self,
37        proto: u32,
38        state: ProtocolState,
39        dir: Direction,
40        name: &'static str,
41        id: u8,
42    ) {
43        let state_map = self.map.entry(state).or_default();
44        let dir_vec = state_map.entry(dir).or_default();
45        if let Some((_, meta)) = dir_vec
46            .iter_mut()
47            .find(|(p, meta)| *p == proto && meta.name == name)
48        {
49            meta.id = id;
50        } else {
51            dir_vec.push((proto, PacketMeta { id, name }));
52        }
53    }
54
55    pub fn get_id(
56        &self,
57        proto: u32,
58        state: ProtocolState,
59        dir: Direction,
60        name: &'static str,
61    ) -> Option<u8> {
62        let state_map = self.map.get(&state)?;
63        let dir_vec = state_map.get(&dir)?;
64        dir_vec
65            .iter()
66            .find(|(p, meta)| *p == proto && meta.name == name)
67            .map(|(_, meta)| meta.id)
68    }
69
70    pub fn get_id_for_version(
71        &self,
72        proto: u32,
73        state: ProtocolState,
74        dir: Direction,
75        name: &'static str,
76    ) -> Option<u8> {
77        let state_map = self.map.get(&state)?;
78        let dir_vec = state_map.get(&dir)?;
79
80        if let Some((_, meta)) = dir_vec
81            .iter()
82            .find(|(p, meta)| *p == proto && meta.name == name)
83        {
84            return Some(meta.id);
85        }
86
87        let mut best_proto: Option<u32> = None;
88        let mut best_id: Option<u8> = None;
89        for (p, meta) in dir_vec {
90            if meta.name == name && *p <= proto && best_proto.map_or(true, |bp| *p > bp) {
91                best_proto = Some(*p);
92                best_id = Some(meta.id);
93            }
94        }
95        best_id
96    }
97
98    pub fn get_name_from_id(
99        &self,
100        proto: u32,
101        state: ProtocolState,
102        dir: Direction,
103        id: u8,
104    ) -> Option<&'static str> {
105        let state_map = self.map.get(&state)?;
106        let dir_vec = state_map.get(&dir)?;
107
108        if let Some((_, meta)) = dir_vec
109            .iter()
110            .find(|(p, meta)| *p == proto && meta.id == id)
111        {
112            return Some(meta.name);
113        }
114
115        let mut best_proto: Option<u32> = None;
116        let mut best_name: Option<&'static str> = None;
117        for (p, meta) in dir_vec {
118            if meta.id == id && *p <= proto && best_proto.map_or(true, |bp| *p > bp) {
119                best_proto = Some(*p);
120                best_name = Some(meta.name);
121            }
122        }
123        best_name
124    }
125}
126
127impl Default for PacketRegistry {
128    fn default() -> Self {
129        build_default_registry()
130    }
131}
132
133pub fn build_default_registry() -> PacketRegistry {
134    let mut r = PacketRegistry::new();
135
136    macro_rules! reg {
137        ($proto:expr, $state:ident, $dir:ident, $name:expr, $id:expr) => {
138            r.register($proto, ProtocolState::$state, Direction::$dir, $name, $id);
139        };
140    }
141
142    reg!(78, Login, Serverbound, "HandshakeC2S", 0x02);
143    reg!(78, Login, Clientbound, "EncryptionKeyRequestS2C", 0xFD);
144    reg!(78, Login, Serverbound, "EncryptionKeyResponseC2S", 0xFC);
145    reg!(78, Login, Clientbound, "LoginRequestS2C", 0x01);
146
147    reg!(5, Handshake, Serverbound, "ServerboundHandshake", 0x00);
148    reg!(5, Status, Serverbound, "ServerboundStatusRequest", 0x00);
149    reg!(5, Status, Serverbound, "ServerboundPingRequest", 0x01);
150    reg!(5, Status, Clientbound, "ClientboundStatusResponse", 0x00);
151    reg!(5, Status, Clientbound, "ClientboundPongResponse", 0x01);
152    reg!(5, Login, Serverbound, "ServerboundLoginStart", 0x00);
153    reg!(5, Login, Serverbound, "ServerboundEncryptionResponse", 0x01);
154    reg!(5, Login, Clientbound, "ClientboundLoginDisconnect", 0x00);
155    reg!(5, Login, Clientbound, "ClientboundEncryptionRequest", 0x01);
156    reg!(5, Login, Clientbound, "ClientboundLoginSuccess", 0x02);
157    reg!(5, Login, Clientbound, "ClientboundSetCompression", 0x03);
158
159    reg!(47, Handshake, Serverbound, "ServerboundHandshake", 0x00);
160    reg!(47, Status, Serverbound, "ServerboundStatusRequest", 0x00);
161    reg!(47, Status, Serverbound, "ServerboundPingRequest", 0x01);
162    reg!(47, Status, Clientbound, "ClientboundStatusResponse", 0x00);
163    reg!(47, Status, Clientbound, "ClientboundPongResponse", 0x01);
164    reg!(47, Login, Serverbound, "ServerboundLoginStart", 0x00);
165    reg!(
166        47,
167        Login,
168        Serverbound,
169        "ServerboundEncryptionResponse",
170        0x01
171    );
172    reg!(47, Login, Clientbound, "ClientboundLoginDisconnect", 0x00);
173    reg!(47, Login, Clientbound, "ClientboundEncryptionRequest", 0x01);
174    reg!(47, Login, Clientbound, "ClientboundLoginSuccess", 0x02);
175    reg!(47, Login, Clientbound, "ClientboundSetCompression", 0x03);
176
177    // Version 335 (Minecraft 1.12.2)
178    reg!(
179        335,
180        Play,
181        Clientbound,
182        "ClientboundLevelChunkWithLight",
183        0x20
184    );
185    reg!(335, Play, Clientbound, "SPacketChunkData", 0x20);
186    reg!(335, Play, Clientbound, "ClientboundJoinGame", 0x23);
187    reg!(335, Play, Clientbound, "ClientboundRespawn", 0x35);
188    reg!(335, Play, Clientbound, "ClientboundKeepAlive", 0x00);
189    reg!(335, Play, Clientbound, "ClientboundChatMessage", 0x0F);
190    reg!(335, Play, Clientbound, "ClientboundPluginMessage", 0x18);
191    reg!(335, Play, Clientbound, "ClientboundDisconnect", 0x40);
192    reg!(335, Play, Serverbound, "ServerboundKeepAlive", 0x0B);
193    reg!(335, Play, Serverbound, "ServerboundChatMessage", 0x02);
194    reg!(335, Play, Serverbound, "ServerboundPluginMessage", 0x09);
195
196    reg!(340, Handshake, Serverbound, "ServerboundHandshake", 0x00);
197    reg!(340, Status, Serverbound, "ServerboundStatusRequest", 0x00);
198    reg!(340, Status, Serverbound, "ServerboundPingRequest", 0x01);
199    reg!(340, Status, Clientbound, "ClientboundStatusResponse", 0x00);
200    reg!(340, Status, Clientbound, "ClientboundPongResponse", 0x01);
201    reg!(340, Login, Serverbound, "ServerboundLoginStart", 0x00);
202    reg!(
203        340,
204        Login,
205        Serverbound,
206        "ServerboundEncryptionResponse",
207        0x01
208    );
209    reg!(340, Login, Clientbound, "ClientboundLoginDisconnect", 0x00);
210    reg!(
211        340,
212        Login,
213        Clientbound,
214        "ClientboundEncryptionRequest",
215        0x01
216    );
217    reg!(340, Login, Clientbound, "ClientboundLoginSuccess", 0x02);
218    reg!(340, Login, Clientbound, "ClientboundSetCompression", 0x03);
219
220    reg!(754, Handshake, Serverbound, "ServerboundHandshake", 0x00);
221    reg!(754, Status, Serverbound, "ServerboundStatusRequest", 0x00);
222    reg!(754, Status, Serverbound, "ServerboundPingRequest", 0x01);
223    reg!(754, Status, Clientbound, "ClientboundStatusResponse", 0x00);
224    reg!(754, Status, Clientbound, "ClientboundPongResponse", 0x01);
225    reg!(754, Login, Serverbound, "ServerboundLoginStart", 0x00);
226    reg!(
227        754,
228        Login,
229        Serverbound,
230        "ServerboundEncryptionResponse",
231        0x01
232    );
233    reg!(754, Login, Clientbound, "ClientboundLoginDisconnect", 0x00);
234    reg!(
235        754,
236        Login,
237        Clientbound,
238        "ClientboundEncryptionRequest",
239        0x01
240    );
241    reg!(754, Login, Clientbound, "ClientboundLoginSuccess", 0x02);
242    reg!(754, Login, Clientbound, "ClientboundSetCompression", 0x03);
243
244    reg!(762, Handshake, Serverbound, "ServerboundHandshake", 0x00);
245    reg!(762, Status, Serverbound, "ServerboundStatusRequest", 0x00);
246    reg!(762, Status, Serverbound, "ServerboundPingRequest", 0x01);
247    reg!(762, Status, Clientbound, "ClientboundStatusResponse", 0x00);
248    reg!(762, Status, Clientbound, "ClientboundPongResponse", 0x01);
249    reg!(762, Login, Serverbound, "ServerboundLoginStart", 0x00);
250    reg!(
251        762,
252        Login,
253        Serverbound,
254        "ServerboundEncryptionResponse",
255        0x01
256    );
257    reg!(762, Login, Clientbound, "ClientboundLoginDisconnect", 0x00);
258    reg!(
259        762,
260        Login,
261        Clientbound,
262        "ClientboundEncryptionRequest",
263        0x01
264    );
265    reg!(762, Login, Clientbound, "ClientboundLoginSuccess", 0x02);
266    reg!(762, Login, Clientbound, "ClientboundSetCompression", 0x03);
267    reg!(
268        762,
269        Login,
270        Serverbound,
271        "ServerboundLoginPluginResponse",
272        0x02
273    );
274    reg!(
275        762,
276        Login,
277        Clientbound,
278        "ClientboundLoginPluginRequest",
279        0x04
280    );
281
282    reg!(765, Handshake, Serverbound, "ServerboundHandshake", 0x00);
283    reg!(765, Status, Serverbound, "ServerboundStatusRequest", 0x00);
284    reg!(765, Status, Serverbound, "ServerboundPingRequest", 0x01);
285    reg!(765, Status, Clientbound, "ClientboundStatusResponse", 0x00);
286    reg!(765, Status, Clientbound, "ClientboundPongResponse", 0x01);
287    reg!(765, Login, Serverbound, "ServerboundLoginStart", 0x00);
288    reg!(
289        765,
290        Login,
291        Serverbound,
292        "ServerboundEncryptionResponse",
293        0x01
294    );
295    reg!(765, Login, Clientbound, "ClientboundLoginDisconnect", 0x00);
296    reg!(
297        765,
298        Login,
299        Clientbound,
300        "ClientboundEncryptionRequest",
301        0x01
302    );
303    reg!(765, Login, Clientbound, "ClientboundLoginSuccess", 0x02);
304    reg!(765, Login, Clientbound, "ClientboundSetCompression", 0x03);
305    reg!(
306        765,
307        Login,
308        Serverbound,
309        "ServerboundLoginPluginResponse",
310        0x02
311    );
312    reg!(
313        765,
314        Login,
315        Clientbound,
316        "ClientboundLoginPluginRequest",
317        0x04
318    );
319    reg!(
320        765,
321        Login,
322        Serverbound,
323        "ServerboundLoginAcknowledged",
324        0x03
325    );
326    reg!(765, Configuration, Clientbound, "FinishConfiguration", 0x03);
327    reg!(
328        765,
329        Configuration,
330        Serverbound,
331        "AcknowledgeFinishConfiguration",
332        0x03
333    );
334
335    reg!(767, Handshake, Serverbound, "ServerboundHandshake", 0x00);
336    reg!(767, Status, Serverbound, "ServerboundStatusRequest", 0x00);
337    reg!(767, Status, Serverbound, "ServerboundPingRequest", 0x01);
338    reg!(767, Status, Clientbound, "ClientboundStatusResponse", 0x00);
339    reg!(767, Status, Clientbound, "ClientboundPongResponse", 0x01);
340    reg!(767, Login, Serverbound, "ServerboundLoginStart", 0x00);
341    reg!(
342        767,
343        Login,
344        Serverbound,
345        "ServerboundEncryptionResponse",
346        0x01
347    );
348    reg!(767, Login, Clientbound, "ClientboundLoginDisconnect", 0x00);
349    reg!(
350        767,
351        Login,
352        Clientbound,
353        "ClientboundEncryptionRequest",
354        0x01
355    );
356    reg!(767, Login, Clientbound, "ClientboundLoginSuccess", 0x02);
357    reg!(767, Login, Clientbound, "ClientboundSetCompression", 0x03);
358    reg!(
359        767,
360        Login,
361        Serverbound,
362        "ServerboundLoginPluginResponse",
363        0x02
364    );
365    reg!(
366        767,
367        Login,
368        Clientbound,
369        "ClientboundLoginPluginRequest",
370        0x04
371    );
372    reg!(
373        767,
374        Login,
375        Serverbound,
376        "ServerboundLoginAcknowledged",
377        0x03
378    );
379    reg!(767, Configuration, Clientbound, "FinishConfiguration", 0x03);
380    reg!(
381        767,
382        Configuration,
383        Serverbound,
384        "AcknowledgeFinishConfiguration",
385        0x03
386    );
387
388    reg!(754, Play, Clientbound, "ClientboundKeepAlive", 0x1F);
389    reg!(754, Play, Clientbound, "ClientboundJoinGame", 0x24);
390    reg!(754, Play, Clientbound, "ClientboundLogin", 0x24);
391    reg!(754, Play, Clientbound, "ClientboundChatMessage", 0x0E);
392    reg!(754, Play, Clientbound, "ClientboundSystemChat", 0x0E);
393    reg!(754, Play, Clientbound, "ClientboundPlayerPosition", 0x34);
394    reg!(754, Play, Clientbound, "ClientboundPluginMessage", 0x17);
395    reg!(754, Play, Clientbound, "ClientboundRespawn", 0x39);
396    reg!(754, Play, Clientbound, "ClientboundDisconnect", 0x19);
397    reg!(754, Play, Serverbound, "ServerboundKeepAlive", 0x10);
398    reg!(754, Play, Serverbound, "ServerboundChatMessage", 0x03);
399    reg!(754, Play, Serverbound, "ServerboundInteract", 0x0E);
400    reg!(754, Play, Serverbound, "ServerboundMovePlayerPos", 0x12);
401    reg!(754, Play, Serverbound, "ServerboundMovePlayerRot", 0x13);
402    reg!(754, Play, Serverbound, "ServerboundMovePlayerPosRot", 0x14);
403    reg!(754, Play, Serverbound, "ServerboundPluginMessage", 0x0B);
404
405    reg!(762, Play, Clientbound, "ClientboundBundle", 0x00);
406    reg!(765, Play, Clientbound, "ClientboundBundle", 0x00);
407    reg!(767, Play, Clientbound, "ClientboundBundle", 0x00);
408    reg!(5, Play, Clientbound, "ClientboundSpawnEntity", 0x0E);
409    reg!(47, Play, Clientbound, "ClientboundSpawnEntity", 0x0E);
410    reg!(762, Play, Clientbound, "ClientboundSpawnEntity", 0x01);
411    reg!(765, Play, Clientbound, "ClientboundSpawnEntity", 0x01);
412    reg!(767, Play, Clientbound, "ClientboundSpawnEntity", 0x01);
413    reg!(5, Play, Clientbound, "ClientboundSpawnExperienceOrb", 0x11);
414    reg!(47, Play, Clientbound, "ClientboundSpawnExperienceOrb", 0x11);
415    reg!(
416        762,
417        Play,
418        Clientbound,
419        "ClientboundSpawnExperienceOrb",
420        0x02
421    );
422    reg!(
423        765,
424        Play,
425        Clientbound,
426        "ClientboundSpawnExperienceOrb",
427        0x02
428    );
429    reg!(
430        767,
431        Play,
432        Clientbound,
433        "ClientboundSpawnExperienceOrb",
434        0x02
435    );
436    reg!(5, Play, Clientbound, "ClientboundSpawnPlayer", 0x0C);
437    reg!(47, Play, Clientbound, "ClientboundSpawnPlayer", 0x0C);
438    reg!(762, Play, Clientbound, "ClientboundSpawnPlayer", 0x03);
439    reg!(765, Play, Clientbound, "ClientboundSpawnPlayer", 0x03);
440    reg!(767, Play, Clientbound, "ClientboundSpawnPlayer", 0x03);
441    reg!(5, Play, Clientbound, "ClientboundEntityAnimation", 0x0B);
442    reg!(47, Play, Clientbound, "ClientboundEntityAnimation", 0x0B);
443    reg!(340, Play, Clientbound, "ClientboundEntityAnimation", 0x06);
444    reg!(762, Play, Clientbound, "ClientboundEntityAnimation", 0x04);
445    reg!(765, Play, Clientbound, "ClientboundEntityAnimation", 0x04);
446    reg!(767, Play, Clientbound, "ClientboundEntityAnimation", 0x04);
447    reg!(5, Play, Clientbound, "ClientboundAwardStats", 0x37);
448    reg!(47, Play, Clientbound, "ClientboundAwardStats", 0x37);
449    reg!(340, Play, Clientbound, "ClientboundAwardStats", 0x07);
450    reg!(762, Play, Clientbound, "ClientboundAwardStats", 0x05);
451    reg!(765, Play, Clientbound, "ClientboundAwardStats", 0x05);
452    reg!(767, Play, Clientbound, "ClientboundAwardStats", 0x05);
453    reg!(
454        762,
455        Play,
456        Clientbound,
457        "ClientboundAcknowledgeBlockChange",
458        0x06
459    );
460    reg!(
461        765,
462        Play,
463        Clientbound,
464        "ClientboundAcknowledgeBlockChange",
465        0x06
466    );
467    reg!(
468        767,
469        Play,
470        Clientbound,
471        "ClientboundAcknowledgeBlockChange",
472        0x06
473    );
474    reg!(5, Play, Clientbound, "ClientboundBlockDestroyStage", 0x25);
475    reg!(47, Play, Clientbound, "ClientboundBlockDestroyStage", 0x25);
476    reg!(340, Play, Clientbound, "ClientboundBlockDestroyStage", 0x08);
477    reg!(762, Play, Clientbound, "ClientboundBlockDestroyStage", 0x07);
478    reg!(765, Play, Clientbound, "ClientboundBlockDestroyStage", 0x07);
479    reg!(767, Play, Clientbound, "ClientboundBlockDestroyStage", 0x07);
480    reg!(5, Play, Clientbound, "ClientboundBlockEntityData", 0x35);
481    reg!(47, Play, Clientbound, "ClientboundBlockEntityData", 0x35);
482    reg!(340, Play, Clientbound, "ClientboundBlockEntityData", 0x09);
483    reg!(762, Play, Clientbound, "ClientboundBlockEntityData", 0x08);
484    reg!(765, Play, Clientbound, "ClientboundBlockEntityData", 0x08);
485    reg!(767, Play, Clientbound, "ClientboundBlockEntityData", 0x08);
486    reg!(5, Play, Clientbound, "ClientboundBlockAction", 0x24);
487    reg!(47, Play, Clientbound, "ClientboundBlockAction", 0x24);
488    reg!(340, Play, Clientbound, "ClientboundBlockAction", 0x0A);
489    reg!(762, Play, Clientbound, "ClientboundBlockAction", 0x09);
490    reg!(765, Play, Clientbound, "ClientboundBlockAction", 0x09);
491    reg!(767, Play, Clientbound, "ClientboundBlockAction", 0x09);
492    reg!(5, Play, Clientbound, "ClientboundBlockUpdate", 0x23);
493    reg!(47, Play, Clientbound, "ClientboundBlockUpdate", 0x23);
494    reg!(340, Play, Clientbound, "ClientboundBlockUpdate", 0x0B);
495    reg!(762, Play, Clientbound, "ClientboundBlockUpdate", 0x0A);
496    reg!(765, Play, Clientbound, "ClientboundBlockUpdate", 0x0A);
497    reg!(767, Play, Clientbound, "ClientboundBlockUpdate", 0x0A);
498    reg!(340, Play, Clientbound, "ClientboundBossBar", 0x0C);
499    reg!(762, Play, Clientbound, "ClientboundBossBar", 0x0B);
500    reg!(765, Play, Clientbound, "ClientboundBossBar", 0x0A);
501    reg!(767, Play, Clientbound, "ClientboundBossBar", 0x0B);
502    reg!(5, Play, Clientbound, "ClientboundSpawnMob", 0x0F);
503
504    reg!(5, Play, Clientbound, "ClientboundChangeDifficulty", 0x41);
505    reg!(47, Play, Clientbound, "ClientboundChangeDifficulty", 0x41);
506    reg!(340, Play, Clientbound, "ClientboundChangeDifficulty", 0x0D);
507    reg!(762, Play, Clientbound, "ClientboundChangeDifficulty", 0x0C);
508    reg!(765, Play, Clientbound, "ClientboundChangeDifficulty", 0x0C);
509    reg!(767, Play, Clientbound, "ClientboundChangeDifficulty", 0x0C);
510    reg!(
511        765,
512        Play,
513        Clientbound,
514        "ClientboundChunkBatchFinished",
515        0x0D
516    );
517    reg!(
518        767,
519        Play,
520        Clientbound,
521        "ClientboundChunkBatchFinished",
522        0x0D
523    );
524    reg!(765, Play, Clientbound, "ClientboundChunkBatchStart", 0x0E);
525    reg!(767, Play, Clientbound, "ClientboundChunkBatchStart", 0x0E);
526    reg!(762, Play, Clientbound, "ClientboundChunkBiomes", 0x0D);
527    reg!(765, Play, Clientbound, "ClientboundChunkBiomes", 0x0F);
528    reg!(767, Play, Clientbound, "ClientboundChunkBiomes", 0x0F);
529    reg!(762, Play, Clientbound, "ClientboundClearTitles", 0x0E);
530    reg!(765, Play, Clientbound, "ClientboundClearTitles", 0x10);
531    reg!(767, Play, Clientbound, "ClientboundClearTitles", 0x10);
532    reg!(5, Play, Clientbound, "ClientboundCommandSuggestions", 0x3A);
533    reg!(47, Play, Clientbound, "ClientboundCommandSuggestions", 0x3A);
534    reg!(
535        340,
536        Play,
537        Clientbound,
538        "ClientboundCommandSuggestions",
539        0x0E
540    );
541    reg!(
542        762,
543        Play,
544        Clientbound,
545        "ClientboundCommandSuggestions",
546        0x0F
547    );
548    reg!(
549        765,
550        Play,
551        Clientbound,
552        "ClientboundCommandSuggestions",
553        0x11
554    );
555    reg!(
556        767,
557        Play,
558        Clientbound,
559        "ClientboundCommandSuggestions",
560        0x11
561    );
562    reg!(762, Play, Clientbound, "ClientboundCommands", 0x10);
563    reg!(765, Play, Clientbound, "ClientboundCommands", 0x12);
564    reg!(767, Play, Clientbound, "ClientboundCommands", 0x12);
565    reg!(5, Play, Clientbound, "ClientboundContainerClose", 0x2E);
566    reg!(47, Play, Clientbound, "ClientboundContainerClose", 0x2E);
567    reg!(340, Play, Clientbound, "ClientboundContainerClose", 0x12);
568    reg!(762, Play, Clientbound, "ClientboundContainerClose", 0x11);
569    reg!(765, Play, Clientbound, "ClientboundContainerClose", 0x13);
570    reg!(767, Play, Clientbound, "ClientboundContainerClose", 0x13);
571    reg!(5, Play, Clientbound, "ClientboundContainerSetContent", 0x30);
572    reg!(
573        47,
574        Play,
575        Clientbound,
576        "ClientboundContainerSetContent",
577        0x30
578    );
579    reg!(
580        340,
581        Play,
582        Clientbound,
583        "ClientboundContainerSetContent",
584        0x14
585    );
586    reg!(
587        762,
588        Play,
589        Clientbound,
590        "ClientboundContainerSetContent",
591        0x12
592    );
593    reg!(
594        765,
595        Play,
596        Clientbound,
597        "ClientboundContainerSetContent",
598        0x14
599    );
600    reg!(
601        767,
602        Play,
603        Clientbound,
604        "ClientboundContainerSetContent",
605        0x14
606    );
607    reg!(
608        5,
609        Play,
610        Clientbound,
611        "ClientboundContainerSetProperty",
612        0x31
613    );
614    reg!(
615        47,
616        Play,
617        Clientbound,
618        "ClientboundContainerSetProperty",
619        0x31
620    );
621    reg!(
622        340,
623        Play,
624        Clientbound,
625        "ClientboundContainerSetProperty",
626        0x15
627    );
628    reg!(
629        762,
630        Play,
631        Clientbound,
632        "ClientboundContainerSetProperty",
633        0x13
634    );
635    reg!(
636        765,
637        Play,
638        Clientbound,
639        "ClientboundContainerSetProperty",
640        0x15
641    );
642    reg!(
643        767,
644        Play,
645        Clientbound,
646        "ClientboundContainerSetProperty",
647        0x15
648    );
649    reg!(5, Play, Clientbound, "ClientboundContainerSetSlot", 0x2F);
650    reg!(47, Play, Clientbound, "ClientboundContainerSetSlot", 0x2F);
651    reg!(340, Play, Clientbound, "ClientboundContainerSetSlot", 0x16);
652    reg!(762, Play, Clientbound, "ClientboundContainerSetSlot", 0x14);
653    reg!(765, Play, Clientbound, "ClientboundContainerSetSlot", 0x16);
654    reg!(767, Play, Clientbound, "ClientboundContainerSetSlot", 0x16);
655    reg!(767, Play, Clientbound, "ClientboundCookieRequest", 0x17);
656    reg!(340, Play, Clientbound, "ClientboundCooldown", 0x17);
657    reg!(762, Play, Clientbound, "ClientboundCooldown", 0x15);
658    reg!(765, Play, Clientbound, "ClientboundCooldown", 0x17);
659    reg!(767, Play, Clientbound, "ClientboundCooldown", 0x18);
660    reg!(
661        762,
662        Play,
663        Clientbound,
664        "ClientboundCustomChatCompletions",
665        0x16
666    );
667    reg!(
668        765,
669        Play,
670        Clientbound,
671        "ClientboundCustomChatCompletions",
672        0x18
673    );
674    reg!(
675        767,
676        Play,
677        Clientbound,
678        "ClientboundCustomChatCompletions",
679        0x19
680    );
681    reg!(5, Play, Clientbound, "ClientboundCustomPayload", 0x3F);
682    reg!(5, Play, Clientbound, "ClientboundPluginMessage", 0x3F);
683    reg!(47, Play, Clientbound, "ClientboundCustomPayload", 0x3F);
684    reg!(47, Play, Clientbound, "ClientboundPluginMessage", 0x3F);
685    reg!(340, Play, Clientbound, "ClientboundPluginMessage", 0x18);
686    reg!(762, Play, Clientbound, "ClientboundCustomPayload", 0x17);
687    reg!(762, Play, Clientbound, "ClientboundPluginMessage", 0x17);
688    reg!(765, Play, Clientbound, "ClientboundCustomPayload", 0x18);
689    reg!(765, Play, Clientbound, "ClientboundPluginMessage", 0x18);
690    reg!(767, Play, Clientbound, "ClientboundCustomPayload", 0x1A);
691    reg!(767, Play, Clientbound, "ClientboundPluginMessage", 0x1A);
692    reg!(762, Play, Clientbound, "ClientboundDamageEvent", 0x18);
693    reg!(765, Play, Clientbound, "ClientboundDamageEvent", 0x19);
694    reg!(767, Play, Clientbound, "ClientboundDamageEvent", 0x1B);
695    reg!(767, Play, Clientbound, "ClientboundDebugSample", 0x1C);
696    reg!(762, Play, Clientbound, "ClientboundDeleteChat", 0x19);
697    reg!(765, Play, Clientbound, "ClientboundDeleteChat", 0x1A);
698    reg!(767, Play, Clientbound, "ClientboundDeleteChat", 0x1D);
699    reg!(5, Play, Clientbound, "ClientboundDisconnect", 0x40);
700    reg!(47, Play, Clientbound, "ClientboundDisconnect", 0x40);
701    reg!(340, Play, Clientbound, "ClientboundDisconnect", 0x1A);
702    reg!(762, Play, Clientbound, "ClientboundDisconnect", 0x1A);
703    reg!(765, Play, Clientbound, "ClientboundDisconnect", 0x1B);
704    reg!(767, Play, Clientbound, "ClientboundDisconnect", 0x1E);
705    reg!(762, Play, Clientbound, "ClientboundDisguisedChat", 0x1B);
706    reg!(765, Play, Clientbound, "ClientboundDisguisedChat", 0x1C);
707    reg!(767, Play, Clientbound, "ClientboundDisguisedChat", 0x1F);
708    reg!(5, Play, Clientbound, "ClientboundEntityEvent", 0x1A);
709    reg!(47, Play, Clientbound, "ClientboundEntityEvent", 0x1A);
710    reg!(340, Play, Clientbound, "ClientboundEntityEvent", 0x1B);
711    reg!(762, Play, Clientbound, "ClientboundEntityEvent", 0x1C);
712    reg!(765, Play, Clientbound, "ClientboundEntityEvent", 0x1D);
713    reg!(767, Play, Clientbound, "ClientboundEntityEvent", 0x20);
714    reg!(5, Play, Clientbound, "ClientboundExplosion", 0x27);
715    reg!(47, Play, Clientbound, "ClientboundExplosion", 0x27);
716    reg!(340, Play, Clientbound, "ClientboundExplosion", 0x1C);
717    reg!(762, Play, Clientbound, "ClientboundExplosion", 0x1D);
718    reg!(765, Play, Clientbound, "ClientboundExplosion", 0x1E);
719    reg!(767, Play, Clientbound, "ClientboundExplosion", 0x21);
720    reg!(5, Play, Clientbound, "ClientboundForgetLevelChunk", 0x26);
721    reg!(47, Play, Clientbound, "ClientboundForgetLevelChunk", 0x26);
722    reg!(340, Play, Clientbound, "ClientboundForgetLevelChunk", 0x22);
723    reg!(762, Play, Clientbound, "ClientboundForgetLevelChunk", 0x1E);
724    reg!(765, Play, Clientbound, "ClientboundForgetLevelChunk", 0x1F);
725    reg!(767, Play, Clientbound, "ClientboundForgetLevelChunk", 0x22);
726    reg!(5, Play, Clientbound, "ClientboundGameEvent", 0x2B);
727    reg!(47, Play, Clientbound, "ClientboundGameEvent", 0x2B);
728    reg!(340, Play, Clientbound, "ClientboundGameEvent", 0x1E);
729    reg!(762, Play, Clientbound, "ClientboundGameEvent", 0x1F);
730    reg!(765, Play, Clientbound, "ClientboundGameEvent", 0x20);
731    reg!(767, Play, Clientbound, "ClientboundGameEvent", 0x23);
732    reg!(340, Play, Clientbound, "ClientboundHorseScreenOpen", 0x1F);
733    reg!(762, Play, Clientbound, "ClientboundHorseScreenOpen", 0x20);
734    reg!(765, Play, Clientbound, "ClientboundHorseScreenOpen", 0x21);
735    reg!(767, Play, Clientbound, "ClientboundHorseScreenOpen", 0x24);
736    reg!(762, Play, Clientbound, "ClientboundHurtAnimation", 0x21);
737    reg!(765, Play, Clientbound, "ClientboundHurtAnimation", 0x22);
738    reg!(767, Play, Clientbound, "ClientboundHurtAnimation", 0x25);
739    reg!(47, Play, Clientbound, "ClientboundInitializeBorder", 0x44);
740    reg!(340, Play, Clientbound, "ClientboundInitializeBorder", 0x38);
741    reg!(762, Play, Clientbound, "ClientboundInitializeBorder", 0x22);
742    reg!(765, Play, Clientbound, "ClientboundInitializeBorder", 0x23);
743    reg!(767, Play, Clientbound, "ClientboundInitializeBorder", 0x26);
744    reg!(5, Play, Clientbound, "ClientboundKeepAlive", 0x00);
745    reg!(47, Play, Clientbound, "ClientboundKeepAlive", 0x00);
746    reg!(340, Play, Clientbound, "ClientboundKeepAlive", 0x1F);
747    reg!(762, Play, Clientbound, "ClientboundKeepAlive", 0x24);
748    reg!(765, Play, Clientbound, "ClientboundKeepAlive", 0x26);
749    reg!(767, Play, Clientbound, "ClientboundKeepAlive", 0x29);
750    reg!(5, Play, Clientbound, "ClientboundLevelChunkWithLight", 0x21);
751    reg!(
752        47,
753        Play,
754        Clientbound,
755        "ClientboundLevelChunkWithLight",
756        0x21
757    );
758    reg!(
759        340,
760        Play,
761        Clientbound,
762        "ClientboundLevelChunkWithLight",
763        0x20
764    );
765    reg!(340, Play, Clientbound, "SPacketChunkData", 0x20);
766    reg!(
767        762,
768        Play,
769        Clientbound,
770        "ClientboundLevelChunkWithLight",
771        0x25
772    );
773    reg!(
774        765,
775        Play,
776        Clientbound,
777        "ClientboundLevelChunkWithLight",
778        0x27
779    );
780    reg!(
781        767,
782        Play,
783        Clientbound,
784        "ClientboundLevelChunkWithLight",
785        0x2A
786    );
787    reg!(5, Play, Clientbound, "ClientboundLevelEvent", 0x28);
788    reg!(47, Play, Clientbound, "ClientboundLevelEvent", 0x28);
789    reg!(340, Play, Clientbound, "ClientboundLevelEvent", 0x21);
790    reg!(762, Play, Clientbound, "ClientboundLevelEvent", 0x26);
791    reg!(765, Play, Clientbound, "ClientboundLevelEvent", 0x28);
792    reg!(767, Play, Clientbound, "ClientboundLevelEvent", 0x2B);
793    reg!(5, Play, Clientbound, "ClientboundLevelParticles", 0x2A);
794    reg!(47, Play, Clientbound, "ClientboundLevelParticles", 0x2A);
795    reg!(762, Play, Clientbound, "ClientboundLevelParticles", 0x27);
796    reg!(765, Play, Clientbound, "ClientboundLevelParticles", 0x29);
797    reg!(767, Play, Clientbound, "ClientboundLevelParticles", 0x2C);
798    reg!(762, Play, Clientbound, "ClientboundLightUpdate", 0x28);
799    reg!(765, Play, Clientbound, "ClientboundLightUpdate", 0x2A);
800    reg!(767, Play, Clientbound, "ClientboundLightUpdate", 0x2D);
801    reg!(5, Play, Clientbound, "ClientboundLoginPlay", 0x01);
802    reg!(5, Play, Clientbound, "ClientboundJoinGame", 0x01);
803    reg!(5, Play, Clientbound, "ClientboundLogin", 0x01);
804    reg!(47, Play, Clientbound, "ClientboundLoginPlay", 0x01);
805    reg!(47, Play, Clientbound, "ClientboundJoinGame", 0x01);
806    reg!(47, Play, Clientbound, "ClientboundLogin", 0x01);
807    reg!(340, Play, Clientbound, "ClientboundLoginPlay", 0x23);
808    reg!(340, Play, Clientbound, "ClientboundJoinGame", 0x23);
809    reg!(340, Play, Clientbound, "ClientboundLogin", 0x23);
810    reg!(762, Play, Clientbound, "ClientboundLoginPlay", 0x29);
811    reg!(762, Play, Clientbound, "ClientboundJoinGame", 0x29);
812    reg!(762, Play, Clientbound, "ClientboundLogin", 0x29);
813    reg!(765, Play, Clientbound, "ClientboundLoginPlay", 0x2B);
814    reg!(765, Play, Clientbound, "ClientboundJoinGame", 0x2B);
815    reg!(765, Play, Clientbound, "ClientboundLogin", 0x2B);
816    reg!(767, Play, Clientbound, "ClientboundLoginPlay", 0x2E);
817    reg!(767, Play, Clientbound, "ClientboundJoinGame", 0x2E);
818    reg!(767, Play, Clientbound, "ClientboundLogin", 0x2E);
819    reg!(5, Play, Clientbound, "ClientboundMapItemData", 0x34);
820    reg!(47, Play, Clientbound, "ClientboundMapItemData", 0x34);
821    reg!(340, Play, Clientbound, "ClientboundMapItemData", 0x24);
822    reg!(762, Play, Clientbound, "ClientboundMapItemData", 0x2A);
823    reg!(765, Play, Clientbound, "ClientboundMapItemData", 0x2C);
824    reg!(767, Play, Clientbound, "ClientboundMapItemData", 0x2F);
825    reg!(762, Play, Clientbound, "ClientboundMerchantOffers", 0x2B);
826    reg!(765, Play, Clientbound, "ClientboundMerchantOffers", 0x2D);
827    reg!(767, Play, Clientbound, "ClientboundMerchantOffers", 0x30);
828    reg!(5, Play, Clientbound, "ClientboundMoveEntityPos", 0x15);
829    reg!(47, Play, Clientbound, "ClientboundMoveEntityPos", 0x15);
830    reg!(340, Play, Clientbound, "ClientboundMoveEntityPos", 0x26);
831    reg!(762, Play, Clientbound, "ClientboundMoveEntityPos", 0x2C);
832    reg!(765, Play, Clientbound, "ClientboundMoveEntityPos", 0x2E);
833    reg!(767, Play, Clientbound, "ClientboundMoveEntityPos", 0x31);
834    reg!(5, Play, Clientbound, "ClientboundMoveEntityPosRot", 0x17);
835    reg!(47, Play, Clientbound, "ClientboundMoveEntityPosRot", 0x17);
836    reg!(340, Play, Clientbound, "ClientboundMoveEntityPosRot", 0x27);
837    reg!(762, Play, Clientbound, "ClientboundMoveEntityPosRot", 0x2D);
838    reg!(765, Play, Clientbound, "ClientboundMoveEntityPosRot", 0x2F);
839    reg!(767, Play, Clientbound, "ClientboundMoveEntityPosRot", 0x32);
840    reg!(5, Play, Clientbound, "ClientboundMoveEntityRot", 0x16);
841    reg!(47, Play, Clientbound, "ClientboundMoveEntityRot", 0x16);
842    reg!(340, Play, Clientbound, "ClientboundMoveEntityRot", 0x28);
843    reg!(762, Play, Clientbound, "ClientboundMoveEntityRot", 0x2E);
844    reg!(765, Play, Clientbound, "ClientboundMoveEntityRot", 0x30);
845    reg!(767, Play, Clientbound, "ClientboundMoveEntityRot", 0x33);
846    reg!(340, Play, Clientbound, "ClientboundMoveVehicle", 0x29);
847    reg!(762, Play, Clientbound, "ClientboundMoveVehicle", 0x2F);
848    reg!(765, Play, Clientbound, "ClientboundMoveVehicle", 0x31);
849    reg!(767, Play, Clientbound, "ClientboundMoveVehicle", 0x34);
850    reg!(762, Play, Clientbound, "ClientboundOpenBook", 0x30);
851    reg!(765, Play, Clientbound, "ClientboundOpenBook", 0x32);
852    reg!(767, Play, Clientbound, "ClientboundOpenBook", 0x35);
853    reg!(5, Play, Clientbound, "ClientboundOpenScreen", 0x2D);
854    reg!(47, Play, Clientbound, "ClientboundOpenScreen", 0x2D);
855    reg!(340, Play, Clientbound, "ClientboundOpenScreen", 0x13);
856    reg!(762, Play, Clientbound, "ClientboundOpenScreen", 0x31);
857    reg!(765, Play, Clientbound, "ClientboundOpenScreen", 0x33);
858    reg!(767, Play, Clientbound, "ClientboundOpenScreen", 0x36);
859    reg!(5, Play, Clientbound, "ClientboundOpenSignEditor", 0x36);
860    reg!(47, Play, Clientbound, "ClientboundOpenSignEditor", 0x36);
861    reg!(340, Play, Clientbound, "ClientboundOpenSignEditor", 0x2A);
862    reg!(762, Play, Clientbound, "ClientboundOpenSignEditor", 0x32);
863    reg!(765, Play, Clientbound, "ClientboundOpenSignEditor", 0x34);
864    reg!(767, Play, Clientbound, "ClientboundOpenSignEditor", 0x37);
865    reg!(762, Play, Clientbound, "ClientboundPing", 0x33);
866    reg!(765, Play, Clientbound, "ClientboundPing", 0x35);
867    reg!(767, Play, Clientbound, "ClientboundPing", 0x38);
868    reg!(340, Play, Clientbound, "ClientboundPlaceGhostRecipe", 0x31);
869    reg!(762, Play, Clientbound, "ClientboundPlaceGhostRecipe", 0x35);
870    reg!(765, Play, Clientbound, "ClientboundPlaceGhostRecipe", 0x37);
871    reg!(767, Play, Clientbound, "ClientboundPlaceGhostRecipe", 0x3A);
872    reg!(5, Play, Clientbound, "ClientboundPlayerAbilities", 0x39);
873    reg!(47, Play, Clientbound, "ClientboundPlayerAbilities", 0x39);
874    reg!(340, Play, Clientbound, "ClientboundPlayerAbilities", 0x2C);
875    reg!(762, Play, Clientbound, "ClientboundPlayerAbilities", 0x36);
876    reg!(765, Play, Clientbound, "ClientboundPlayerAbilities", 0x38);
877    reg!(767, Play, Clientbound, "ClientboundPlayerAbilities", 0x3B);
878    reg!(762, Play, Clientbound, "ClientboundPlayerChat", 0x37);
879    reg!(765, Play, Clientbound, "ClientboundPlayerChat", 0x39);
880    reg!(767, Play, Clientbound, "ClientboundPlayerChat", 0x3C);
881    reg!(5, Play, Clientbound, "ClientboundPlayerCombatEnd", 0x42);
882    reg!(47, Play, Clientbound, "ClientboundPlayerCombatEnd", 0x42);
883    reg!(340, Play, Clientbound, "ClientboundPlayerCombatEnd", 0x33);
884    reg!(762, Play, Clientbound, "ClientboundPlayerCombatEnd", 0x38);
885    reg!(765, Play, Clientbound, "ClientboundPlayerCombatEnd", 0x3A);
886    reg!(767, Play, Clientbound, "ClientboundPlayerCombatEnd", 0x3D);
887    reg!(5, Play, Clientbound, "ClientboundPlayerCombatEnter", 0x42);
888    reg!(47, Play, Clientbound, "ClientboundPlayerCombatEnter", 0x42);
889    reg!(340, Play, Clientbound, "ClientboundPlayerCombatEnter", 0x33);
890    reg!(762, Play, Clientbound, "ClientboundPlayerCombatEnter", 0x39);
891    reg!(765, Play, Clientbound, "ClientboundPlayerCombatEnter", 0x3B);
892    reg!(767, Play, Clientbound, "ClientboundPlayerCombatEnter", 0x3E);
893    reg!(5, Play, Clientbound, "ClientboundPlayerCombatKill", 0x42);
894    reg!(47, Play, Clientbound, "ClientboundPlayerCombatKill", 0x42);
895    reg!(340, Play, Clientbound, "ClientboundPlayerCombatKill", 0x33);
896    reg!(762, Play, Clientbound, "ClientboundPlayerCombatKill", 0x3A);
897    reg!(765, Play, Clientbound, "ClientboundPlayerCombatKill", 0x3C);
898    reg!(767, Play, Clientbound, "ClientboundPlayerCombatKill", 0x3F);
899    reg!(762, Play, Clientbound, "ClientboundPlayerInfoRemove", 0x3B);
900    reg!(765, Play, Clientbound, "ClientboundPlayerInfoRemove", 0x3D);
901    reg!(767, Play, Clientbound, "ClientboundPlayerInfoRemove", 0x40);
902    reg!(5, Play, Clientbound, "ClientboundPlayerInfoUpdate", 0x38);
903    reg!(47, Play, Clientbound, "ClientboundPlayerInfoUpdate", 0x38);
904    reg!(340, Play, Clientbound, "ClientboundPlayerInfoUpdate", 0x2E);
905    reg!(762, Play, Clientbound, "ClientboundPlayerInfoUpdate", 0x3C);
906    reg!(765, Play, Clientbound, "ClientboundPlayerInfoUpdate", 0x3E);
907    reg!(767, Play, Clientbound, "ClientboundPlayerInfoUpdate", 0x41);
908    reg!(762, Play, Clientbound, "ClientboundPlayerLookAt", 0x3D);
909    reg!(765, Play, Clientbound, "ClientboundPlayerLookAt", 0x3F);
910    reg!(767, Play, Clientbound, "ClientboundPlayerLookAt", 0x42);
911    reg!(5, Play, Clientbound, "ClientboundPlayerPosition", 0x08);
912    reg!(47, Play, Clientbound, "ClientboundPlayerPosition", 0x08);
913    reg!(762, Play, Clientbound, "ClientboundPlayerPosition", 0x3E);
914    reg!(765, Play, Clientbound, "ClientboundPlayerPosition", 0x40);
915    reg!(767, Play, Clientbound, "ClientboundPlayerPosition", 0x43);
916    reg!(
917        762,
918        Play,
919        Clientbound,
920        "ClientboundRecipeBookSettings",
921        0x3F
922    );
923    reg!(
924        765,
925        Play,
926        Clientbound,
927        "ClientboundRecipeBookSettings",
928        0x41
929    );
930    reg!(
931        767,
932        Play,
933        Clientbound,
934        "ClientboundRecipeBookSettings",
935        0x44
936    );
937    reg!(340, Play, Clientbound, "ClientboundRecipes", 0x34);
938    reg!(762, Play, Clientbound, "ClientboundRecipes", 0x40);
939    reg!(765, Play, Clientbound, "ClientboundRecipes", 0x42);
940    reg!(767, Play, Clientbound, "ClientboundRecipes", 0x45);
941    reg!(5, Play, Clientbound, "ClientboundRemoveEntities", 0x13);
942    reg!(47, Play, Clientbound, "ClientboundRemoveEntities", 0x13);
943    reg!(340, Play, Clientbound, "ClientboundRemoveEntities", 0x32);
944    reg!(762, Play, Clientbound, "ClientboundRemoveEntities", 0x41);
945    reg!(765, Play, Clientbound, "ClientboundRemoveEntities", 0x43);
946    reg!(767, Play, Clientbound, "ClientboundRemoveEntities", 0x46);
947    reg!(5, Play, Clientbound, "ClientboundRemoveEntityEffect", 0x1E);
948    reg!(47, Play, Clientbound, "ClientboundRemoveEntityEffect", 0x1E);
949    reg!(
950        340,
951        Play,
952        Clientbound,
953        "ClientboundRemoveEntityEffect",
954        0x36
955    );
956    reg!(
957        762,
958        Play,
959        Clientbound,
960        "ClientboundRemoveEntityEffect",
961        0x42
962    );
963    reg!(
964        765,
965        Play,
966        Clientbound,
967        "ClientboundRemoveEntityEffect",
968        0x44
969    );
970    reg!(
971        767,
972        Play,
973        Clientbound,
974        "ClientboundRemoveEntityEffect",
975        0x47
976    );
977    reg!(5, Play, Clientbound, "ClientboundResetScore", 0x3B);
978    reg!(47, Play, Clientbound, "ClientboundResetScore", 0x3B);
979    reg!(340, Play, Clientbound, "ClientboundResetScore", 0x4C);
980    reg!(767, Play, Clientbound, "ClientboundResetScore", 0x48);
981    reg!(765, Play, Clientbound, "ClientboundResourcePackPop", 0x46);
982    reg!(767, Play, Clientbound, "ClientboundResourcePackPop", 0x49);
983    reg!(5, Play, Clientbound, "ClientboundResourcePackPush", 0x48);
984    reg!(47, Play, Clientbound, "ClientboundResourcePackPush", 0x48);
985    reg!(340, Play, Clientbound, "ClientboundResourcePackPush", 0x3A);
986    reg!(762, Play, Clientbound, "ClientboundResourcePackPush", 0x43);
987    reg!(765, Play, Clientbound, "ClientboundResourcePackPush", 0x47);
988    reg!(767, Play, Clientbound, "ClientboundResourcePackPush", 0x4A);
989    reg!(5, Play, Clientbound, "ClientboundRespawn", 0x07);
990    reg!(47, Play, Clientbound, "ClientboundRespawn", 0x07);
991    reg!(340, Play, Clientbound, "ClientboundRespawn", 0x35);
992    reg!(762, Play, Clientbound, "ClientboundRespawn", 0x44);
993    reg!(765, Play, Clientbound, "ClientboundRespawn", 0x48);
994    reg!(767, Play, Clientbound, "ClientboundRespawn", 0x4B);
995    reg!(5, Play, Clientbound, "ClientboundRotateHead", 0x19);
996    reg!(47, Play, Clientbound, "ClientboundRotateHead", 0x19);
997    reg!(340, Play, Clientbound, "ClientboundRotateHead", 0x36);
998    reg!(762, Play, Clientbound, "ClientboundRotateHead", 0x45);
999    reg!(765, Play, Clientbound, "ClientboundRotateHead", 0x49);
1000    reg!(767, Play, Clientbound, "ClientboundRotateHead", 0x4C);
1001    reg!(5, Play, Clientbound, "ClientboundSectionBlocksUpdate", 0x22);
1002    reg!(
1003        47,
1004        Play,
1005        Clientbound,
1006        "ClientboundSectionBlocksUpdate",
1007        0x22
1008    );
1009    reg!(
1010        340,
1011        Play,
1012        Clientbound,
1013        "ClientboundSectionBlocksUpdate",
1014        0x10
1015    );
1016    reg!(
1017        762,
1018        Play,
1019        Clientbound,
1020        "ClientboundSectionBlocksUpdate",
1021        0x46
1022    );
1023    reg!(
1024        765,
1025        Play,
1026        Clientbound,
1027        "ClientboundSectionBlocksUpdate",
1028        0x4A
1029    );
1030    reg!(
1031        767,
1032        Play,
1033        Clientbound,
1034        "ClientboundSectionBlocksUpdate",
1035        0x4D
1036    );
1037    reg!(
1038        340,
1039        Play,
1040        Clientbound,
1041        "ClientboundSelectAdvancementsTab",
1042        0x37
1043    );
1044    reg!(
1045        762,
1046        Play,
1047        Clientbound,
1048        "ClientboundSelectAdvancementsTab",
1049        0x47
1050    );
1051    reg!(
1052        765,
1053        Play,
1054        Clientbound,
1055        "ClientboundSelectAdvancementsTab",
1056        0x4B
1057    );
1058    reg!(
1059        767,
1060        Play,
1061        Clientbound,
1062        "ClientboundSelectAdvancementsTab",
1063        0x4E
1064    );
1065    reg!(762, Play, Clientbound, "ClientboundServerData", 0x48);
1066    reg!(765, Play, Clientbound, "ClientboundServerData", 0x4C);
1067    reg!(767, Play, Clientbound, "ClientboundServerData", 0x4F);
1068    reg!(762, Play, Clientbound, "ClientboundSetActionBarText", 0x49);
1069    reg!(765, Play, Clientbound, "ClientboundSetActionBarText", 0x4D);
1070    reg!(767, Play, Clientbound, "ClientboundSetActionBarText", 0x50);
1071    reg!(47, Play, Clientbound, "ClientboundSetBorderCenter", 0x44);
1072    reg!(340, Play, Clientbound, "ClientboundSetBorderCenter", 0x38);
1073    reg!(762, Play, Clientbound, "ClientboundSetBorderCenter", 0x4A);
1074    reg!(765, Play, Clientbound, "ClientboundSetBorderCenter", 0x4E);
1075    reg!(767, Play, Clientbound, "ClientboundSetBorderCenter", 0x51);
1076    reg!(47, Play, Clientbound, "ClientboundSetBorderLerpSize", 0x44);
1077    reg!(340, Play, Clientbound, "ClientboundSetBorderLerpSize", 0x38);
1078    reg!(762, Play, Clientbound, "ClientboundSetBorderLerpSize", 0x4B);
1079    reg!(765, Play, Clientbound, "ClientboundSetBorderLerpSize", 0x4F);
1080    reg!(767, Play, Clientbound, "ClientboundSetBorderLerpSize", 0x52);
1081    reg!(47, Play, Clientbound, "ClientboundSetBorderSize", 0x44);
1082    reg!(340, Play, Clientbound, "ClientboundSetBorderSize", 0x38);
1083    reg!(762, Play, Clientbound, "ClientboundSetBorderSize", 0x4C);
1084    reg!(765, Play, Clientbound, "ClientboundSetBorderSize", 0x50);
1085    reg!(767, Play, Clientbound, "ClientboundSetBorderSize", 0x53);
1086    reg!(
1087        47,
1088        Play,
1089        Clientbound,
1090        "ClientboundSetBorderWarningDelay",
1091        0x44
1092    );
1093    reg!(
1094        340,
1095        Play,
1096        Clientbound,
1097        "ClientboundSetBorderWarningDelay",
1098        0x38
1099    );
1100    reg!(
1101        762,
1102        Play,
1103        Clientbound,
1104        "ClientboundSetBorderWarningDelay",
1105        0x4D
1106    );
1107    reg!(
1108        765,
1109        Play,
1110        Clientbound,
1111        "ClientboundSetBorderWarningDelay",
1112        0x51
1113    );
1114    reg!(
1115        767,
1116        Play,
1117        Clientbound,
1118        "ClientboundSetBorderWarningDelay",
1119        0x54
1120    );
1121    reg!(
1122        47,
1123        Play,
1124        Clientbound,
1125        "ClientboundSetBorderWarningDistance",
1126        0x44
1127    );
1128    reg!(
1129        340,
1130        Play,
1131        Clientbound,
1132        "ClientboundSetBorderWarningDistance",
1133        0x38
1134    );
1135    reg!(
1136        762,
1137        Play,
1138        Clientbound,
1139        "ClientboundSetBorderWarningDistance",
1140        0x4E
1141    );
1142    reg!(
1143        765,
1144        Play,
1145        Clientbound,
1146        "ClientboundSetBorderWarningDistance",
1147        0x52
1148    );
1149    reg!(
1150        767,
1151        Play,
1152        Clientbound,
1153        "ClientboundSetBorderWarningDistance",
1154        0x55
1155    );
1156    reg!(47, Play, Clientbound, "ClientboundSetCamera", 0x43);
1157    reg!(340, Play, Clientbound, "ClientboundSetCamera", 0x39);
1158    reg!(762, Play, Clientbound, "ClientboundSetCamera", 0x4F);
1159    reg!(765, Play, Clientbound, "ClientboundSetCamera", 0x53);
1160    reg!(767, Play, Clientbound, "ClientboundSetCamera", 0x56);
1161    reg!(767, Play, Clientbound, "ClientboundSetCursorItem", 0x57);
1162    reg!(5, Play, Clientbound, "ClientboundSetEntityLink", 0x1B);
1163    reg!(47, Play, Clientbound, "ClientboundSetEntityLink", 0x1B);
1164    reg!(340, Play, Clientbound, "ClientboundSetEntityLink", 0x3F);
1165    reg!(762, Play, Clientbound, "ClientboundSetEntityLink", 0x50);
1166    reg!(765, Play, Clientbound, "ClientboundSetEntityLink", 0x54);
1167    reg!(767, Play, Clientbound, "ClientboundSetEntityLink", 0x58);
1168    reg!(5, Play, Clientbound, "ClientboundSetEntityMotion", 0x12);
1169    reg!(47, Play, Clientbound, "ClientboundSetEntityMotion", 0x12);
1170    reg!(340, Play, Clientbound, "ClientboundSetEntityMotion", 0x3D);
1171    reg!(762, Play, Clientbound, "ClientboundSetEntityMotion", 0x51);
1172    reg!(765, Play, Clientbound, "ClientboundSetEntityMotion", 0x55);
1173    reg!(767, Play, Clientbound, "ClientboundSetEntityMotion", 0x59);
1174    reg!(5, Play, Clientbound, "ClientboundSetEquipment", 0x04);
1175    reg!(47, Play, Clientbound, "ClientboundSetEquipment", 0x04);
1176    reg!(340, Play, Clientbound, "ClientboundSetEquipment", 0x3F);
1177    reg!(762, Play, Clientbound, "ClientboundSetEquipment", 0x52);
1178    reg!(765, Play, Clientbound, "ClientboundSetEquipment", 0x56);
1179    reg!(767, Play, Clientbound, "ClientboundSetEquipment", 0x5A);
1180    reg!(5, Play, Clientbound, "ClientboundSetExperience", 0x1F);
1181    reg!(47, Play, Clientbound, "ClientboundSetExperience", 0x1F);
1182    reg!(340, Play, Clientbound, "ClientboundSetExperience", 0x40);
1183    reg!(762, Play, Clientbound, "ClientboundSetExperience", 0x53);
1184    reg!(765, Play, Clientbound, "ClientboundSetExperience", 0x57);
1185    reg!(767, Play, Clientbound, "ClientboundSetExperience", 0x5B);
1186    reg!(5, Play, Clientbound, "ClientboundSetHealth", 0x06);
1187    reg!(47, Play, Clientbound, "ClientboundSetHealth", 0x06);
1188    reg!(340, Play, Clientbound, "ClientboundSetHealth", 0x41);
1189    reg!(762, Play, Clientbound, "ClientboundSetHealth", 0x54);
1190    reg!(765, Play, Clientbound, "ClientboundSetHealth", 0x58);
1191    reg!(767, Play, Clientbound, "ClientboundSetHealth", 0x5C);
1192    reg!(5, Play, Clientbound, "ClientboundSetHeldItem", 0x09);
1193    reg!(5, Play, Clientbound, "ClientboundSetCarriedItem", 0x09);
1194    reg!(47, Play, Clientbound, "ClientboundSetHeldItem", 0x09);
1195    reg!(47, Play, Clientbound, "ClientboundSetCarriedItem", 0x09);
1196    reg!(340, Play, Clientbound, "ClientboundSetHeldItem", 0x3A);
1197    reg!(340, Play, Clientbound, "ClientboundSetCarriedItem", 0x3A);
1198    reg!(762, Play, Clientbound, "ClientboundSetHeldItem", 0x4A);
1199    reg!(762, Play, Clientbound, "ClientboundSetCarriedItem", 0x4A);
1200    reg!(765, Play, Clientbound, "ClientboundSetHeldItem", 0x4C);
1201    reg!(765, Play, Clientbound, "ClientboundSetCarriedItem", 0x4C);
1202    reg!(767, Play, Clientbound, "ClientboundSetHeldItem", 0x5D);
1203    reg!(767, Play, Clientbound, "ClientboundSetCarriedItem", 0x5D);
1204    reg!(
1205        767,
1206        Play,
1207        Clientbound,
1208        "ClientboundSetPlayerInventory",
1209        0x5E
1210    );
1211    reg!(
1212        5,
1213        Play,
1214        Clientbound,
1215        "ClientboundSetScoreboardObjective",
1216        0x3B
1217    );
1218    reg!(
1219        47,
1220        Play,
1221        Clientbound,
1222        "ClientboundSetScoreboardObjective",
1223        0x3B
1224    );
1225    reg!(
1226        340,
1227        Play,
1228        Clientbound,
1229        "ClientboundSetScoreboardObjective",
1230        0x42
1231    );
1232    reg!(
1233        762,
1234        Play,
1235        Clientbound,
1236        "ClientboundSetScoreboardObjective",
1237        0x55
1238    );
1239    reg!(
1240        765,
1241        Play,
1242        Clientbound,
1243        "ClientboundSetScoreboardObjective",
1244        0x59
1245    );
1246    reg!(
1247        767,
1248        Play,
1249        Clientbound,
1250        "ClientboundSetScoreboardObjective",
1251        0x5F
1252    );
1253    reg!(5, Play, Clientbound, "ClientboundSetScoreboardScore", 0x3C);
1254    reg!(47, Play, Clientbound, "ClientboundSetScoreboardScore", 0x3C);
1255    reg!(
1256        340,
1257        Play,
1258        Clientbound,
1259        "ClientboundSetScoreboardScore",
1260        0x44
1261    );
1262    reg!(
1263        762,
1264        Play,
1265        Clientbound,
1266        "ClientboundSetScoreboardScore",
1267        0x56
1268    );
1269    reg!(
1270        765,
1271        Play,
1272        Clientbound,
1273        "ClientboundSetScoreboardScore",
1274        0x5A
1275    );
1276    reg!(
1277        767,
1278        Play,
1279        Clientbound,
1280        "ClientboundSetScoreboardScore",
1281        0x60
1282    );
1283    reg!(
1284        762,
1285        Play,
1286        Clientbound,
1287        "ClientboundSetSimulationDistance",
1288        0x57
1289    );
1290    reg!(
1291        765,
1292        Play,
1293        Clientbound,
1294        "ClientboundSetSimulationDistance",
1295        0x5B
1296    );
1297    reg!(
1298        767,
1299        Play,
1300        Clientbound,
1301        "ClientboundSetSimulationDistance",
1302        0x61
1303    );
1304    reg!(762, Play, Clientbound, "ClientboundSetSubtitleText", 0x58);
1305    reg!(765, Play, Clientbound, "ClientboundSetSubtitleText", 0x5C);
1306    reg!(767, Play, Clientbound, "ClientboundSetSubtitleText", 0x62);
1307    reg!(5, Play, Clientbound, "ClientboundSetTime", 0x03);
1308    reg!(47, Play, Clientbound, "ClientboundSetTime", 0x03);
1309    reg!(340, Play, Clientbound, "ClientboundSetTime", 0x47);
1310    reg!(762, Play, Clientbound, "ClientboundSetTime", 0x59);
1311    reg!(765, Play, Clientbound, "ClientboundSetTime", 0x5D);
1312    reg!(767, Play, Clientbound, "ClientboundSetTime", 0x63);
1313    reg!(762, Play, Clientbound, "ClientboundSetTitleText", 0x5A);
1314    reg!(765, Play, Clientbound, "ClientboundSetTitleText", 0x5E);
1315    reg!(767, Play, Clientbound, "ClientboundSetTitleText", 0x64);
1316    reg!(
1317        762,
1318        Play,
1319        Clientbound,
1320        "ClientboundSetTitleAnimationTimes",
1321        0x5B
1322    );
1323    reg!(
1324        765,
1325        Play,
1326        Clientbound,
1327        "ClientboundSetTitleAnimationTimes",
1328        0x5F
1329    );
1330    reg!(
1331        767,
1332        Play,
1333        Clientbound,
1334        "ClientboundSetTitleAnimationTimes",
1335        0x65
1336    );
1337    reg!(762, Play, Clientbound, "ClientboundSoundEntity", 0x5C);
1338    reg!(765, Play, Clientbound, "ClientboundSoundEntity", 0x60);
1339    reg!(767, Play, Clientbound, "ClientboundSoundEntity", 0x66);
1340    reg!(5, Play, Clientbound, "ClientboundSound", 0x29);
1341    reg!(47, Play, Clientbound, "ClientboundSound", 0x29);
1342    reg!(340, Play, Clientbound, "ClientboundSound", 0x49);
1343    reg!(762, Play, Clientbound, "ClientboundSound", 0x5D);
1344    reg!(765, Play, Clientbound, "ClientboundSound", 0x61);
1345    reg!(767, Play, Clientbound, "ClientboundSound", 0x67);
1346    reg!(
1347        765,
1348        Play,
1349        Clientbound,
1350        "ClientboundStartConfiguration",
1351        0x62
1352    );
1353    reg!(
1354        767,
1355        Play,
1356        Clientbound,
1357        "ClientboundStartConfiguration",
1358        0x68
1359    );
1360    reg!(340, Play, Clientbound, "ClientboundStopSound", 0x4A);
1361    reg!(762, Play, Clientbound, "ClientboundStopSound", 0x5E);
1362    reg!(765, Play, Clientbound, "ClientboundStopSound", 0x63);
1363    reg!(767, Play, Clientbound, "ClientboundStopSound", 0x69);
1364    reg!(767, Play, Clientbound, "ClientboundStoreCookie", 0x6A);
1365    reg!(5, Play, Clientbound, "ClientboundSystemChat", 0x02);
1366    reg!(5, Play, Clientbound, "ClientboundChatMessage", 0x02);
1367    reg!(47, Play, Clientbound, "ClientboundSystemChat", 0x02);
1368    reg!(47, Play, Clientbound, "ClientboundChatMessage", 0x02);
1369    reg!(340, Play, Clientbound, "ClientboundSystemChat", 0x0F);
1370    reg!(340, Play, Clientbound, "ClientboundChatMessage", 0x0F);
1371    reg!(762, Play, Clientbound, "ClientboundSystemChat", 0x62);
1372    reg!(762, Play, Clientbound, "ClientboundChatMessage", 0x62);
1373    reg!(765, Play, Clientbound, "ClientboundSystemChat", 0x64);
1374    reg!(765, Play, Clientbound, "ClientboundChatMessage", 0x64);
1375    reg!(767, Play, Clientbound, "ClientboundSystemChat", 0x6B);
1376    reg!(767, Play, Clientbound, "ClientboundChatMessage", 0x6B);
1377    reg!(5, Play, Clientbound, "ClientboundTabList", 0x47);
1378    reg!(47, Play, Clientbound, "ClientboundTabList", 0x47);
1379    reg!(340, Play, Clientbound, "ClientboundTabList", 0x4A);
1380    reg!(762, Play, Clientbound, "ClientboundTabList", 0x63);
1381    reg!(765, Play, Clientbound, "ClientboundTabList", 0x65);
1382    reg!(767, Play, Clientbound, "ClientboundTabList", 0x6C);
1383    reg!(762, Play, Clientbound, "ClientboundTagQuery", 0x64);
1384    reg!(765, Play, Clientbound, "ClientboundTagQuery", 0x66);
1385    reg!(767, Play, Clientbound, "ClientboundTagQuery", 0x6D);
1386    reg!(5, Play, Clientbound, "ClientboundTakeItemEntity", 0x0D);
1387    reg!(47, Play, Clientbound, "ClientboundTakeItemEntity", 0x0D);
1388    reg!(340, Play, Clientbound, "ClientboundTakeItemEntity", 0x4B);
1389    reg!(762, Play, Clientbound, "ClientboundTakeItemEntity", 0x65);
1390    reg!(765, Play, Clientbound, "ClientboundTakeItemEntity", 0x67);
1391    reg!(767, Play, Clientbound, "ClientboundTakeItemEntity", 0x6E);
1392    reg!(5, Play, Clientbound, "ClientboundTeleportEntity", 0x18);
1393    reg!(47, Play, Clientbound, "ClientboundTeleportEntity", 0x18);
1394    reg!(340, Play, Clientbound, "ClientboundTeleportEntity", 0x4C);
1395    reg!(762, Play, Clientbound, "ClientboundTeleportEntity", 0x66);
1396    reg!(765, Play, Clientbound, "ClientboundTeleportEntity", 0x68);
1397    reg!(767, Play, Clientbound, "ClientboundTeleportEntity", 0x6F);
1398    reg!(765, Play, Clientbound, "ClientboundTickingState", 0x69);
1399    reg!(767, Play, Clientbound, "ClientboundTickingState", 0x70);
1400    reg!(765, Play, Clientbound, "ClientboundTickingStep", 0x6A);
1401    reg!(767, Play, Clientbound, "ClientboundTickingStep", 0x71);
1402    reg!(767, Play, Clientbound, "ClientboundTransfer", 0x72);
1403    reg!(
1404        340,
1405        Play,
1406        Clientbound,
1407        "ClientboundUpdateAdvancements",
1408        0x4E
1409    );
1410    reg!(
1411        762,
1412        Play,
1413        Clientbound,
1414        "ClientboundUpdateAdvancements",
1415        0x67
1416    );
1417    reg!(
1418        765,
1419        Play,
1420        Clientbound,
1421        "ClientboundUpdateAdvancements",
1422        0x6B
1423    );
1424    reg!(
1425        767,
1426        Play,
1427        Clientbound,
1428        "ClientboundUpdateAdvancements",
1429        0x73
1430    );
1431    reg!(5, Play, Clientbound, "ClientboundUpdateAttributes", 0x20);
1432    reg!(47, Play, Clientbound, "ClientboundUpdateAttributes", 0x20);
1433    reg!(340, Play, Clientbound, "ClientboundUpdateAttributes", 0x4F);
1434    reg!(762, Play, Clientbound, "ClientboundUpdateAttributes", 0x68);
1435    reg!(765, Play, Clientbound, "ClientboundUpdateAttributes", 0x6C);
1436    reg!(767, Play, Clientbound, "ClientboundUpdateAttributes", 0x74);
1437    reg!(5, Play, Clientbound, "ClientboundUpdateEffects", 0x1D);
1438    reg!(47, Play, Clientbound, "ClientboundUpdateEffects", 0x1D);
1439    reg!(340, Play, Clientbound, "ClientboundUpdateEffects", 0x51);
1440    reg!(762, Play, Clientbound, "ClientboundUpdateEffects", 0x69);
1441    reg!(765, Play, Clientbound, "ClientboundUpdateEffects", 0x6D);
1442    reg!(767, Play, Clientbound, "ClientboundUpdateEffects", 0x75);
1443    reg!(762, Play, Clientbound, "ClientboundUpdateRecipes", 0x6A);
1444    reg!(765, Play, Clientbound, "ClientboundUpdateRecipes", 0x6E);
1445    reg!(767, Play, Clientbound, "ClientboundUpdateRecipes", 0x76);
1446    reg!(762, Play, Clientbound, "ClientboundUpdateTags", 0x6B);
1447    reg!(765, Play, Clientbound, "ClientboundUpdateTags", 0x6F);
1448    reg!(767, Play, Clientbound, "ClientboundUpdateTags", 0x77);
1449
1450    reg!(340, Play, Serverbound, "ServerboundTeleportConfirm", 0x00);
1451    reg!(
1452        340,
1453        Play,
1454        Serverbound,
1455        "ServerboundAcceptTeleportation",
1456        0x00
1457    );
1458    reg!(762, Play, Serverbound, "ServerboundTeleportConfirm", 0x00);
1459    reg!(
1460        762,
1461        Play,
1462        Serverbound,
1463        "ServerboundAcceptTeleportation",
1464        0x00
1465    );
1466    reg!(765, Play, Serverbound, "ServerboundTeleportConfirm", 0x00);
1467    reg!(
1468        765,
1469        Play,
1470        Serverbound,
1471        "ServerboundAcceptTeleportation",
1472        0x00
1473    );
1474    reg!(767, Play, Serverbound, "ServerboundTeleportConfirm", 0x00);
1475    reg!(
1476        767,
1477        Play,
1478        Serverbound,
1479        "ServerboundAcceptTeleportation",
1480        0x00
1481    );
1482    reg!(
1483        5,
1484        Play,
1485        Serverbound,
1486        "ServerboundMovePlayerStatusOnly",
1487        0x03
1488    );
1489    reg!(
1490        47,
1491        Play,
1492        Serverbound,
1493        "ServerboundMovePlayerStatusOnly",
1494        0x03
1495    );
1496    reg!(
1497        340,
1498        Play,
1499        Serverbound,
1500        "ServerboundMovePlayerStatusOnly",
1501        0x0C
1502    );
1503    reg!(
1504        762,
1505        Play,
1506        Serverbound,
1507        "ServerboundMovePlayerStatusOnly",
1508        0x13
1509    );
1510    reg!(
1511        765,
1512        Play,
1513        Serverbound,
1514        "ServerboundMovePlayerStatusOnly",
1515        0x15
1516    );
1517    reg!(
1518        767,
1519        Play,
1520        Serverbound,
1521        "ServerboundMovePlayerStatusOnly",
1522        0x16
1523    );
1524    reg!(5, Play, Serverbound, "ServerboundMovePlayerPos", 0x04);
1525    reg!(47, Play, Serverbound, "ServerboundMovePlayerPos", 0x04);
1526    reg!(340, Play, Serverbound, "ServerboundMovePlayerPos", 0x0D);
1527    reg!(762, Play, Serverbound, "ServerboundMovePlayerPos", 0x14);
1528    reg!(765, Play, Serverbound, "ServerboundMovePlayerPos", 0x16);
1529    reg!(767, Play, Serverbound, "ServerboundMovePlayerPos", 0x17);
1530    reg!(5, Play, Serverbound, "ServerboundMovePlayerPosRot", 0x06);
1531    reg!(47, Play, Serverbound, "ServerboundMovePlayerPosRot", 0x06);
1532    reg!(340, Play, Serverbound, "ServerboundMovePlayerPosRot", 0x0F);
1533    reg!(762, Play, Serverbound, "ServerboundMovePlayerPosRot", 0x16);
1534    reg!(765, Play, Serverbound, "ServerboundMovePlayerPosRot", 0x18);
1535    reg!(767, Play, Serverbound, "ServerboundMovePlayerPosRot", 0x19);
1536    reg!(5, Play, Serverbound, "ServerboundMovePlayerRot", 0x05);
1537    reg!(47, Play, Serverbound, "ServerboundMovePlayerRot", 0x05);
1538    reg!(340, Play, Serverbound, "ServerboundMovePlayerRot", 0x0E);
1539    reg!(762, Play, Serverbound, "ServerboundMovePlayerRot", 0x15);
1540    reg!(765, Play, Serverbound, "ServerboundMovePlayerRot", 0x17);
1541    reg!(767, Play, Serverbound, "ServerboundMovePlayerRot", 0x18);
1542    reg!(340, Play, Serverbound, "ServerboundVehicleMove", 0x10);
1543    reg!(762, Play, Serverbound, "ServerboundVehicleMove", 0x17);
1544    reg!(765, Play, Serverbound, "ServerboundVehicleMove", 0x19);
1545    reg!(767, Play, Serverbound, "ServerboundVehicleMove", 0x1A);
1546    reg!(340, Play, Serverbound, "ServerboundSteerBoat", 0x11);
1547    reg!(762, Play, Serverbound, "ServerboundSteerBoat", 0x18);
1548    reg!(765, Play, Serverbound, "ServerboundSteerBoat", 0x1A);
1549    reg!(767, Play, Serverbound, "ServerboundSteerBoat", 0x1B);
1550    reg!(5, Play, Serverbound, "ServerboundPlayerAbilities", 0x13);
1551    reg!(47, Play, Serverbound, "ServerboundPlayerAbilities", 0x13);
1552    reg!(340, Play, Serverbound, "ServerboundPlayerAbilities", 0x13);
1553    reg!(762, Play, Serverbound, "ServerboundPlayerAbilities", 0x1B);
1554    reg!(765, Play, Serverbound, "ServerboundPlayerAbilities", 0x1D);
1555    reg!(767, Play, Serverbound, "ServerboundPlayerAbilities", 0x1E);
1556    reg!(5, Play, Serverbound, "ServerboundPlayerAction", 0x07);
1557    reg!(47, Play, Serverbound, "ServerboundPlayerAction", 0x07);
1558    reg!(340, Play, Serverbound, "ServerboundPlayerAction", 0x14);
1559    reg!(762, Play, Serverbound, "ServerboundPlayerAction", 0x1C);
1560    reg!(765, Play, Serverbound, "ServerboundPlayerAction", 0x1E);
1561    reg!(767, Play, Serverbound, "ServerboundPlayerAction", 0x1F);
1562    reg!(5, Play, Serverbound, "ServerboundEntityAction", 0x0B);
1563    reg!(47, Play, Serverbound, "ServerboundEntityAction", 0x0B);
1564    reg!(340, Play, Serverbound, "ServerboundEntityAction", 0x15);
1565    reg!(762, Play, Serverbound, "ServerboundEntityAction", 0x1D);
1566    reg!(765, Play, Serverbound, "ServerboundEntityAction", 0x1F);
1567    reg!(767, Play, Serverbound, "ServerboundEntityAction", 0x20);
1568    reg!(5, Play, Serverbound, "ServerboundSteerVehicle", 0x0C);
1569    reg!(47, Play, Serverbound, "ServerboundSteerVehicle", 0x0C);
1570    reg!(340, Play, Serverbound, "ServerboundSteerVehicle", 0x16);
1571    reg!(762, Play, Serverbound, "ServerboundSteerVehicle", 0x1E);
1572    reg!(765, Play, Serverbound, "ServerboundSteerVehicle", 0x20);
1573    reg!(767, Play, Serverbound, "ServerboundSteerVehicle", 0x21);
1574    reg!(5, Play, Serverbound, "ServerboundInteract", 0x02);
1575    reg!(47, Play, Serverbound, "ServerboundInteract", 0x02);
1576    reg!(340, Play, Serverbound, "ServerboundInteract", 0x0A);
1577    reg!(762, Play, Serverbound, "ServerboundInteract", 0x11);
1578    reg!(765, Play, Serverbound, "ServerboundInteract", 0x13);
1579    reg!(767, Play, Serverbound, "ServerboundInteract", 0x14);
1580    reg!(
1581        767,
1582        Play,
1583        Serverbound,
1584        "ServerboundPlayerWeaponAttack",
1585        0x22
1586    );
1587    reg!(5, Play, Serverbound, "ServerboundAnimation", 0x0A);
1588    reg!(5, Play, Serverbound, "ServerboundSwingArm", 0x0A);
1589    reg!(47, Play, Serverbound, "ServerboundAnimation", 0x0A);
1590    reg!(47, Play, Serverbound, "ServerboundSwingArm", 0x0A);
1591    reg!(340, Play, Serverbound, "ServerboundAnimation", 0x1D);
1592    reg!(340, Play, Serverbound, "ServerboundSwingArm", 0x1D);
1593    reg!(762, Play, Serverbound, "ServerboundAnimation", 0x2C);
1594    reg!(762, Play, Serverbound, "ServerboundSwingArm", 0x2C);
1595    reg!(765, Play, Serverbound, "ServerboundAnimation", 0x2E);
1596    reg!(765, Play, Serverbound, "ServerboundSwingArm", 0x2E);
1597    reg!(767, Play, Serverbound, "ServerboundAnimation", 0x32);
1598    reg!(767, Play, Serverbound, "ServerboundSwingArm", 0x32);
1599    reg!(47, Play, Serverbound, "ServerboundSpectate", 0x18);
1600    reg!(340, Play, Serverbound, "ServerboundSpectate", 0x1E);
1601    reg!(762, Play, Serverbound, "ServerboundSpectate", 0x2D);
1602    reg!(765, Play, Serverbound, "ServerboundSpectate", 0x2F);
1603    reg!(767, Play, Serverbound, "ServerboundSpectate", 0x33);
1604    reg!(
1605        5,
1606        Play,
1607        Serverbound,
1608        "ServerboundPlayerBlockPlacement",
1609        0x08
1610    );
1611    reg!(5, Play, Serverbound, "ServerboundUseItemOn", 0x08);
1612    reg!(
1613        47,
1614        Play,
1615        Serverbound,
1616        "ServerboundPlayerBlockPlacement",
1617        0x08
1618    );
1619    reg!(47, Play, Serverbound, "ServerboundUseItemOn", 0x08);
1620    reg!(
1621        340,
1622        Play,
1623        Serverbound,
1624        "ServerboundPlayerBlockPlacement",
1625        0x1F
1626    );
1627    reg!(340, Play, Serverbound, "ServerboundUseItemOn", 0x1F);
1628    reg!(
1629        762,
1630        Play,
1631        Serverbound,
1632        "ServerboundPlayerBlockPlacement",
1633        0x2E
1634    );
1635    reg!(762, Play, Serverbound, "ServerboundUseItemOn", 0x2E);
1636    reg!(
1637        765,
1638        Play,
1639        Serverbound,
1640        "ServerboundPlayerBlockPlacement",
1641        0x30
1642    );
1643    reg!(765, Play, Serverbound, "ServerboundUseItemOn", 0x30);
1644    reg!(
1645        767,
1646        Play,
1647        Serverbound,
1648        "ServerboundPlayerBlockPlacement",
1649        0x34
1650    );
1651    reg!(767, Play, Serverbound, "ServerboundUseItemOn", 0x34);
1652    reg!(340, Play, Serverbound, "ServerboundUseItem", 0x20);
1653    reg!(762, Play, Serverbound, "ServerboundUseItem", 0x2F);
1654    reg!(765, Play, Serverbound, "ServerboundUseItem", 0x31);
1655    reg!(767, Play, Serverbound, "ServerboundUseItem", 0x35);
1656    reg!(5, Play, Serverbound, "ServerboundCloseWindow", 0x0D);
1657    reg!(47, Play, Serverbound, "ServerboundCloseWindow", 0x0D);
1658    reg!(340, Play, Serverbound, "ServerboundCloseWindow", 0x08);
1659    reg!(762, Play, Serverbound, "ServerboundCloseWindow", 0x0B);
1660    reg!(765, Play, Serverbound, "ServerboundCloseWindow", 0x0C);
1661    reg!(767, Play, Serverbound, "ServerboundCloseWindow", 0x0E);
1662    reg!(5, Play, Serverbound, "ServerboundClickWindow", 0x0E);
1663    reg!(47, Play, Serverbound, "ServerboundClickWindow", 0x0E);
1664    reg!(340, Play, Serverbound, "ServerboundClickWindow", 0x07);
1665    reg!(762, Play, Serverbound, "ServerboundClickWindow", 0x0A);
1666    reg!(765, Play, Serverbound, "ServerboundClickWindow", 0x0B);
1667    reg!(767, Play, Serverbound, "ServerboundClickWindow", 0x0D);
1668    reg!(5, Play, Serverbound, "ServerboundClickWindowButton", 0x11);
1669    reg!(47, Play, Serverbound, "ServerboundClickWindowButton", 0x11);
1670    reg!(340, Play, Serverbound, "ServerboundClickWindowButton", 0x06);
1671    reg!(762, Play, Serverbound, "ServerboundClickWindowButton", 0x09);
1672    reg!(765, Play, Serverbound, "ServerboundClickWindowButton", 0x0A);
1673    reg!(767, Play, Serverbound, "ServerboundClickWindowButton", 0x0C);
1674    reg!(
1675        5,
1676        Play,
1677        Serverbound,
1678        "ServerboundCreativeInventoryAction",
1679        0x10
1680    );
1681    reg!(
1682        47,
1683        Play,
1684        Serverbound,
1685        "ServerboundCreativeInventoryAction",
1686        0x10
1687    );
1688    reg!(
1689        340,
1690        Play,
1691        Serverbound,
1692        "ServerboundCreativeInventoryAction",
1693        0x1B
1694    );
1695    reg!(
1696        762,
1697        Play,
1698        Serverbound,
1699        "ServerboundCreativeInventoryAction",
1700        0x28
1701    );
1702    reg!(
1703        765,
1704        Play,
1705        Serverbound,
1706        "ServerboundCreativeInventoryAction",
1707        0x2A
1708    );
1709    reg!(
1710        767,
1711        Play,
1712        Serverbound,
1713        "ServerboundCreativeInventoryAction",
1714        0x2E
1715    );
1716    reg!(5, Play, Serverbound, "ServerboundHeldItemChange", 0x09);
1717    reg!(47, Play, Serverbound, "ServerboundHeldItemChange", 0x09);
1718    reg!(340, Play, Serverbound, "ServerboundHeldItemChange", 0x1A);
1719    reg!(762, Play, Serverbound, "ServerboundHeldItemChange", 0x25);
1720    reg!(765, Play, Serverbound, "ServerboundHeldItemChange", 0x27);
1721    reg!(767, Play, Serverbound, "ServerboundHeldItemChange", 0x2B);
1722    reg!(
1723        767,
1724        Play,
1725        Serverbound,
1726        "ServerboundSetCreativeModeSlot",
1727        0x2C
1728    );
1729    reg!(5, Play, Serverbound, "ServerboundKeepAlive", 0x00);
1730    reg!(47, Play, Serverbound, "ServerboundKeepAlive", 0x00);
1731    reg!(340, Play, Serverbound, "ServerboundKeepAlive", 0x0B);
1732    reg!(762, Play, Serverbound, "ServerboundKeepAlive", 0x12);
1733    reg!(765, Play, Serverbound, "ServerboundKeepAlive", 0x14);
1734    reg!(767, Play, Serverbound, "ServerboundKeepAlive", 0x15);
1735    reg!(5, Play, Serverbound, "ServerboundChatMessage", 0x01);
1736    reg!(47, Play, Serverbound, "ServerboundChatMessage", 0x01);
1737    reg!(340, Play, Serverbound, "ServerboundChatMessage", 0x02);
1738    reg!(762, Play, Serverbound, "ServerboundChatMessage", 0x04);
1739    reg!(765, Play, Serverbound, "ServerboundChatMessage", 0x05);
1740    reg!(767, Play, Serverbound, "ServerboundChatMessage", 0x06);
1741    reg!(762, Play, Serverbound, "ServerboundChatCommand", 0x03);
1742    reg!(765, Play, Serverbound, "ServerboundChatCommand", 0x04);
1743    reg!(767, Play, Serverbound, "ServerboundChatCommand", 0x05);
1744    reg!(762, Play, Serverbound, "ServerboundChatSessionUpdate", 0x05);
1745    reg!(765, Play, Serverbound, "ServerboundChatSessionUpdate", 0x06);
1746    reg!(767, Play, Serverbound, "ServerboundChatSessionUpdate", 0x07);
1747    reg!(5, Play, Serverbound, "ServerboundClientStatus", 0x16);
1748    reg!(47, Play, Serverbound, "ServerboundClientStatus", 0x16);
1749    reg!(340, Play, Serverbound, "ServerboundClientStatus", 0x03);
1750    reg!(762, Play, Serverbound, "ServerboundClientStatus", 0x06);
1751    reg!(765, Play, Serverbound, "ServerboundClientStatus", 0x07);
1752    reg!(767, Play, Serverbound, "ServerboundClientStatus", 0x08);
1753    reg!(5, Play, Serverbound, "ServerboundClientSettings", 0x15);
1754    reg!(5, Play, Serverbound, "ServerboundClientInformation", 0x15);
1755    reg!(47, Play, Serverbound, "ServerboundClientSettings", 0x15);
1756    reg!(47, Play, Serverbound, "ServerboundClientInformation", 0x15);
1757    reg!(340, Play, Serverbound, "ServerboundClientSettings", 0x04);
1758    reg!(340, Play, Serverbound, "ServerboundClientInformation", 0x04);
1759    reg!(762, Play, Serverbound, "ServerboundClientSettings", 0x07);
1760    reg!(762, Play, Serverbound, "ServerboundClientInformation", 0x07);
1761    reg!(765, Play, Serverbound, "ServerboundClientSettings", 0x08);
1762    reg!(765, Play, Serverbound, "ServerboundClientInformation", 0x08);
1763    reg!(767, Play, Serverbound, "ServerboundClientSettings", 0x09);
1764    reg!(767, Play, Serverbound, "ServerboundClientInformation", 0x09);
1765    reg!(5, Play, Serverbound, "ServerboundPluginMessage", 0x17);
1766    reg!(47, Play, Serverbound, "ServerboundPluginMessage", 0x17);
1767    reg!(340, Play, Serverbound, "ServerboundPluginMessage", 0x09);
1768    reg!(762, Play, Serverbound, "ServerboundPluginMessage", 0x0C);
1769    reg!(765, Play, Serverbound, "ServerboundPluginMessage", 0x0D);
1770    reg!(767, Play, Serverbound, "ServerboundPluginMessage", 0x0F);
1771    reg!(5, Play, Serverbound, "ServerboundResourcePackStatus", 0x19);
1772    reg!(47, Play, Serverbound, "ServerboundResourcePackStatus", 0x19);
1773    reg!(
1774        340,
1775        Play,
1776        Serverbound,
1777        "ServerboundResourcePackStatus",
1778        0x19
1779    );
1780    reg!(
1781        762,
1782        Play,
1783        Serverbound,
1784        "ServerboundResourcePackStatus",
1785        0x24
1786    );
1787    reg!(
1788        765,
1789        Play,
1790        Serverbound,
1791        "ServerboundResourcePackStatus",
1792        0x26
1793    );
1794    reg!(
1795        767,
1796        Play,
1797        Serverbound,
1798        "ServerboundResourcePackStatus",
1799        0x2A
1800    );
1801    reg!(762, Play, Serverbound, "ServerboundPong", 0x20);
1802    reg!(765, Play, Serverbound, "ServerboundPong", 0x22);
1803    reg!(767, Play, Serverbound, "ServerboundPong", 0x24);
1804    reg!(
1805        765,
1806        Play,
1807        Serverbound,
1808        "ServerboundConfigurationAcknowledged",
1809        0x0B
1810    );
1811    reg!(
1812        767,
1813        Play,
1814        Serverbound,
1815        "ServerboundConfigurationAcknowledged",
1816        0x0B
1817    );
1818    reg!(767, Play, Serverbound, "ServerboundButtonPressed", 0x0C);
1819    reg!(5, Play, Serverbound, "ServerboundCommandSuggestion", 0x14);
1820    reg!(47, Play, Serverbound, "ServerboundCommandSuggestion", 0x14);
1821    reg!(340, Play, Serverbound, "ServerboundCommandSuggestion", 0x01);
1822    reg!(762, Play, Serverbound, "ServerboundCommandSuggestion", 0x09);
1823    reg!(765, Play, Serverbound, "ServerboundCommandSuggestion", 0x09);
1824    reg!(767, Play, Serverbound, "ServerboundCommandSuggestion", 0x0A);
1825    reg!(762, Play, Serverbound, "ServerboundDifficultyChange", 0x02);
1826    reg!(765, Play, Serverbound, "ServerboundDifficultyChange", 0x02);
1827    reg!(767, Play, Serverbound, "ServerboundDifficultyChange", 0x02);
1828    reg!(762, Play, Serverbound, "ServerboundDifficultyLock", 0x10);
1829    reg!(765, Play, Serverbound, "ServerboundDifficultyLock", 0x11);
1830    reg!(767, Play, Serverbound, "ServerboundDifficultyLock", 0x12);
1831    reg!(762, Play, Serverbound, "ServerboundEditBook", 0x0D);
1832    reg!(765, Play, Serverbound, "ServerboundEditBook", 0x0E);
1833    reg!(767, Play, Serverbound, "ServerboundEditBook", 0x10);
1834    reg!(762, Play, Serverbound, "ServerboundEntityTagQuery", 0x0E);
1835    reg!(765, Play, Serverbound, "ServerboundEntityTagQuery", 0x0F);
1836    reg!(767, Play, Serverbound, "ServerboundEntityTagQuery", 0x11);
1837    reg!(762, Play, Serverbound, "ServerboundJigsawGenerate", 0x0F);
1838    reg!(765, Play, Serverbound, "ServerboundJigsawGenerate", 0x10);
1839    reg!(767, Play, Serverbound, "ServerboundJigsawGenerate", 0x13);
1840    reg!(762, Play, Serverbound, "ServerboundPaddleBoat", 0x18);
1841    reg!(765, Play, Serverbound, "ServerboundPaddleBoat", 0x1A);
1842    reg!(767, Play, Serverbound, "ServerboundPaddleBoat", 0x1B);
1843    reg!(340, Play, Serverbound, "ServerboundPickItem", 0x12);
1844    reg!(762, Play, Serverbound, "ServerboundPickItem", 0x19);
1845    reg!(765, Play, Serverbound, "ServerboundPickItem", 0x1B);
1846    reg!(767, Play, Serverbound, "ServerboundPickItem", 0x1C);
1847    reg!(340, Play, Serverbound, "ServerboundPlaceRecipe", 0x13);
1848    reg!(762, Play, Serverbound, "ServerboundPlaceRecipe", 0x1A);
1849    reg!(765, Play, Serverbound, "ServerboundPlaceRecipe", 0x1C);
1850    reg!(767, Play, Serverbound, "ServerboundPlaceRecipe", 0x1D);
1851    reg!(
1852        340,
1853        Play,
1854        Serverbound,
1855        "ServerboundRecipeBookChangeSettings",
1856        0x17
1857    );
1858    reg!(
1859        762,
1860        Play,
1861        Serverbound,
1862        "ServerboundRecipeBookChangeSettings",
1863        0x21
1864    );
1865    reg!(
1866        765,
1867        Play,
1868        Serverbound,
1869        "ServerboundRecipeBookChangeSettings",
1870        0x23
1871    );
1872    reg!(
1873        767,
1874        Play,
1875        Serverbound,
1876        "ServerboundRecipeBookChangeSettings",
1877        0x26
1878    );
1879    reg!(
1880        340,
1881        Play,
1882        Serverbound,
1883        "ServerboundRecipeBookSeenRecipe",
1884        0x18
1885    );
1886    reg!(
1887        762,
1888        Play,
1889        Serverbound,
1890        "ServerboundRecipeBookSeenRecipe",
1891        0x22
1892    );
1893    reg!(
1894        765,
1895        Play,
1896        Serverbound,
1897        "ServerboundRecipeBookSeenRecipe",
1898        0x24
1899    );
1900    reg!(
1901        767,
1902        Play,
1903        Serverbound,
1904        "ServerboundRecipeBookSeenRecipe",
1905        0x27
1906    );
1907    reg!(762, Play, Serverbound, "ServerboundRenameItem", 0x23);
1908    reg!(765, Play, Serverbound, "ServerboundRenameItem", 0x25);
1909    reg!(767, Play, Serverbound, "ServerboundRenameItem", 0x29);
1910    reg!(340, Play, Serverbound, "ServerboundSelectTrade", 0x1C);
1911    reg!(762, Play, Serverbound, "ServerboundSelectTrade", 0x26);
1912    reg!(765, Play, Serverbound, "ServerboundSelectTrade", 0x28);
1913    reg!(767, Play, Serverbound, "ServerboundSelectTrade", 0x2D);
1914    reg!(340, Play, Serverbound, "ServerboundSetBeaconEffect", 0x1A);
1915    reg!(762, Play, Serverbound, "ServerboundSetBeaconEffect", 0x27);
1916    reg!(765, Play, Serverbound, "ServerboundSetBeaconEffect", 0x29);
1917    reg!(767, Play, Serverbound, "ServerboundSetBeaconEffect", 0x2F);
1918    reg!(340, Play, Serverbound, "ServerboundSetStructureBlock", 0x21);
1919    reg!(762, Play, Serverbound, "ServerboundSetStructureBlock", 0x30);
1920    reg!(765, Play, Serverbound, "ServerboundSetStructureBlock", 0x32);
1921    reg!(767, Play, Serverbound, "ServerboundSetStructureBlock", 0x36);
1922    reg!(767, Play, Serverbound, "ServerboundSetMerchantTrade", 0x2D);
1923    reg!(
1924        340,
1925        Play,
1926        Serverbound,
1927        "ServerboundUpdateCommandBlock",
1928        0x22
1929    );
1930    reg!(
1931        762,
1932        Play,
1933        Serverbound,
1934        "ServerboundUpdateCommandBlock",
1935        0x2A
1936    );
1937    reg!(
1938        765,
1939        Play,
1940        Serverbound,
1941        "ServerboundUpdateCommandBlock",
1942        0x2C
1943    );
1944    reg!(
1945        767,
1946        Play,
1947        Serverbound,
1948        "ServerboundUpdateCommandBlock",
1949        0x30
1950    );
1951    reg!(
1952        340,
1953        Play,
1954        Serverbound,
1955        "ServerboundUpdateCommandBlockMinecart",
1956        0x23
1957    );
1958    reg!(
1959        762,
1960        Play,
1961        Serverbound,
1962        "ServerboundUpdateCommandBlockMinecart",
1963        0x2B
1964    );
1965    reg!(
1966        765,
1967        Play,
1968        Serverbound,
1969        "ServerboundUpdateCommandBlockMinecart",
1970        0x2D
1971    );
1972    reg!(
1973        767,
1974        Play,
1975        Serverbound,
1976        "ServerboundUpdateCommandBlockMinecart",
1977        0x31
1978    );
1979    reg!(5, Play, Serverbound, "ServerboundUpdateSign", 0x12);
1980    reg!(47, Play, Serverbound, "ServerboundUpdateSign", 0x12);
1981    reg!(340, Play, Serverbound, "ServerboundUpdateSign", 0x1C);
1982    reg!(762, Play, Serverbound, "ServerboundUpdateSign", 0x2A);
1983    reg!(765, Play, Serverbound, "ServerboundUpdateSign", 0x33);
1984    reg!(767, Play, Serverbound, "ServerboundUpdateSign", 0x37);
1985    reg!(5, Play, Serverbound, "ServerboundConfirmTransaction", 0x0F);
1986    reg!(47, Play, Serverbound, "ServerboundConfirmTransaction", 0x0F);
1987    reg!(
1988        340,
1989        Play,
1990        Serverbound,
1991        "ServerboundConfirmTransaction",
1992        0x05
1993    );
1994    reg!(5, Play, Serverbound, "ServerboundEnchantItem", 0x11);
1995    reg!(47, Play, Serverbound, "ServerboundEnchantItem", 0x11);
1996
1997    reg!(340, Play, Serverbound, "ServerboundEnchantItem", 0x06);
1998    reg!(340, Play, Serverbound, "ServerboundChatMessage", 0x02);
1999    reg!(340, Play, Serverbound, "ServerboundCustomPayload", 0x0A);
2000    reg!(340, Play, Clientbound, "ClientboundCustomPayload", 0x18);
2001    reg!(340, Play, Clientbound, "ClientboundPlayerPosition", 0x2F);
2002    reg!(340, Play, Clientbound, "ClientboundLevelParticles", 0x22);
2003    reg!(340, Play, Clientbound, "ClientboundSpawnEntity", 0x00);
2004    reg!(
2005        340,
2006        Play,
2007        Clientbound,
2008        "ClientboundSpawnExperienceOrb",
2009        0x01
2010    );
2011    reg!(340, Play, Clientbound, "ClientboundSpawnGlobalEntity", 0x02);
2012    reg!(340, Play, Clientbound, "ClientboundSpawnMob", 0x03);
2013    reg!(340, Play, Clientbound, "ClientboundSpawnPainting", 0x04);
2014    reg!(340, Play, Clientbound, "ClientboundSpawnPlayer", 0x05);
2015
2016    reg!(
2017        340,
2018        Login,
2019        Clientbound,
2020        "ClientboundLoginPluginRequest",
2021        0xFF
2022    );
2023    reg!(
2024        340,
2025        Login,
2026        Serverbound,
2027        "ServerboundLoginPluginResponse",
2028        0xFF
2029    );
2030    reg!(
2031        340,
2032        Login,
2033        Serverbound,
2034        "ServerboundLoginAcknowledged",
2035        0xFF
2036    );
2037    reg!(
2038        340,
2039        Configuration,
2040        Serverbound,
2041        "AcknowledgeFinishConfiguration",
2042        0xFF
2043    );
2044
2045    r
2046}