53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"log/slog"
|
|
|
|
"github.com/admin-else/strom/event"
|
|
"github.com/admin-else/strom/proto"
|
|
"github.com/admin-else/strom/server"
|
|
"github.com/admin-else/strom/text"
|
|
)
|
|
|
|
func wontFail[T any](v T, err error) T {
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return v
|
|
}
|
|
|
|
var StatusResponse = server.StatusResponse{
|
|
Version: server.StatusResponseVersion{
|
|
Name: text.Pretty("STROM"),
|
|
Protocol: 772,
|
|
},
|
|
Players: server.StatusResponsePlayers{},
|
|
Description: text.Pretty("GO TO LIMBO"),
|
|
Favicon: "",
|
|
EnforcesSecureChat: false,
|
|
}.MustMarshal()
|
|
|
|
type Server struct {
|
|
*proto.Conn
|
|
}
|
|
|
|
func (s *Server) OnStart(_ event.OnStart) (err error) {
|
|
//goland:noinspection GoResourceLeak captures the conn object which should NOT be closed
|
|
_, err = server.ServeLogin(s.Conn, server.WithRawStatus(StatusResponse))
|
|
if err != nil {
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
func main() {
|
|
slog.SetLogLoggerLevel(slog.LevelDebug)
|
|
err := server.StartServerWithFactory(":25565", func(c *proto.Conn) (h any, err error) {
|
|
h = &Server{Conn: c}
|
|
return
|
|
})
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|