diff --git a/client/config_ignorer.go b/client/config_ignorer.go index 3c16d73..4b87a22 100644 --- a/client/config_ignorer.go +++ b/client/config_ignorer.go @@ -15,6 +15,15 @@ type ConfigIgnorer struct { *proto.Conn } +func (c *ConfigIgnorer) OnStart() (err error) { + c.Register(c.Default) + c.RegisterUntilLatest(c.OnKnownPacks) + c.RegisterUntilLatest(c.OnFinish) + c.RegisterUntilLatest(c.OnPing) + c.RegisterUntilLatest(c.OnKeepAlive) + return +} + func (c *ConfigIgnorer) Default(event event.Anything) (err error) { slog.Debug("Config ignorer", "packet", fmt.Sprintf("%#v", event)) return diff --git a/client/dns.go b/client/dns.go index f1ff47a..2026cbf 100644 --- a/client/dns.go +++ b/client/dns.go @@ -2,6 +2,7 @@ package client import ( "net" + "strconv" "strings" ) @@ -20,3 +21,20 @@ func LookupMinecraftSRV(host string, port uint16) (hostRet string, portRet uint1 portRet = srvs[0].Port return } + +func DoDNS(in string) (out string, err error) { // Bad code should match minecraft + // https://mcsrc.dev/1/26.1-pre-1/net/minecraft/client/multiplayer/resolver/ServerAddress#L34 + host, port, _ := net.SplitHostPort(in) + var portN uint16 = 25565 + if port != "" { + var porti int + porti, err = strconv.Atoi(port) + if err != nil { + return + } + portN = uint16(porti) + } + host, portN = LookupMinecraftSRV(host, portN) + out = net.JoinHostPort(host, strconv.Itoa(int(portN))) + return +} diff --git a/client/login.go b/client/login.go index 8881fb3..fad5200 100644 --- a/client/login.go +++ b/client/login.go @@ -27,6 +27,12 @@ type LoginClient struct { GivenAccount *v1_21_8.LoginToClientPacketSuccess } +var ( + NoTokenErr = errors.New("the account has no token so we cant join online servers") + BadPublicKeyTypeErr = errors.New("the public key is not rsa") + FailedToLoginErr = errors.New("failed to login") +) + type KickedDuringLoginErr struct { text.Component } @@ -35,7 +41,7 @@ func (k KickedDuringLoginErr) Error() string { return k.String() } -func (s *LoginClient) Default(event event.Unhandled) (err error) { +func (s *LoginClient) OnDefault(event event.Unhandled) (err error) { err = fmt.Errorf("unexpected event: %#v", event) return } @@ -48,25 +54,6 @@ func (s *LoginClient) OnClose(_ event.Close) (err error) { return } -func (s *LoginClient) OnStart(_ event.Start) (err error) { - p, err := MakeHandshakePacket(s.Conn, proto_base.Login) - if err != nil { - return - } - if s.ServerHost == "" && s.ServerPort == 0 { - p.ServerHost = s.ServerHost - p.ServerPort = s.ServerPort - } - - err = s.Send(p) - if err != nil { - return - } - s.SetState(proto_base.Login) - err = s.Send(&v1_21_8.LoginToServerPacketLoginStart{Username: s.Account.Name, PlayerUUID: s.Account.Uuid}) - return -} - func (s *LoginClient) OnCompress(compress *v1_21_8.LoginToClientPacketCompress) (err error) { s.SetCompressionThreshold(compress.Threshold) return @@ -78,7 +65,7 @@ func (s *LoginClient) OnEncrypt(packet *v1_21_8.LoginToClientPacketEncryptionBeg if packet.ShouldAuthenticate { if s.Account.Ygg == "" { - err = fmt.Errorf("the account has no token so we cant join online servers") + err = NoTokenErr return } serverId := crypto.AuthDigest([]byte(packet.ServerId), sharedSecret, packet.PublicKey) @@ -94,7 +81,7 @@ func (s *LoginClient) OnEncrypt(packet *v1_21_8.LoginToClientPacketEncryptionBeg } pub, ok := pubAny.(*rsa.PublicKey) if !ok { - err = fmt.Errorf("public key is not rsa") + err = BadPublicKeyTypeErr return } verifyTokenEnc, err := rsa.EncryptPKCS1v15(rand.Reader, pub, packet.VerifyToken) @@ -136,13 +123,40 @@ func (s *LoginClient) OnSuccess(success *v1_21_8.LoginToClientPacketSuccess) (er return } +func (s *LoginClient) OnStart() (err error) { + s.Register(s.OnDefault) + s.Register(s.OnCycle) + s.Register(s.OnClose) + s.RegisterUntilLatest(s.OnCompress) + s.RegisterUntilLatest(s.OnEncrypt) + s.RegisterUntilLatest(s.OnDisconnect) + s.RegisterUntilLatest(s.OnSuccess) + + p, err := MakeHandshakePacket(s.Conn, proto_base.Login) + if err != nil { + return + } + if s.ServerHost == "" && s.ServerPort == 0 { + p.ServerHost = s.ServerHost + p.ServerPort = s.ServerPort + } + + err = s.Send(p) + if err != nil { + return + } + s.SetState(proto_base.Login) + err = s.Send(&v1_21_8.LoginToServerPacketLoginStart{Username: s.Account.Name, PlayerUUID: s.Account.Uuid}) + return +} + func Login(c *proto.Conn, account *api.Account) (err error) { err = c.Start(&LoginClient{ Conn: c, Account: account, }) if err != nil { - err = errors.Join(err, errors.New("failed to login")) + err = errors.Join(FailedToLoginErr, err) } return } @@ -157,7 +171,7 @@ func ConnectAndLogin(connectTo string, account *api.Account) (c *proto.Conn, err Account: account, }) if err != nil { - err = errors.Join(errors.New("failed to login"), err) + err = errors.Join(FailedToLoginErr, err) } return } diff --git a/client/status.go b/client/status.go index 9b43d23..d2a9f34 100644 --- a/client/status.go +++ b/client/status.go @@ -2,7 +2,6 @@ package client import ( "encoding/json" - "fmt" "time" "github.com/admin-else/strom/event" @@ -19,12 +18,10 @@ type StatusClient struct { PingSendTime, PingReceiveTime time.Time } -func (s *StatusClient) Default(event any) (err error) { - err = fmt.Errorf("unexpected event: %v", event) - return -} +func (s *StatusClient) OnStart() (err error) { + s.RegisterUntilLatest(s.OnStatus) + s.RegisterUntilLatest(s.OnPong) -func (s *StatusClient) OnStart(_ event.Start) (err error) { p, err := MakeHandshakePacket(s.Conn, proto_base.Status) if err != nil { return diff --git a/event/event_bus.go b/event/event_bus.go index 8d1d641..9e50f1c 100644 --- a/event/event_bus.go +++ b/event/event_bus.go @@ -5,9 +5,7 @@ import ( "context" "errors" "fmt" - "log/slog" "reflect" - "strings" "time" ) @@ -16,9 +14,12 @@ const ( TimePerLoop = time.Second / LoopsPerSecond ) +type Handler interface { + OnStart() (err error) +} + type Loop struct { handlerFunctions map[reflect.Type][]reflect.Value - Handlers []any Ctx context.Context ErrChan chan error @@ -34,8 +35,7 @@ type Anything struct { } type ( - Start struct{} - Tick struct{} + Tick struct{} ) // HandlerDoneErr will stop the event loop and return the error if provided. @@ -60,27 +60,28 @@ func (e HandlerDoneErr) Unwrap() error { var ErrDontForward = errors.New("dont forward") var WhileClosingErr = errors.New("error while closing") -// UpdateHandlerFunctions initializes and populates the handlerFunctions map by reflecting over methods of registered handlers. -func (l *Loop) UpdateHandlerFunctions() { - l.handlerFunctions = make(map[reflect.Type][]reflect.Value) - for _, inst := range l.Handlers { - t := reflect.TypeOf(inst) - v := reflect.ValueOf(inst) - for i := 0; i < t.NumMethod(); i++ { - method := t.Method(i) - if strings.HasPrefix(method.Name, "On") { - if method.Type.NumIn() != 2 || method.Type.NumOut() != 1 || method.Type.Out(0) != reflect.TypeFor[error]() { - slog.Warn("Invalid event handler signature", "at", t.String()+"."+method.Name) - continue - } - } else { - continue - } - eventType := method.Type.In(1) - l.handlerFunctions[eventType] = append(l.handlerFunctions[eventType], v.Method(i)) - slog.Debug("Registered Handler", "at", t.String()+"."+method.Name, "for", eventType.String()) - } +func ValidateHandler(h any) (hv reflect.Value, eventType reflect.Type) { + hv = reflect.ValueOf(h) + if hv.Kind() != reflect.Func { + panic("expected method") } + if hv.Type().NumIn() != 1 { + panic("expected method with one argument") + } + if hv.Type().NumOut() != 1 || hv.Type().Out(0) != reflect.TypeFor[error]() { + panic("expected method that returns an error") + } + eventType = hv.Type().In(0) + return +} + +func (l *Loop) Register(h any) { + hv, eventType := ValidateHandler(h) + l.RegisterDirect(eventType, hv) +} + +func (l *Loop) RegisterDirect(k reflect.Type, h reflect.Value) { + l.handlerFunctions[k] = append(l.handlerFunctions[k], h) } // FireFound triggers all handlers registered for the specified event type and returns if handlers were found or an error occurred. @@ -118,11 +119,10 @@ func (l *Loop) Fire(event any) (err error) { return } -func (l *Loop) startLoop() (err error) { +func (l *Loop) startLoop(handler Handler) (err error) { _ = *l // exit early on nil loop - l.UpdateHandlerFunctions() - - err = l.Fire(Start{}) + l.handlerFunctions = make(map[reflect.Type][]reflect.Value) + err = handler.OnStart() for err == nil { tickStartTime := time.Now() err = l.Fire(Tick{}) @@ -141,11 +141,11 @@ func (l *Loop) startLoop() (err error) { return } -func (l *Loop) Start() (err error) { +func (l *Loop) Start(handler Handler) (err error) { l.ErrChan = make(chan error) l.Ctx, l.cancel = context.WithCancel(context.Background()) go func() { - l.ErrChan <- l.startLoop() + l.ErrChan <- l.startLoop(handler) }() err = <-l.ErrChan l.cancel() diff --git a/event/stdin.go b/event/stdin.go index 6929bf6..dfa7526 100644 --- a/event/stdin.go +++ b/event/stdin.go @@ -13,8 +13,7 @@ type Stdin struct { type StdinHandler struct { *Loop stdInChan chan Stdin - ctx context.Context - cancel context.CancelFunc + Ctx context.Context } func (s *StdinHandler) OnTick(_ Tick) (err error) { @@ -31,21 +30,15 @@ func (s *StdinHandler) ScanJob() { scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { select { - case <-s.ctx.Done(): + case <-s.Ctx.Done(): return default: s.stdInChan <- Stdin{scanner.Text()} } } } -func (s *StdinHandler) OnStart(_ Start) (err error) { +func (s *StdinHandler) OnStart() (err error) { s.stdInChan = make(chan Stdin) - s.ctx, s.cancel = context.WithCancel(context.Background()) go s.ScanJob() return } - -func (s *StdinHandler) OnClose(_ Close) (err error) { - s.cancel() - return -} diff --git a/proto/connection.go b/proto/connection.go index 1c26be3..9b7c8d2 100644 --- a/proto/connection.go +++ b/proto/connection.go @@ -7,11 +7,13 @@ import ( "io" "log/slog" "reflect" + "slices" "sync" "github.com/admin-else/strom/data" "github.com/admin-else/strom/event" "github.com/admin-else/strom/proto_base" + "github.com/admin-else/strom/proto_generated" ) var ( @@ -25,6 +27,8 @@ var ( PacketDoesntExistInFutureVersionErr = errors.New("packet doesnt exist in future version") ) +var LatestVersion = proto_generated.SupportedVersions[len(proto_generated.SupportedVersions)-1] + // UnCodablePacket represents a packet that could not be decoded. type UnCodablePacket struct { Err error @@ -51,10 +55,62 @@ type Conn struct { Version string ProtocolVersion int32 + handler event.Handler receiveRoutine bool packetCh chan proto_base.EncodeDecodeAble } +func (c *Conn) RegisterUntilLatest(h any) { + c.RegisterUntil(h, LatestVersion) +} + +func (c *Conn) RegisterUntil(h any, until string) { + hv, eventType := event.ValidateHandler(h) + c.RegisterDirect(eventType, hv) + if !eventType.Implements(reflect.TypeFor[proto_base.EncodeDecodeAble]()) { + panic("expected method with argument that implements proto_base.EncodeDecodeAble") + } + packetInfo, found := LookupPacketInfoByType(reflect.Zero(eventType).Interface().(proto_base.EncodeDecodeAble)) + if !found { + panic("packet not found") + } + versionInfo, err := data.LookUpVersionByProtocolVersion(packetInfo.ProtocolVersion) + if err != nil { + panic("protocol version not found") + } + startIndex := slices.Index(proto_generated.SupportedVersions, versionInfo.MinecraftVersion) + endIndex := slices.Index(proto_generated.SupportedVersions, until) + for i := startIndex + 1; i <= endIndex; i++ { + versionName := proto_generated.SupportedVersions[i] + versionInfo, err = data.LookUpVersionByName(versionName) + if err != nil { + panic("protocol version not found") + } + var newPacketInfo proto_base.PacketInfo + newPacketInfo, found = LookupPacketInfoByNameProtocolVersionAndState(packetInfo.Name, versionInfo.Version, packetInfo.State) + if !found { + panic("packet not found") + } + newT := reflect.TypeOf(newPacketInfo.Type) + if !SmartConvertibleTo(newT, reflect.TypeOf(packetInfo.Type)) { + panic(fmt.Sprintf("packet %v is not convertible to %v", newT, reflect.TypeOf(packetInfo.Type))) + } + handleFunc := func(packet any) error { + v := hv.Call([]reflect.Value{SmartConvert(reflect.ValueOf(packet), reflect.TypeOf(packetInfo.Type))})[0] + if v.IsNil() { + return nil + } + return v.Interface().(error) + } + c.RegisterDirect(newT, reflect.ValueOf(handleFunc)) + } +} + +func (c *Conn) OnStart() (err error) { + c.Register(c.OnTick) + return c.handler.OnStart() +} + func (c *Conn) ReceiveJob() { for { select { @@ -120,14 +176,14 @@ func (c *Conn) translatePacketVersion(packet proto_base.EncodeDecodeAble, packet err = PacketDoesntExistInFutureVersionErr return } + dstType := reflect.TypeOf(packetInfoReal.Type) - if !reflect.TypeOf(packetInfo.Type).ConvertibleTo(dstType) { + if !SmartConvertibleTo(reflect.TypeOf(packetInfo.Type), dstType) { err = CantTranslateErr return } // can't fail cause pacetinfo.type is proto_base.EncodeDecodeAble - convertedPacket = reflect.ValueOf(packet).Convert(dstType).Interface().(proto_base.EncodeDecodeAble) - + convertedPacket = SmartConvert(reflect.ValueOf(packet), dstType).Interface().(proto_base.EncodeDecodeAble) return } @@ -226,12 +282,10 @@ func (c *Conn) OnTick(_ event.Tick) (err error) { return } -func (c *Conn) Start(handlers ...any) (err error) { +func (c *Conn) Start(handler event.Handler) (err error) { if c.Loop == nil { c.Loop = &event.Loop{} } - c.Handlers = []any{c} - c.Handlers = append(c.Handlers, handlers...) - err = c.Loop.Start() - return + c.handler = handler + return c.Loop.Start(c) } diff --git a/proto/packet_lookup.go b/proto/packet_lookup.go index 6a03d50..14db6e7 100644 --- a/proto/packet_lookup.go +++ b/proto/packet_lookup.go @@ -29,22 +29,9 @@ func LookUpTypeByPacketInfoAndCopyType(direction proto_base.Direction, state pro } func LookupPacketInfoByType(packet proto_base.EncodeDecodeAble) (p proto_base.PacketInfo, ok bool) { - switch packet := packet.(type) { - case *UnCodablePacket: - p = proto_base.PacketInfo{ - Type: &UnCodablePacket{}, - Name: "undecodeable", - Direction: packet.Direction, - State: -1, - PacketId: -1, - ProtocolVersion: -1, - } - ok = true - default: - for _, p := range proto_generated.Packets { - if reflect.TypeOf(p.Type) == reflect.TypeOf(packet) { - return p, true - } + for _, p := range proto_generated.Packets { + if reflect.TypeOf(p.Type) == reflect.TypeOf(packet) { + return p, true } } return diff --git a/proto/smart_convert.go b/proto/smart_convert.go new file mode 100644 index 0000000..8433ad6 --- /dev/null +++ b/proto/smart_convert.go @@ -0,0 +1,42 @@ +package proto + +import ( + "reflect" +) + +func SmartConvertibleTo(from, to reflect.Type) bool { + switch from.Kind() { + case reflect.Struct: + if from.NumField() != to.NumField() { + return false + } + for i := range from.NumField() { + if !SmartConvertibleTo(from.Field(i).Type, to.Field(i).Type) { + return false + } + } + return true + case reflect.Ptr: + return SmartConvertibleTo(from.Elem(), to.Elem()) + default: + return from.ConvertibleTo(to) + } +} + +func SmartConvert(from reflect.Value, to reflect.Type) (ret reflect.Value) { + switch from.Kind() { + case reflect.Struct: + ret = reflect.New(to).Elem() + for i := range from.NumField() { + ret.Field(i).Set(SmartConvert(from.Field(i), to.Field(i).Type)) + } + return ret + case reflect.Ptr: + if from.IsNil() { + return reflect.Zero(to) + } + return SmartConvert(from.Elem(), to.Elem()).Addr() + default: + return from.Convert(to) + } +} diff --git a/proto/smart_convert_test.go b/proto/smart_convert_test.go new file mode 100644 index 0000000..377ee2b --- /dev/null +++ b/proto/smart_convert_test.go @@ -0,0 +1,20 @@ +package proto_test + +import ( + "reflect" + "testing" + + "github.com/admin-else/strom/proto" + "github.com/admin-else/strom/proto_generated/v1_21_8" + "github.com/admin-else/strom/proto_generated/v1_21_9" +) + +func TestCanSmartConvert(t *testing.T) { + packet := &v1_21_9.PlayToClientPacketPosition{Flags: v1_21_9.PlayToClientPositionUpdateRelatives{Val: 2}, X: 5} + can := proto.SmartConvertibleTo(reflect.TypeOf(packet), reflect.TypeFor[*v1_21_8.PlayToClientPacketPosition]()) + if !can { + t.Fatal("can't smart convert") + } + ret := proto.SmartConvert(reflect.ValueOf(packet), reflect.TypeFor[*v1_21_8.PlayToClientPacketPosition]()) + t.Logf("%#v", ret) +} diff --git a/proto_generated/packet_info.go b/proto_generated/packet_info.go index 219e0bb..ec4d223 100644 --- a/proto_generated/packet_info.go +++ b/proto_generated/packet_info.go @@ -7,4 +7,5 @@ import ( "github.com/admin-else/strom/proto_generated/v1_21_9" ) +var SupportedVersions = []string{"1.21.8", "1.21.9", "1.21.11"} var Packets = []proto_base.PacketInfo{{Type: &v1_21_8.ConfigurationToClientPacketCommonAddResourcePack{}, Name: "add_resource_pack", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 9, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToClientPacketCommonClearDialog{}, Name: "clear_dialog", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 17, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToClientPacketCommonCookieRequest{}, Name: "cookie_request", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 0, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToClientPacketCustomPayload{}, Name: "custom_payload", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 1, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToClientPacketCommonCustomReportDetails{}, Name: "custom_report_details", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 15, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToClientPacketDisconnect{}, Name: "disconnect", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 2, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToClientPacketFeatureFlags{}, Name: "feature_flags", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 12, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToClientPacketFinishConfiguration{}, Name: "finish_configuration", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 3, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToClientPacketKeepAlive{}, Name: "keep_alive", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 4, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToClientPacketPing{}, Name: "ping", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 5, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToClientPacketRegistryData{}, Name: "registry_data", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 7, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToClientPacketCommonRemoveResourcePack{}, Name: "remove_resource_pack", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 8, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToClientPacketResetChat{}, Name: "reset_chat", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 6, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToClientPacketCommonSelectKnownPacks{}, Name: "select_known_packs", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 14, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToClientPacketCommonServerLinks{}, Name: "server_links", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 16, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToClientPacketShowDialog{}, Name: "show_dialog", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 18, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToClientPacketCommonStoreCookie{}, Name: "store_cookie", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 10, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToClientPacketTags{}, Name: "tags", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 13, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToClientPacketCommonTransfer{}, Name: "transfer", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 11, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToServerPacketCommonCookieResponse{}, Name: "cookie_response", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 1, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToServerPacketCommonCustomClickAction{}, Name: "custom_click_action", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 8, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToServerPacketCustomPayload{}, Name: "custom_payload", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 2, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToServerPacketFinishConfiguration{}, Name: "finish_configuration", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 3, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToServerPacketKeepAlive{}, Name: "keep_alive", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 4, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToServerPacketPong{}, Name: "pong", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 5, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToServerPacketResourcePackReceive{}, Name: "resource_pack_receive", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 6, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToServerPacketCommonSelectKnownPacks{}, Name: "select_known_packs", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 7, ProtocolVersion: 772}, {Type: &v1_21_8.ConfigurationToServerPacketCommonSettings{}, Name: "settings", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 0, ProtocolVersion: 772}, {Type: &v1_21_8.HandshakingToServerPacketLegacyServerListPing{}, Name: "legacy_server_list_ping", Direction: proto_base.ToServer, State: proto_base.Handshaking, PacketId: 254, ProtocolVersion: 772}, {Type: &v1_21_8.HandshakingToServerPacketSetProtocol{}, Name: "set_protocol", Direction: proto_base.ToServer, State: proto_base.Handshaking, PacketId: 0, ProtocolVersion: 772}, {Type: &v1_21_8.LoginToClientPacketCompress{}, Name: "compress", Direction: proto_base.ToClient, State: proto_base.Login, PacketId: 3, ProtocolVersion: 772}, {Type: &v1_21_8.LoginToClientPacketCommonCookieRequest{}, Name: "cookie_request", Direction: proto_base.ToClient, State: proto_base.Login, PacketId: 5, ProtocolVersion: 772}, {Type: &v1_21_8.LoginToClientPacketDisconnect{}, Name: "disconnect", Direction: proto_base.ToClient, State: proto_base.Login, PacketId: 0, ProtocolVersion: 772}, {Type: &v1_21_8.LoginToClientPacketEncryptionBegin{}, Name: "encryption_begin", Direction: proto_base.ToClient, State: proto_base.Login, PacketId: 1, ProtocolVersion: 772}, {Type: &v1_21_8.LoginToClientPacketLoginPluginRequest{}, Name: "login_plugin_request", Direction: proto_base.ToClient, State: proto_base.Login, PacketId: 4, ProtocolVersion: 772}, {Type: &v1_21_8.LoginToClientPacketSuccess{}, Name: "success", Direction: proto_base.ToClient, State: proto_base.Login, PacketId: 2, ProtocolVersion: 772}, {Type: &v1_21_8.LoginToServerPacketCommonCookieResponse{}, Name: "cookie_response", Direction: proto_base.ToServer, State: proto_base.Login, PacketId: 4, ProtocolVersion: 772}, {Type: &v1_21_8.LoginToServerPacketEncryptionBegin{}, Name: "encryption_begin", Direction: proto_base.ToServer, State: proto_base.Login, PacketId: 1, ProtocolVersion: 772}, {Type: &v1_21_8.LoginToServerPacketLoginAcknowledged{}, Name: "login_acknowledged", Direction: proto_base.ToServer, State: proto_base.Login, PacketId: 3, ProtocolVersion: 772}, {Type: &v1_21_8.LoginToServerPacketLoginPluginResponse{}, Name: "login_plugin_response", Direction: proto_base.ToServer, State: proto_base.Login, PacketId: 2, ProtocolVersion: 772}, {Type: &v1_21_8.LoginToServerPacketLoginStart{}, Name: "login_start", Direction: proto_base.ToServer, State: proto_base.Login, PacketId: 0, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketAbilities{}, Name: "abilities", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 57, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketAcknowledgePlayerDigging{}, Name: "acknowledge_player_digging", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 4, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketActionBar{}, Name: "action_bar", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 80, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketCommonAddResourcePack{}, Name: "add_resource_pack", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 74, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketAdvancements{}, Name: "advancements", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 123, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketAnimation{}, Name: "animation", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 2, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketAttachEntity{}, Name: "attach_entity", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 93, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketBlockAction{}, Name: "block_action", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 7, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketBlockBreakAnimation{}, Name: "block_break_animation", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 5, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketBlockChange{}, Name: "block_change", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 8, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketBossBar{}, Name: "boss_bar", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 9, ProtocolVersion: 772}, {Type: &proto_base.Void{}, Name: "bundle_delimiter", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 0, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketCamera{}, Name: "camera", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 86, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketChatSuggestions{}, Name: "chat_suggestions", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 23, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketChunkBatchFinished{}, Name: "chunk_batch_finished", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 11, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketChunkBatchStart{}, Name: "chunk_batch_start", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 12, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketChunkBiomes{}, Name: "chunk_biomes", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 13, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketCommonClearDialog{}, Name: "clear_dialog", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 132, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketClearTitles{}, Name: "clear_titles", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 14, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketCloseWindow{}, Name: "close_window", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 17, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketCollect{}, Name: "collect", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 117, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketCommonCookieRequest{}, Name: "cookie_request", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 21, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketCraftProgressBar{}, Name: "craft_progress_bar", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 19, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketCraftRecipeResponse{}, Name: "craft_recipe_response", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 56, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketCustomPayload{}, Name: "custom_payload", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 24, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketCommonCustomReportDetails{}, Name: "custom_report_details", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 129, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketDamageEvent{}, Name: "damage_event", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 25, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketDeathCombatEvent{}, Name: "death_combat_event", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 61, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketDebugSample{}, Name: "debug_sample", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 26, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketDeclareCommands{}, Name: "declare_commands", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 16, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketDeclareRecipes{}, Name: "declare_recipes", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 126, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketDifficulty{}, Name: "difficulty", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 10, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketEndCombatEvent{}, Name: "end_combat_event", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 59, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketEnterCombatEvent{}, Name: "enter_combat_event", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 60, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketEntityDestroy{}, Name: "entity_destroy", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 70, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketEntityEffect{}, Name: "entity_effect", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 125, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketEntityEquipment{}, Name: "entity_equipment", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 95, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketEntityHeadRotation{}, Name: "entity_head_rotation", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 76, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketEntityLook{}, Name: "entity_look", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 49, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketEntityMetadata{}, Name: "entity_metadata", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 92, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketEntityMoveLook{}, Name: "entity_move_look", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 47, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketEntitySoundEffect{}, Name: "entity_sound_effect", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 109, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketEntityStatus{}, Name: "entity_status", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 30, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketEntityTeleport{}, Name: "entity_teleport", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 118, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketEntityUpdateAttributes{}, Name: "entity_update_attributes", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 124, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketEntityVelocity{}, Name: "entity_velocity", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 94, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketExperience{}, Name: "experience", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 96, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketExplosion{}, Name: "explosion", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 32, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketFacePlayer{}, Name: "face_player", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 64, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketGameStateChange{}, Name: "game_state_change", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 34, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketHeldItemSlot{}, Name: "held_item_slot", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 98, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketHideMessage{}, Name: "hide_message", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 27, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketHurtAnimation{}, Name: "hurt_animation", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 36, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketInitializeWorldBorder{}, Name: "initialize_world_border", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 37, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketKeepAlive{}, Name: "keep_alive", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 38, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketKickDisconnect{}, Name: "kick_disconnect", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 28, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketLogin{}, Name: "login", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 43, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketMap{}, Name: "map", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 44, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketMapChunk{}, Name: "map_chunk", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 39, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketMoveMinecart{}, Name: "move_minecart", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 48, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketMultiBlockChange{}, Name: "multi_block_change", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 77, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketNbtQueryResponse{}, Name: "nbt_query_response", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 116, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketOpenBook{}, Name: "open_book", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 51, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketOpenHorseWindow{}, Name: "open_horse_window", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 35, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketOpenSignEntity{}, Name: "open_sign_entity", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 53, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketOpenWindow{}, Name: "open_window", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 52, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketPing{}, Name: "ping", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 54, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketPingResponse{}, Name: "ping_response", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 55, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketPlayerChat{}, Name: "player_chat", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 58, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketPlayerInfo{}, Name: "player_info", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 63, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketPlayerRemove{}, Name: "player_remove", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 62, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketPlayerRotation{}, Name: "player_rotation", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 66, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketPlayerlistHeader{}, Name: "playerlist_header", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 115, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketPosition{}, Name: "position", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 65, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketProfilelessChat{}, Name: "profileless_chat", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 29, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketRecipeBookAdd{}, Name: "recipe_book_add", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 67, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketRecipeBookRemove{}, Name: "recipe_book_remove", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 68, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketRecipeBookSettings{}, Name: "recipe_book_settings", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 69, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketRelEntityMove{}, Name: "rel_entity_move", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 46, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketRemoveEntityEffect{}, Name: "remove_entity_effect", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 71, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketCommonRemoveResourcePack{}, Name: "remove_resource_pack", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 73, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketResetScore{}, Name: "reset_score", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 72, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketRespawn{}, Name: "respawn", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 75, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketScoreboardDisplayObjective{}, Name: "scoreboard_display_objective", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 91, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketScoreboardObjective{}, Name: "scoreboard_objective", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 99, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketScoreboardScore{}, Name: "scoreboard_score", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 103, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketSelectAdvancementTab{}, Name: "select_advancement_tab", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 78, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketServerData{}, Name: "server_data", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 79, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketCommonServerLinks{}, Name: "server_links", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 130, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketSetCooldown{}, Name: "set_cooldown", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 22, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketSetCursorItem{}, Name: "set_cursor_item", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 89, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketSetPassengers{}, Name: "set_passengers", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 100, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketSetPlayerInventory{}, Name: "set_player_inventory", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 101, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketSetProjectilePower{}, Name: "set_projectile_power", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 128, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketSetSlot{}, Name: "set_slot", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 20, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketSetTickingState{}, Name: "set_ticking_state", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 120, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketSetTitleSubtitle{}, Name: "set_title_subtitle", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 105, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketSetTitleText{}, Name: "set_title_text", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 107, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketSetTitleTime{}, Name: "set_title_time", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 108, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketShowDialog{}, Name: "show_dialog", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 133, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketSimulationDistance{}, Name: "simulation_distance", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 104, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketSoundEffect{}, Name: "sound_effect", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 110, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketSpawnEntity{}, Name: "spawn_entity", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 1, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketSpawnPosition{}, Name: "spawn_position", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 90, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketStartConfiguration{}, Name: "start_configuration", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 111, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketStatistics{}, Name: "statistics", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 3, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketStepTick{}, Name: "step_tick", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 121, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketStopSound{}, Name: "stop_sound", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 112, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketCommonStoreCookie{}, Name: "store_cookie", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 113, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketSyncEntityPosition{}, Name: "sync_entity_position", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 31, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketSystemChat{}, Name: "system_chat", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 114, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketTabComplete{}, Name: "tab_complete", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 15, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketTags{}, Name: "tags", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 127, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketTeams{}, Name: "teams", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 102, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketTestInstanceBlockStatus{}, Name: "test_instance_block_status", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 119, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketTileEntityData{}, Name: "tile_entity_data", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 6, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketTrackedWaypoint{}, Name: "tracked_waypoint", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 131, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketTradeList{}, Name: "trade_list", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 45, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketCommonTransfer{}, Name: "transfer", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 122, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketUnloadChunk{}, Name: "unload_chunk", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 33, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketUpdateHealth{}, Name: "update_health", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 97, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketUpdateLight{}, Name: "update_light", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 42, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketUpdateTime{}, Name: "update_time", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 106, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketUpdateViewDistance{}, Name: "update_view_distance", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 88, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketUpdateViewPosition{}, Name: "update_view_position", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 87, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketVehicleMove{}, Name: "vehicle_move", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 50, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketWindowItems{}, Name: "window_items", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 18, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketWorldBorderCenter{}, Name: "world_border_center", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 81, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketWorldBorderLerpSize{}, Name: "world_border_lerp_size", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 82, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketWorldBorderSize{}, Name: "world_border_size", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 83, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketWorldBorderWarningDelay{}, Name: "world_border_warning_delay", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 84, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketWorldBorderWarningReach{}, Name: "world_border_warning_reach", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 85, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketWorldEvent{}, Name: "world_event", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 40, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToClientPacketWorldParticles{}, Name: "world_particles", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 41, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketAbilities{}, Name: "abilities", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 39, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketAdvancementTab{}, Name: "advancement_tab", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 49, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketArmAnimation{}, Name: "arm_animation", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 60, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketBlockDig{}, Name: "block_dig", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 40, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketBlockPlace{}, Name: "block_place", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 63, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketChangeGamemode{}, Name: "change_gamemode", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 4, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketChatCommand{}, Name: "chat_command", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 6, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketChatCommandSigned{}, Name: "chat_command_signed", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 7, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketChatMessage{}, Name: "chat_message", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 8, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketChatSessionUpdate{}, Name: "chat_session_update", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 9, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketChunkBatchReceived{}, Name: "chunk_batch_received", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 10, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketClientCommand{}, Name: "client_command", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 11, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketCloseWindow{}, Name: "close_window", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 18, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketConfigurationAcknowledged{}, Name: "configuration_acknowledged", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 15, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketCommonCookieResponse{}, Name: "cookie_response", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 20, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketCraftRecipeRequest{}, Name: "craft_recipe_request", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 38, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketCommonCustomClickAction{}, Name: "custom_click_action", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 65, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketCustomPayload{}, Name: "custom_payload", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 21, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketDebugSampleSubscription{}, Name: "debug_sample_subscription", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 22, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketDisplayedRecipe{}, Name: "displayed_recipe", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 46, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketEditBook{}, Name: "edit_book", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 23, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketEnchantItem{}, Name: "enchant_item", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 16, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketEntityAction{}, Name: "entity_action", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 41, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketFlying{}, Name: "flying", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 32, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketGenerateStructure{}, Name: "generate_structure", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 26, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketHeldItemSlot{}, Name: "held_item_slot", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 52, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketKeepAlive{}, Name: "keep_alive", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 27, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketLockDifficulty{}, Name: "lock_difficulty", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 28, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketLook{}, Name: "look", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 31, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketMessageAcknowledgement{}, Name: "message_acknowledgement", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 5, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketNameItem{}, Name: "name_item", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 47, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketPickItemFromBlock{}, Name: "pick_item_from_block", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 35, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketPickItemFromEntity{}, Name: "pick_item_from_entity", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 36, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketPingRequest{}, Name: "ping_request", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 37, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketPlayerInput{}, Name: "player_input", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 42, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketPlayerLoaded{}, Name: "player_loaded", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 43, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketPong{}, Name: "pong", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 44, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketPosition{}, Name: "position", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 29, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketPositionLook{}, Name: "position_look", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 30, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketQueryBlockNbt{}, Name: "query_block_nbt", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 1, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketQueryEntityNbt{}, Name: "query_entity_nbt", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 24, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketRecipeBook{}, Name: "recipe_book", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 45, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketResourcePackReceive{}, Name: "resource_pack_receive", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 48, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketSelectBundleItem{}, Name: "select_bundle_item", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 2, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketSelectTrade{}, Name: "select_trade", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 50, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketSetBeaconEffect{}, Name: "set_beacon_effect", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 51, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketSetCreativeSlot{}, Name: "set_creative_slot", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 55, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketSetDifficulty{}, Name: "set_difficulty", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 3, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketSetSlotState{}, Name: "set_slot_state", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 19, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketSetTestBlock{}, Name: "set_test_block", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 58, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketCommonSettings{}, Name: "settings", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 13, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketSpectate{}, Name: "spectate", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 61, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketSteerBoat{}, Name: "steer_boat", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 34, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketTabComplete{}, Name: "tab_complete", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 14, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketTeleportConfirm{}, Name: "teleport_confirm", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 0, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketTestInstanceBlockAction{}, Name: "test_instance_block_action", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 62, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketTickEnd{}, Name: "tick_end", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 12, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketUpdateCommandBlock{}, Name: "update_command_block", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 53, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketUpdateCommandBlockMinecart{}, Name: "update_command_block_minecart", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 54, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketUpdateJigsawBlock{}, Name: "update_jigsaw_block", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 56, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketUpdateSign{}, Name: "update_sign", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 59, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketUpdateStructureBlock{}, Name: "update_structure_block", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 57, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketUseEntity{}, Name: "use_entity", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 25, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketUseItem{}, Name: "use_item", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 64, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketVehicleMove{}, Name: "vehicle_move", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 33, ProtocolVersion: 772}, {Type: &v1_21_8.PlayToServerPacketWindowClick{}, Name: "window_click", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 17, ProtocolVersion: 772}, {Type: &v1_21_8.StatusToClientPacketPing{}, Name: "ping", Direction: proto_base.ToClient, State: proto_base.Status, PacketId: 1, ProtocolVersion: 772}, {Type: &v1_21_8.StatusToClientPacketServerInfo{}, Name: "server_info", Direction: proto_base.ToClient, State: proto_base.Status, PacketId: 0, ProtocolVersion: 772}, {Type: &v1_21_8.StatusToServerPacketPing{}, Name: "ping", Direction: proto_base.ToServer, State: proto_base.Status, PacketId: 1, ProtocolVersion: 772}, {Type: &v1_21_8.StatusToServerPacketPingStart{}, Name: "ping_start", Direction: proto_base.ToServer, State: proto_base.Status, PacketId: 0, ProtocolVersion: 772}, {Type: &v1_21_9.ConfigurationToClientPacketCommonAddResourcePack{}, Name: "add_resource_pack", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 9, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketCommonClearDialog{}, Name: "clear_dialog", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 17, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketCodeOfConduct{}, Name: "code_of_conduct", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 19, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketCommonCookieRequest{}, Name: "cookie_request", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 0, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketCustomPayload{}, Name: "custom_payload", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 1, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketCommonCustomReportDetails{}, Name: "custom_report_details", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 15, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketDisconnect{}, Name: "disconnect", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 2, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketFeatureFlags{}, Name: "feature_flags", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 12, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketFinishConfiguration{}, Name: "finish_configuration", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 3, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketKeepAlive{}, Name: "keep_alive", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 4, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketPing{}, Name: "ping", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 5, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketRegistryData{}, Name: "registry_data", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 7, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketCommonRemoveResourcePack{}, Name: "remove_resource_pack", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 8, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketResetChat{}, Name: "reset_chat", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 6, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketCommonSelectKnownPacks{}, Name: "select_known_packs", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 14, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketCommonServerLinks{}, Name: "server_links", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 16, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketShowDialog{}, Name: "show_dialog", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 18, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketCommonStoreCookie{}, Name: "store_cookie", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 10, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketTags{}, Name: "tags", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 13, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToClientPacketCommonTransfer{}, Name: "transfer", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 11, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToServerPacketAcceptCodeOfConduct{}, Name: "accept_code_of_conduct", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 9, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToServerPacketCommonCookieResponse{}, Name: "cookie_response", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 1, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToServerPacketCommonCustomClickAction{}, Name: "custom_click_action", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 8, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToServerPacketCustomPayload{}, Name: "custom_payload", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 2, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToServerPacketFinishConfiguration{}, Name: "finish_configuration", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 3, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToServerPacketKeepAlive{}, Name: "keep_alive", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 4, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToServerPacketPong{}, Name: "pong", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 5, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToServerPacketResourcePackReceive{}, Name: "resource_pack_receive", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 6, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToServerPacketCommonSelectKnownPacks{}, Name: "select_known_packs", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 7, ProtocolVersion: 773}, {Type: &v1_21_9.ConfigurationToServerPacketCommonSettings{}, Name: "settings", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 0, ProtocolVersion: 773}, {Type: &v1_21_9.HandshakingToServerPacketLegacyServerListPing{}, Name: "legacy_server_list_ping", Direction: proto_base.ToServer, State: proto_base.Handshaking, PacketId: 254, ProtocolVersion: 773}, {Type: &v1_21_9.HandshakingToServerPacketSetProtocol{}, Name: "set_protocol", Direction: proto_base.ToServer, State: proto_base.Handshaking, PacketId: 0, ProtocolVersion: 773}, {Type: &v1_21_9.LoginToClientPacketCompress{}, Name: "compress", Direction: proto_base.ToClient, State: proto_base.Login, PacketId: 3, ProtocolVersion: 773}, {Type: &v1_21_9.LoginToClientPacketCommonCookieRequest{}, Name: "cookie_request", Direction: proto_base.ToClient, State: proto_base.Login, PacketId: 5, ProtocolVersion: 773}, {Type: &v1_21_9.LoginToClientPacketDisconnect{}, Name: "disconnect", Direction: proto_base.ToClient, State: proto_base.Login, PacketId: 0, ProtocolVersion: 773}, {Type: &v1_21_9.LoginToClientPacketEncryptionBegin{}, Name: "encryption_begin", Direction: proto_base.ToClient, State: proto_base.Login, PacketId: 1, ProtocolVersion: 773}, {Type: &v1_21_9.LoginToClientPacketLoginPluginRequest{}, Name: "login_plugin_request", Direction: proto_base.ToClient, State: proto_base.Login, PacketId: 4, ProtocolVersion: 773}, {Type: &v1_21_9.LoginToClientPacketSuccess{}, Name: "success", Direction: proto_base.ToClient, State: proto_base.Login, PacketId: 2, ProtocolVersion: 773}, {Type: &v1_21_9.LoginToServerPacketCommonCookieResponse{}, Name: "cookie_response", Direction: proto_base.ToServer, State: proto_base.Login, PacketId: 4, ProtocolVersion: 773}, {Type: &v1_21_9.LoginToServerPacketEncryptionBegin{}, Name: "encryption_begin", Direction: proto_base.ToServer, State: proto_base.Login, PacketId: 1, ProtocolVersion: 773}, {Type: &v1_21_9.LoginToServerPacketLoginAcknowledged{}, Name: "login_acknowledged", Direction: proto_base.ToServer, State: proto_base.Login, PacketId: 3, ProtocolVersion: 773}, {Type: &v1_21_9.LoginToServerPacketLoginPluginResponse{}, Name: "login_plugin_response", Direction: proto_base.ToServer, State: proto_base.Login, PacketId: 2, ProtocolVersion: 773}, {Type: &v1_21_9.LoginToServerPacketLoginStart{}, Name: "login_start", Direction: proto_base.ToServer, State: proto_base.Login, PacketId: 0, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketAbilities{}, Name: "abilities", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 62, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketAcknowledgePlayerDigging{}, Name: "acknowledge_player_digging", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 4, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketActionBar{}, Name: "action_bar", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 85, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketCommonAddResourcePack{}, Name: "add_resource_pack", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 79, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketAdvancements{}, Name: "advancements", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 128, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketAnimation{}, Name: "animation", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 2, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketAttachEntity{}, Name: "attach_entity", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 98, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketBlockAction{}, Name: "block_action", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 7, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketBlockBreakAnimation{}, Name: "block_break_animation", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 5, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketBlockChange{}, Name: "block_change", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 8, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketBossBar{}, Name: "boss_bar", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 9, ProtocolVersion: 773}, {Type: &proto_base.Void{}, Name: "bundle_delimiter", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 0, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketCamera{}, Name: "camera", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 91, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketChatSuggestions{}, Name: "chat_suggestions", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 23, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketChunkBatchFinished{}, Name: "chunk_batch_finished", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 11, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketChunkBatchStart{}, Name: "chunk_batch_start", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 12, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketChunkBiomes{}, Name: "chunk_biomes", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 13, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketCommonClearDialog{}, Name: "clear_dialog", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 137, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketClearTitles{}, Name: "clear_titles", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 14, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketCloseWindow{}, Name: "close_window", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 17, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketCollect{}, Name: "collect", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 122, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketCommonCookieRequest{}, Name: "cookie_request", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 21, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketCraftProgressBar{}, Name: "craft_progress_bar", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 19, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketCraftRecipeResponse{}, Name: "craft_recipe_response", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 61, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketCustomPayload{}, Name: "custom_payload", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 24, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketCommonCustomReportDetails{}, Name: "custom_report_details", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 134, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketDamageEvent{}, Name: "damage_event", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 25, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketDeathCombatEvent{}, Name: "death_combat_event", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 66, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketDebugBlockValue{}, Name: "debug_block_value", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 26, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketDebugChunkValue{}, Name: "debug_chunk_value", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 27, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketDebugEntityValue{}, Name: "debug_entity_value", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 28, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketDebugEvent{}, Name: "debug_event", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 29, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketDebugSample{}, Name: "debug_sample", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 30, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketDeclareCommands{}, Name: "declare_commands", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 16, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketDeclareRecipes{}, Name: "declare_recipes", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 131, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketDifficulty{}, Name: "difficulty", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 10, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketEndCombatEvent{}, Name: "end_combat_event", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 64, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketEnterCombatEvent{}, Name: "enter_combat_event", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 65, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketEntityDestroy{}, Name: "entity_destroy", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 75, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketEntityEffect{}, Name: "entity_effect", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 130, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketEntityEquipment{}, Name: "entity_equipment", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 100, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketEntityHeadRotation{}, Name: "entity_head_rotation", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 81, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketEntityLook{}, Name: "entity_look", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 54, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketEntityMetadata{}, Name: "entity_metadata", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 97, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketEntityMoveLook{}, Name: "entity_move_look", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 52, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketEntitySoundEffect{}, Name: "entity_sound_effect", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 114, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketEntityStatus{}, Name: "entity_status", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 34, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketEntityTeleport{}, Name: "entity_teleport", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 123, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketEntityUpdateAttributes{}, Name: "entity_update_attributes", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 129, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketEntityVelocity{}, Name: "entity_velocity", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 99, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketExperience{}, Name: "experience", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 101, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketExplosion{}, Name: "explosion", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 36, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketFacePlayer{}, Name: "face_player", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 69, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketGameStateChange{}, Name: "game_state_change", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 38, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketGameTestHighlightPos{}, Name: "game_test_highlight_pos", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 39, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketHeldItemSlot{}, Name: "held_item_slot", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 103, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketHideMessage{}, Name: "hide_message", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 31, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketHurtAnimation{}, Name: "hurt_animation", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 41, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketInitializeWorldBorder{}, Name: "initialize_world_border", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 42, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketKeepAlive{}, Name: "keep_alive", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 43, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketKickDisconnect{}, Name: "kick_disconnect", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 32, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketLogin{}, Name: "login", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 48, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketMap{}, Name: "map", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 49, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketMapChunk{}, Name: "map_chunk", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 44, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketMoveMinecart{}, Name: "move_minecart", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 53, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketMultiBlockChange{}, Name: "multi_block_change", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 82, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketNbtQueryResponse{}, Name: "nbt_query_response", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 121, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketOpenBook{}, Name: "open_book", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 56, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketOpenHorseWindow{}, Name: "open_horse_window", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 40, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketOpenSignEntity{}, Name: "open_sign_entity", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 58, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketOpenWindow{}, Name: "open_window", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 57, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketPing{}, Name: "ping", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 59, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketPingResponse{}, Name: "ping_response", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 60, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketPlayerChat{}, Name: "player_chat", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 63, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketPlayerInfo{}, Name: "player_info", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 68, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketPlayerRemove{}, Name: "player_remove", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 67, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketPlayerRotation{}, Name: "player_rotation", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 71, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketPlayerlistHeader{}, Name: "playerlist_header", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 120, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketPosition{}, Name: "position", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 70, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketProfilelessChat{}, Name: "profileless_chat", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 33, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketRecipeBookAdd{}, Name: "recipe_book_add", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 72, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketRecipeBookRemove{}, Name: "recipe_book_remove", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 73, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketRecipeBookSettings{}, Name: "recipe_book_settings", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 74, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketRelEntityMove{}, Name: "rel_entity_move", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 51, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketRemoveEntityEffect{}, Name: "remove_entity_effect", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 76, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketCommonRemoveResourcePack{}, Name: "remove_resource_pack", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 78, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketResetScore{}, Name: "reset_score", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 77, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketRespawn{}, Name: "respawn", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 80, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketScoreboardDisplayObjective{}, Name: "scoreboard_display_objective", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 96, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketScoreboardObjective{}, Name: "scoreboard_objective", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 104, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketScoreboardScore{}, Name: "scoreboard_score", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 108, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketSelectAdvancementTab{}, Name: "select_advancement_tab", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 83, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketServerData{}, Name: "server_data", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 84, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketCommonServerLinks{}, Name: "server_links", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 135, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketSetCooldown{}, Name: "set_cooldown", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 22, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketSetCursorItem{}, Name: "set_cursor_item", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 94, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketSetPassengers{}, Name: "set_passengers", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 105, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketSetPlayerInventory{}, Name: "set_player_inventory", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 106, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketSetProjectilePower{}, Name: "set_projectile_power", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 133, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketSetSlot{}, Name: "set_slot", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 20, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketSetTickingState{}, Name: "set_ticking_state", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 125, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketSetTitleSubtitle{}, Name: "set_title_subtitle", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 110, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketSetTitleText{}, Name: "set_title_text", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 112, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketSetTitleTime{}, Name: "set_title_time", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 113, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketShowDialog{}, Name: "show_dialog", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 138, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketSimulationDistance{}, Name: "simulation_distance", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 109, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketSoundEffect{}, Name: "sound_effect", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 115, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketSpawnEntity{}, Name: "spawn_entity", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 1, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketSpawnPosition{}, Name: "spawn_position", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 95, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketStartConfiguration{}, Name: "start_configuration", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 116, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketStatistics{}, Name: "statistics", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 3, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketStepTick{}, Name: "step_tick", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 126, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketStopSound{}, Name: "stop_sound", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 117, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketCommonStoreCookie{}, Name: "store_cookie", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 118, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketSyncEntityPosition{}, Name: "sync_entity_position", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 35, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketSystemChat{}, Name: "system_chat", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 119, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketTabComplete{}, Name: "tab_complete", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 15, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketTags{}, Name: "tags", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 132, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketTeams{}, Name: "teams", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 107, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketTestInstanceBlockStatus{}, Name: "test_instance_block_status", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 124, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketTileEntityData{}, Name: "tile_entity_data", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 6, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketTrackedWaypoint{}, Name: "tracked_waypoint", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 136, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketTradeList{}, Name: "trade_list", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 50, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketCommonTransfer{}, Name: "transfer", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 127, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketUnloadChunk{}, Name: "unload_chunk", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 37, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketUpdateHealth{}, Name: "update_health", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 102, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketUpdateLight{}, Name: "update_light", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 47, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketUpdateTime{}, Name: "update_time", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 111, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketUpdateViewDistance{}, Name: "update_view_distance", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 93, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketUpdateViewPosition{}, Name: "update_view_position", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 92, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketVehicleMove{}, Name: "vehicle_move", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 55, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketWindowItems{}, Name: "window_items", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 18, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketWorldBorderCenter{}, Name: "world_border_center", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 86, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketWorldBorderLerpSize{}, Name: "world_border_lerp_size", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 87, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketWorldBorderSize{}, Name: "world_border_size", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 88, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketWorldBorderWarningDelay{}, Name: "world_border_warning_delay", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 89, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketWorldBorderWarningReach{}, Name: "world_border_warning_reach", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 90, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketWorldEvent{}, Name: "world_event", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 45, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToClientPacketWorldParticles{}, Name: "world_particles", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 46, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketAbilities{}, Name: "abilities", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 39, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketAdvancementTab{}, Name: "advancement_tab", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 49, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketArmAnimation{}, Name: "arm_animation", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 60, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketBlockDig{}, Name: "block_dig", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 40, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketBlockPlace{}, Name: "block_place", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 63, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketChangeGamemode{}, Name: "change_gamemode", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 4, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketChatCommand{}, Name: "chat_command", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 6, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketChatCommandSigned{}, Name: "chat_command_signed", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 7, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketChatMessage{}, Name: "chat_message", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 8, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketChatSessionUpdate{}, Name: "chat_session_update", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 9, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketChunkBatchReceived{}, Name: "chunk_batch_received", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 10, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketClientCommand{}, Name: "client_command", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 11, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketCloseWindow{}, Name: "close_window", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 18, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketConfigurationAcknowledged{}, Name: "configuration_acknowledged", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 15, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketCommonCookieResponse{}, Name: "cookie_response", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 20, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketCraftRecipeRequest{}, Name: "craft_recipe_request", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 38, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketCommonCustomClickAction{}, Name: "custom_click_action", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 65, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketCustomPayload{}, Name: "custom_payload", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 21, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketDebugSubscriptionRequest{}, Name: "debug_subscription_request", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 22, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketDisplayedRecipe{}, Name: "displayed_recipe", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 46, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketEditBook{}, Name: "edit_book", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 23, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketEnchantItem{}, Name: "enchant_item", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 16, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketEntityAction{}, Name: "entity_action", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 41, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketFlying{}, Name: "flying", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 32, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketGenerateStructure{}, Name: "generate_structure", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 26, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketHeldItemSlot{}, Name: "held_item_slot", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 52, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketKeepAlive{}, Name: "keep_alive", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 27, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketLockDifficulty{}, Name: "lock_difficulty", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 28, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketLook{}, Name: "look", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 31, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketMessageAcknowledgement{}, Name: "message_acknowledgement", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 5, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketNameItem{}, Name: "name_item", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 47, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketPickItemFromBlock{}, Name: "pick_item_from_block", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 35, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketPickItemFromEntity{}, Name: "pick_item_from_entity", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 36, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketPingRequest{}, Name: "ping_request", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 37, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketPlayerInput{}, Name: "player_input", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 42, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketPlayerLoaded{}, Name: "player_loaded", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 43, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketPong{}, Name: "pong", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 44, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketPosition{}, Name: "position", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 29, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketPositionLook{}, Name: "position_look", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 30, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketQueryBlockNbt{}, Name: "query_block_nbt", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 1, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketQueryEntityNbt{}, Name: "query_entity_nbt", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 24, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketRecipeBook{}, Name: "recipe_book", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 45, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketResourcePackReceive{}, Name: "resource_pack_receive", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 48, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketSelectBundleItem{}, Name: "select_bundle_item", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 2, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketSelectTrade{}, Name: "select_trade", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 50, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketSetBeaconEffect{}, Name: "set_beacon_effect", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 51, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketSetCreativeSlot{}, Name: "set_creative_slot", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 55, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketSetDifficulty{}, Name: "set_difficulty", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 3, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketSetSlotState{}, Name: "set_slot_state", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 19, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketSetTestBlock{}, Name: "set_test_block", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 58, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketCommonSettings{}, Name: "settings", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 13, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketSpectate{}, Name: "spectate", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 61, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketSteerBoat{}, Name: "steer_boat", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 34, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketTabComplete{}, Name: "tab_complete", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 14, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketTeleportConfirm{}, Name: "teleport_confirm", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 0, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketTestInstanceBlockAction{}, Name: "test_instance_block_action", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 62, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketTickEnd{}, Name: "tick_end", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 12, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketUpdateCommandBlock{}, Name: "update_command_block", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 53, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketUpdateCommandBlockMinecart{}, Name: "update_command_block_minecart", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 54, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketUpdateJigsawBlock{}, Name: "update_jigsaw_block", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 56, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketUpdateSign{}, Name: "update_sign", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 59, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketUpdateStructureBlock{}, Name: "update_structure_block", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 57, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketUseEntity{}, Name: "use_entity", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 25, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketUseItem{}, Name: "use_item", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 64, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketVehicleMove{}, Name: "vehicle_move", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 33, ProtocolVersion: 773}, {Type: &v1_21_9.PlayToServerPacketWindowClick{}, Name: "window_click", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 17, ProtocolVersion: 773}, {Type: &v1_21_9.StatusToClientPacketPing{}, Name: "ping", Direction: proto_base.ToClient, State: proto_base.Status, PacketId: 1, ProtocolVersion: 773}, {Type: &v1_21_9.StatusToClientPacketServerInfo{}, Name: "server_info", Direction: proto_base.ToClient, State: proto_base.Status, PacketId: 0, ProtocolVersion: 773}, {Type: &v1_21_9.StatusToServerPacketPing{}, Name: "ping", Direction: proto_base.ToServer, State: proto_base.Status, PacketId: 1, ProtocolVersion: 773}, {Type: &v1_21_9.StatusToServerPacketPingStart{}, Name: "ping_start", Direction: proto_base.ToServer, State: proto_base.Status, PacketId: 0, ProtocolVersion: 773}, {Type: &v1_21_11.ConfigurationToClientPacketCommonAddResourcePack{}, Name: "add_resource_pack", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 9, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketCommonClearDialog{}, Name: "clear_dialog", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 17, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketCodeOfConduct{}, Name: "code_of_conduct", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 19, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketCommonCookieRequest{}, Name: "cookie_request", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 0, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketCustomPayload{}, Name: "custom_payload", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 1, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketCommonCustomReportDetails{}, Name: "custom_report_details", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 15, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketDisconnect{}, Name: "disconnect", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 2, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketFeatureFlags{}, Name: "feature_flags", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 12, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketFinishConfiguration{}, Name: "finish_configuration", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 3, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketKeepAlive{}, Name: "keep_alive", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 4, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketPing{}, Name: "ping", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 5, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketRegistryData{}, Name: "registry_data", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 7, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketCommonRemoveResourcePack{}, Name: "remove_resource_pack", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 8, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketResetChat{}, Name: "reset_chat", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 6, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketCommonSelectKnownPacks{}, Name: "select_known_packs", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 14, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketCommonServerLinks{}, Name: "server_links", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 16, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketShowDialog{}, Name: "show_dialog", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 18, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketCommonStoreCookie{}, Name: "store_cookie", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 10, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketTags{}, Name: "tags", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 13, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToClientPacketCommonTransfer{}, Name: "transfer", Direction: proto_base.ToClient, State: proto_base.Configuration, PacketId: 11, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToServerPacketAcceptCodeOfConduct{}, Name: "accept_code_of_conduct", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 9, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToServerPacketCommonCookieResponse{}, Name: "cookie_response", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 1, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToServerPacketCommonCustomClickAction{}, Name: "custom_click_action", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 8, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToServerPacketCustomPayload{}, Name: "custom_payload", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 2, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToServerPacketFinishConfiguration{}, Name: "finish_configuration", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 3, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToServerPacketKeepAlive{}, Name: "keep_alive", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 4, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToServerPacketPong{}, Name: "pong", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 5, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToServerPacketResourcePackReceive{}, Name: "resource_pack_receive", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 6, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToServerPacketCommonSelectKnownPacks{}, Name: "select_known_packs", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 7, ProtocolVersion: 774}, {Type: &v1_21_11.ConfigurationToServerPacketCommonSettings{}, Name: "settings", Direction: proto_base.ToServer, State: proto_base.Configuration, PacketId: 0, ProtocolVersion: 774}, {Type: &v1_21_11.HandshakingToServerPacketLegacyServerListPing{}, Name: "legacy_server_list_ping", Direction: proto_base.ToServer, State: proto_base.Handshaking, PacketId: 254, ProtocolVersion: 774}, {Type: &v1_21_11.HandshakingToServerPacketSetProtocol{}, Name: "set_protocol", Direction: proto_base.ToServer, State: proto_base.Handshaking, PacketId: 0, ProtocolVersion: 774}, {Type: &v1_21_11.LoginToClientPacketCompress{}, Name: "compress", Direction: proto_base.ToClient, State: proto_base.Login, PacketId: 3, ProtocolVersion: 774}, {Type: &v1_21_11.LoginToClientPacketCommonCookieRequest{}, Name: "cookie_request", Direction: proto_base.ToClient, State: proto_base.Login, PacketId: 5, ProtocolVersion: 774}, {Type: &v1_21_11.LoginToClientPacketDisconnect{}, Name: "disconnect", Direction: proto_base.ToClient, State: proto_base.Login, PacketId: 0, ProtocolVersion: 774}, {Type: &v1_21_11.LoginToClientPacketEncryptionBegin{}, Name: "encryption_begin", Direction: proto_base.ToClient, State: proto_base.Login, PacketId: 1, ProtocolVersion: 774}, {Type: &v1_21_11.LoginToClientPacketLoginPluginRequest{}, Name: "login_plugin_request", Direction: proto_base.ToClient, State: proto_base.Login, PacketId: 4, ProtocolVersion: 774}, {Type: &v1_21_11.LoginToClientPacketSuccess{}, Name: "success", Direction: proto_base.ToClient, State: proto_base.Login, PacketId: 2, ProtocolVersion: 774}, {Type: &v1_21_11.LoginToServerPacketCommonCookieResponse{}, Name: "cookie_response", Direction: proto_base.ToServer, State: proto_base.Login, PacketId: 4, ProtocolVersion: 774}, {Type: &v1_21_11.LoginToServerPacketEncryptionBegin{}, Name: "encryption_begin", Direction: proto_base.ToServer, State: proto_base.Login, PacketId: 1, ProtocolVersion: 774}, {Type: &v1_21_11.LoginToServerPacketLoginAcknowledged{}, Name: "login_acknowledged", Direction: proto_base.ToServer, State: proto_base.Login, PacketId: 3, ProtocolVersion: 774}, {Type: &v1_21_11.LoginToServerPacketLoginPluginResponse{}, Name: "login_plugin_response", Direction: proto_base.ToServer, State: proto_base.Login, PacketId: 2, ProtocolVersion: 774}, {Type: &v1_21_11.LoginToServerPacketLoginStart{}, Name: "login_start", Direction: proto_base.ToServer, State: proto_base.Login, PacketId: 0, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketAbilities{}, Name: "abilities", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 62, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketAcknowledgePlayerDigging{}, Name: "acknowledge_player_digging", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 4, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketActionBar{}, Name: "action_bar", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 85, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketCommonAddResourcePack{}, Name: "add_resource_pack", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 79, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketAdvancements{}, Name: "advancements", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 128, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketAnimation{}, Name: "animation", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 2, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketAttachEntity{}, Name: "attach_entity", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 98, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketBlockAction{}, Name: "block_action", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 7, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketBlockBreakAnimation{}, Name: "block_break_animation", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 5, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketBlockChange{}, Name: "block_change", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 8, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketBossBar{}, Name: "boss_bar", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 9, ProtocolVersion: 774}, {Type: &proto_base.Void{}, Name: "bundle_delimiter", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 0, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketCamera{}, Name: "camera", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 91, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketChatSuggestions{}, Name: "chat_suggestions", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 23, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketChunkBatchFinished{}, Name: "chunk_batch_finished", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 11, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketChunkBatchStart{}, Name: "chunk_batch_start", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 12, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketChunkBiomes{}, Name: "chunk_biomes", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 13, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketCommonClearDialog{}, Name: "clear_dialog", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 137, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketClearTitles{}, Name: "clear_titles", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 14, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketCloseWindow{}, Name: "close_window", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 17, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketCollect{}, Name: "collect", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 122, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketCommonCookieRequest{}, Name: "cookie_request", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 21, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketCraftProgressBar{}, Name: "craft_progress_bar", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 19, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketCraftRecipeResponse{}, Name: "craft_recipe_response", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 61, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketCustomPayload{}, Name: "custom_payload", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 24, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketCommonCustomReportDetails{}, Name: "custom_report_details", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 134, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketDamageEvent{}, Name: "damage_event", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 25, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketDeathCombatEvent{}, Name: "death_combat_event", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 66, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketDebugBlockValue{}, Name: "debug_block_value", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 26, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketDebugChunkValue{}, Name: "debug_chunk_value", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 27, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketDebugEntityValue{}, Name: "debug_entity_value", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 28, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketDebugEvent{}, Name: "debug_event", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 29, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketDebugSample{}, Name: "debug_sample", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 30, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketDeclareCommands{}, Name: "declare_commands", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 16, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketDeclareRecipes{}, Name: "declare_recipes", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 131, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketDifficulty{}, Name: "difficulty", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 10, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketEndCombatEvent{}, Name: "end_combat_event", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 64, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketEnterCombatEvent{}, Name: "enter_combat_event", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 65, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketEntityDestroy{}, Name: "entity_destroy", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 75, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketEntityEffect{}, Name: "entity_effect", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 130, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketEntityEquipment{}, Name: "entity_equipment", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 100, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketEntityHeadRotation{}, Name: "entity_head_rotation", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 81, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketEntityLook{}, Name: "entity_look", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 54, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketEntityMetadata{}, Name: "entity_metadata", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 97, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketEntityMoveLook{}, Name: "entity_move_look", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 52, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketEntitySoundEffect{}, Name: "entity_sound_effect", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 114, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketEntityStatus{}, Name: "entity_status", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 34, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketEntityTeleport{}, Name: "entity_teleport", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 123, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketEntityUpdateAttributes{}, Name: "entity_update_attributes", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 129, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketEntityVelocity{}, Name: "entity_velocity", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 99, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketExperience{}, Name: "experience", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 101, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketExplosion{}, Name: "explosion", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 36, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketFacePlayer{}, Name: "face_player", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 69, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketGameStateChange{}, Name: "game_state_change", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 38, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketGameTestHighlightPos{}, Name: "game_test_highlight_pos", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 39, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketHeldItemSlot{}, Name: "held_item_slot", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 103, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketHideMessage{}, Name: "hide_message", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 31, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketHurtAnimation{}, Name: "hurt_animation", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 41, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketInitializeWorldBorder{}, Name: "initialize_world_border", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 42, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketKeepAlive{}, Name: "keep_alive", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 43, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketKickDisconnect{}, Name: "kick_disconnect", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 32, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketLogin{}, Name: "login", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 48, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketMap{}, Name: "map", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 49, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketMapChunk{}, Name: "map_chunk", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 44, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketMoveMinecart{}, Name: "move_minecart", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 53, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketMultiBlockChange{}, Name: "multi_block_change", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 82, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketNbtQueryResponse{}, Name: "nbt_query_response", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 121, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketOpenBook{}, Name: "open_book", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 56, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketOpenHorseWindow{}, Name: "open_horse_window", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 40, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketOpenSignEntity{}, Name: "open_sign_entity", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 58, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketOpenWindow{}, Name: "open_window", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 57, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketPing{}, Name: "ping", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 59, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketPingResponse{}, Name: "ping_response", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 60, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketPlayerChat{}, Name: "player_chat", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 63, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketPlayerInfo{}, Name: "player_info", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 68, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketPlayerRemove{}, Name: "player_remove", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 67, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketPlayerRotation{}, Name: "player_rotation", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 71, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketPlayerlistHeader{}, Name: "playerlist_header", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 120, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketPosition{}, Name: "position", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 70, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketProfilelessChat{}, Name: "profileless_chat", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 33, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketRecipeBookAdd{}, Name: "recipe_book_add", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 72, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketRecipeBookRemove{}, Name: "recipe_book_remove", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 73, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketRecipeBookSettings{}, Name: "recipe_book_settings", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 74, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketRelEntityMove{}, Name: "rel_entity_move", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 51, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketRemoveEntityEffect{}, Name: "remove_entity_effect", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 76, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketCommonRemoveResourcePack{}, Name: "remove_resource_pack", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 78, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketResetScore{}, Name: "reset_score", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 77, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketRespawn{}, Name: "respawn", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 80, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketScoreboardDisplayObjective{}, Name: "scoreboard_display_objective", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 96, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketScoreboardObjective{}, Name: "scoreboard_objective", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 104, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketScoreboardScore{}, Name: "scoreboard_score", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 108, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketSelectAdvancementTab{}, Name: "select_advancement_tab", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 83, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketServerData{}, Name: "server_data", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 84, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketCommonServerLinks{}, Name: "server_links", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 135, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketSetCooldown{}, Name: "set_cooldown", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 22, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketSetCursorItem{}, Name: "set_cursor_item", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 94, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketSetPassengers{}, Name: "set_passengers", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 105, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketSetPlayerInventory{}, Name: "set_player_inventory", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 106, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketSetProjectilePower{}, Name: "set_projectile_power", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 133, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketSetSlot{}, Name: "set_slot", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 20, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketSetTickingState{}, Name: "set_ticking_state", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 125, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketSetTitleSubtitle{}, Name: "set_title_subtitle", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 110, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketSetTitleText{}, Name: "set_title_text", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 112, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketSetTitleTime{}, Name: "set_title_time", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 113, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketShowDialog{}, Name: "show_dialog", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 138, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketSimulationDistance{}, Name: "simulation_distance", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 109, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketSoundEffect{}, Name: "sound_effect", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 115, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketSpawnEntity{}, Name: "spawn_entity", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 1, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketSpawnPosition{}, Name: "spawn_position", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 95, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketStartConfiguration{}, Name: "start_configuration", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 116, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketStatistics{}, Name: "statistics", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 3, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketStepTick{}, Name: "step_tick", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 126, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketStopSound{}, Name: "stop_sound", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 117, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketCommonStoreCookie{}, Name: "store_cookie", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 118, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketSyncEntityPosition{}, Name: "sync_entity_position", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 35, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketSystemChat{}, Name: "system_chat", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 119, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketTabComplete{}, Name: "tab_complete", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 15, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketTags{}, Name: "tags", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 132, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketTeams{}, Name: "teams", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 107, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketTestInstanceBlockStatus{}, Name: "test_instance_block_status", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 124, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketTileEntityData{}, Name: "tile_entity_data", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 6, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketTrackedWaypoint{}, Name: "tracked_waypoint", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 136, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketTradeList{}, Name: "trade_list", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 50, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketCommonTransfer{}, Name: "transfer", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 127, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketUnloadChunk{}, Name: "unload_chunk", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 37, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketUpdateHealth{}, Name: "update_health", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 102, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketUpdateLight{}, Name: "update_light", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 47, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketUpdateTime{}, Name: "update_time", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 111, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketUpdateViewDistance{}, Name: "update_view_distance", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 93, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketUpdateViewPosition{}, Name: "update_view_position", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 92, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketVehicleMove{}, Name: "vehicle_move", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 55, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketWindowItems{}, Name: "window_items", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 18, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketWorldBorderCenter{}, Name: "world_border_center", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 86, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketWorldBorderLerpSize{}, Name: "world_border_lerp_size", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 87, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketWorldBorderSize{}, Name: "world_border_size", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 88, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketWorldBorderWarningDelay{}, Name: "world_border_warning_delay", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 89, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketWorldBorderWarningReach{}, Name: "world_border_warning_reach", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 90, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketWorldEvent{}, Name: "world_event", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 45, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToClientPacketWorldParticles{}, Name: "world_particles", Direction: proto_base.ToClient, State: proto_base.Play, PacketId: 46, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketAbilities{}, Name: "abilities", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 39, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketAdvancementTab{}, Name: "advancement_tab", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 49, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketArmAnimation{}, Name: "arm_animation", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 60, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketBlockDig{}, Name: "block_dig", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 40, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketBlockPlace{}, Name: "block_place", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 63, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketChangeGamemode{}, Name: "change_gamemode", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 4, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketChatCommand{}, Name: "chat_command", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 6, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketChatCommandSigned{}, Name: "chat_command_signed", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 7, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketChatMessage{}, Name: "chat_message", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 8, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketChatSessionUpdate{}, Name: "chat_session_update", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 9, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketChunkBatchReceived{}, Name: "chunk_batch_received", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 10, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketClientCommand{}, Name: "client_command", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 11, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketCloseWindow{}, Name: "close_window", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 18, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketConfigurationAcknowledged{}, Name: "configuration_acknowledged", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 15, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketCommonCookieResponse{}, Name: "cookie_response", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 20, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketCraftRecipeRequest{}, Name: "craft_recipe_request", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 38, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketCommonCustomClickAction{}, Name: "custom_click_action", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 65, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketCustomPayload{}, Name: "custom_payload", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 21, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketDebugSubscriptionRequest{}, Name: "debug_subscription_request", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 22, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketDisplayedRecipe{}, Name: "displayed_recipe", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 46, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketEditBook{}, Name: "edit_book", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 23, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketEnchantItem{}, Name: "enchant_item", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 16, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketEntityAction{}, Name: "entity_action", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 41, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketFlying{}, Name: "flying", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 32, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketGenerateStructure{}, Name: "generate_structure", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 26, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketHeldItemSlot{}, Name: "held_item_slot", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 52, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketKeepAlive{}, Name: "keep_alive", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 27, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketLockDifficulty{}, Name: "lock_difficulty", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 28, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketLook{}, Name: "look", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 31, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketMessageAcknowledgement{}, Name: "message_acknowledgement", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 5, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketNameItem{}, Name: "name_item", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 47, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketPickItemFromBlock{}, Name: "pick_item_from_block", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 35, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketPickItemFromEntity{}, Name: "pick_item_from_entity", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 36, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketPingRequest{}, Name: "ping_request", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 37, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketPlayerInput{}, Name: "player_input", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 42, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketPlayerLoaded{}, Name: "player_loaded", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 43, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketPong{}, Name: "pong", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 44, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketPosition{}, Name: "position", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 29, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketPositionLook{}, Name: "position_look", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 30, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketQueryBlockNbt{}, Name: "query_block_nbt", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 1, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketQueryEntityNbt{}, Name: "query_entity_nbt", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 24, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketRecipeBook{}, Name: "recipe_book", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 45, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketResourcePackReceive{}, Name: "resource_pack_receive", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 48, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketSelectBundleItem{}, Name: "select_bundle_item", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 2, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketSelectTrade{}, Name: "select_trade", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 50, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketSetBeaconEffect{}, Name: "set_beacon_effect", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 51, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketSetCreativeSlot{}, Name: "set_creative_slot", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 55, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketSetDifficulty{}, Name: "set_difficulty", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 3, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketSetSlotState{}, Name: "set_slot_state", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 19, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketSetTestBlock{}, Name: "set_test_block", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 58, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketCommonSettings{}, Name: "settings", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 13, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketSpectate{}, Name: "spectate", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 61, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketSteerBoat{}, Name: "steer_boat", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 34, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketTabComplete{}, Name: "tab_complete", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 14, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketTeleportConfirm{}, Name: "teleport_confirm", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 0, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketTestInstanceBlockAction{}, Name: "test_instance_block_action", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 62, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketTickEnd{}, Name: "tick_end", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 12, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketUpdateCommandBlock{}, Name: "update_command_block", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 53, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketUpdateCommandBlockMinecart{}, Name: "update_command_block_minecart", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 54, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketUpdateJigsawBlock{}, Name: "update_jigsaw_block", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 56, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketUpdateSign{}, Name: "update_sign", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 59, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketUpdateStructureBlock{}, Name: "update_structure_block", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 57, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketUseEntity{}, Name: "use_entity", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 25, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketUseItem{}, Name: "use_item", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 64, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketVehicleMove{}, Name: "vehicle_move", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 33, ProtocolVersion: 774}, {Type: &v1_21_11.PlayToServerPacketWindowClick{}, Name: "window_click", Direction: proto_base.ToServer, State: proto_base.Play, PacketId: 17, ProtocolVersion: 774}, {Type: &v1_21_11.StatusToClientPacketPing{}, Name: "ping", Direction: proto_base.ToClient, State: proto_base.Status, PacketId: 1, ProtocolVersion: 774}, {Type: &v1_21_11.StatusToClientPacketServerInfo{}, Name: "server_info", Direction: proto_base.ToClient, State: proto_base.Status, PacketId: 0, ProtocolVersion: 774}, {Type: &v1_21_11.StatusToServerPacketPing{}, Name: "ping", Direction: proto_base.ToServer, State: proto_base.Status, PacketId: 1, ProtocolVersion: 774}, {Type: &v1_21_11.StatusToServerPacketPingStart{}, Name: "ping_start", Direction: proto_base.ToServer, State: proto_base.Status, PacketId: 0, ProtocolVersion: 774}} diff --git a/proto_generator/helper_generator.go b/proto_generator/helper_generator.go index 23d0d88..732dd67 100644 --- a/proto_generator/helper_generator.go +++ b/proto_generator/helper_generator.go @@ -50,6 +50,12 @@ func GeneratePacketInfoFile(versions []string, packetInfos []PacketInfo) (err er KeyValueExpr(Ident("ProtocolVersion"), NumLit(protocolVersion)), })) } + + var supportedVersionsExprs []ast.Expr + for _, v := range versions { + supportedVersionsExprs = append(supportedVersionsExprs, StrLit(v)) + } + AppendDecl(f, VarValues("SupportedVersions", CompLit(Slice(Ident("string")), supportedVersionsExprs))) AppendDecl(f, VarValues("Packets", CompLit(Slice(Selector("proto_base", "PacketInfo")), packetInfoExprs))) out, err := os.Create("proto_generated/packet_info.go") if err != nil { diff --git a/server/config_server.go b/server/config_server.go index 99690f7..0209c47 100644 --- a/server/config_server.go +++ b/server/config_server.go @@ -21,7 +21,7 @@ func (c *ConfigServer) Default(event event.Anything) (err error) { return } -func (c *ConfigServer) OnStart(_ event.Start) (err error) { +func (c *ConfigServer) OnStart() (err error) { n, err := data.LoadRegistry(c.Version) if err != nil { return diff --git a/server/login_server.go b/server/login_server.go index e34eff5..feac028 100644 --- a/server/login_server.go +++ b/server/login_server.go @@ -112,7 +112,7 @@ func (l *LoginServer) OnDefault(event event.Unhandled) (err error) { return } -func (l *LoginServer) OnStart(_ event.Start) (err error) { +func (l *LoginServer) OnStart() (err error) { return } diff --git a/server/server.go b/server/server.go index 9ab5fe8..db7535c 100644 --- a/server/server.go +++ b/server/server.go @@ -5,6 +5,7 @@ import ( "log/slog" "net" + "github.com/admin-else/strom/event" "github.com/admin-else/strom/proto" "github.com/admin-else/strom/proto_base" "github.com/admin-else/strom/text" @@ -22,7 +23,9 @@ func Servee(c net.Conn) (ret *proto.Conn) { return } -func ServeClient(cNet net.Conn, factory func(c *proto.Conn) (h any, err error)) { +type Factory func(c *proto.Conn) (h event.Handler, err error) + +func ServeClient(cNet net.Conn, factory Factory) { c := Servee(cNet) defer c.Close() h, err := factory(c) @@ -43,7 +46,7 @@ func ServeClient(cNet net.Conn, factory func(c *proto.Conn) (h any, err error)) return } -func StartServerWithFactory(listenAddr string, factory func(c *proto.Conn) (h any, err error)) (err error) { +func StartServerWithFactory(listenAddr string, factory Factory) (err error) { l, err := net.Listen("tcp", listenAddr) if err != nil { return diff --git a/server/status.go b/server/status.go index 3040021..f04e588 100644 --- a/server/status.go +++ b/server/status.go @@ -48,6 +48,10 @@ type StatusServer struct { Status string } +func (p *StatusServer) OnStart() (err error) { + return +} + func (p *StatusServer) Default(_ any) (err error) { return } diff --git a/tools/schematic_server/main.go b/tools/schematic_server/main.go index 06b8867..c161ee2 100644 --- a/tools/schematic_server/main.go +++ b/tools/schematic_server/main.go @@ -65,7 +65,7 @@ var voidChunk = &v1_21_8.PlayToClientPacketMapChunk{X: 3, Z: 3, Heightmaps: []st Data []int64 }{Type: "motion_blocking", Data: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}}, ChunkData: v1_21_8.ByteArray{Val: []uint8{0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39}}, BlockEntities: []v1_21_8.ChunkBlockEntity{}, SkyLightMask: []int64{}, BlockLightMask: []int64{}, EmptySkyLightMask: []int64{}, EmptyBlockLightMask: []int64{}, SkyLight: [][]uint8{}, BlockLight: [][]uint8{}} -func (s *Server) OnStart(_ event.Start) (err error) { +func (s *Server) OnStart() (err error) { //goland:noinspection GoResourceLeak captures the conn object which should NOT be closed playerData, err := server.ServeLogin(s.Conn, server.WithRawStatus(StatusResponse), server.WithCompatibleVersions(772)) if err != nil { @@ -167,7 +167,7 @@ func (s *Server) SendKeepAlive() (err error) { func main() { slog.SetLogLoggerLevel(slog.LevelInfo) - err := server.StartServerWithFactory(":25565", func(c *proto.Conn) (h any, err error) { + err := server.StartServerWithFactory(":25565", func(c *proto.Conn) (h event.Handler, err error) { s := &Server{Conn: c, MinCycle: 8297, MaxCycle: 8304, Current: 8297} s.Timer = &event.Timer{} h = s diff --git a/tools/status/main.go b/tools/status/main.go index 61d86d9..4d15a07 100644 --- a/tools/status/main.go +++ b/tools/status/main.go @@ -8,9 +8,18 @@ import ( ) var addrFlag = flag.String("addr", "localhost:25565", "address to connect to") +var srvFlag = flag.Bool("srv", false, "use SRV records to resolve the address") func main() { flag.Parse() + var err error + if *srvFlag { + *addrFlag, err = client.DoDNS(*addrFlag) + if err != nil { + panic(err) + } + } + status, err := client.StatusRaw(*addrFlag) if err != nil { panic(err)