From 85529b965bba4482c5cfe144e6e13b1434c71cb9 Mon Sep 17 00:00:00 2001 From: adman Date: Sun, 25 Jan 2026 12:55:27 +0100 Subject: [PATCH] egg --- event/event_bus.go | 3 ++- go.mod | 2 +- go.sum | 2 ++ go.work | 8 ++++++++ server/server.go | 3 +++ server/server_modules/login_server.go | 11 +++++------ text/text.go | 13 +++++++++++++ 7 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 go.work diff --git a/event/event_bus.go b/event/event_bus.go index e8ff696..71e8a68 100644 --- a/event/event_bus.go +++ b/event/event_bus.go @@ -4,6 +4,7 @@ package event import ( "errors" "fmt" + "log/slog" "reflect" "strings" ) @@ -61,7 +62,7 @@ func (l *Loop) FindHandlers() { } eventType := method.Type.In(1) l.HandlerFunctions[eventType] = append(l.HandlerFunctions[eventType], v.Method(i)) - //fmt.Println("Registered Handler:", t.String(), ".", method.Name, "(", eventType.String(), ")") + slog.Debug("Registered Handler", "at", t.String()+"."+method.Name, "for", eventType.String()) } } } diff --git a/go.mod b/go.mod index fa5281e..ca8e969 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/admin-else/strom -go 1.24 +go 1.25 require ( github.com/go-viper/mapstructure/v2 v2.4.0 diff --git a/go.sum b/go.sum index 389efe2..c1ab7a8 100644 --- a/go.sum +++ b/go.sum @@ -2,5 +2,7 @@ github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9L github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= diff --git a/go.work b/go.work new file mode 100644 index 0000000..f5d1a66 --- /dev/null +++ b/go.work @@ -0,0 +1,8 @@ +go 1.25 + +use ( + .devres/examples/ishacking + . + .devres/examples/ishackingapis + .devres/examples/testmod +) \ No newline at end of file diff --git a/server/server.go b/server/server.go index a560d14..b641957 100644 --- a/server/server.go +++ b/server/server.go @@ -63,6 +63,9 @@ func StartServerWithOnConn(listenAddr string, onConn func(c *proto.Conn) (err er defer c.Close() connErr := onConn(c) if connErr != nil { + if c.State() == proto_base.Status || c.State() == proto_base.Handshaking { + return // we dont care about status packets + } slog.Error("Error while handling client", "error", connErr, "client", c.Conn.RemoteAddr()) connErr = server_modules.Kick(c, text.Pretty(connErr.Error())) if connErr != nil { diff --git a/server/server_modules/login_server.go b/server/server_modules/login_server.go index 21d59c8..e997648 100644 --- a/server/server_modules/login_server.go +++ b/server/server_modules/login_server.go @@ -32,8 +32,6 @@ func (u UnexpectedNextStateError) Error() string { return fmt.Sprintf("unexpected next state: %v", u.NextState) } -var IncompatibleProtocolVersionError = fmt.Errorf("incompatible protocol version") - type LoginServer struct { *proto.Conn //OnlineMode bool FIXME: implement this @@ -51,16 +49,17 @@ func (l *LoginServer) OnHandshake(packet *v1_21_8.HandshakingToServerPacketSetPr l.ServerHost = packet.ServerHost l.ServerPort = packet.ServerPort + if packet.NextState != int32(proto_base.Login) && !(l.Status != nil && packet.NextState == int32(proto_base.Status)) { + err = UnexpectedNextStateError{proto_base.State(packet.NextState)} + } + if len(l.CompatibleVersions) != 0 { if !slices.Contains(l.CompatibleVersions, packet.ProtocolVersion) { - err = IncompatibleProtocolVersionError + err = fmt.Errorf("incompatible protocol version please use one of %v you can look up the real coresponding version at https://minecraft.wiki/w/Minecraft_Wiki:Projects/wiki.vg_merge/Protocol_version_numbers", l.CompatibleVersions) return } } - if packet.NextState != int32(proto_base.Login) && !(l.Status != nil && packet.NextState == int32(proto_base.Status)) { - err = UnexpectedNextStateError{proto_base.State(packet.NextState)} - } return } diff --git a/text/text.go b/text/text.go index f2bc4b4..6ac64cc 100644 --- a/text/text.go +++ b/text/text.go @@ -4,6 +4,8 @@ import ( "encoding/json" "fmt" "strings" + + "github.com/admin-else/strom/nbt" ) // Component represents a Minecraft text component. @@ -538,3 +540,14 @@ func (c *Component) writePretty(sb *strings.Builder) { extra.writePretty(sb) } } + +func (c *Component) AsNBT() nbt.Anon { + return nbt.Anon{Value: c.ToNBT()} +} + +func (c *Component) AsOldNBT() nbt.Tag { + return nbt.Tag{ + Name: "", + Value: c.ToNBT(), + } +}