remove onstart handler thing in favor of the user doing that themselves

This commit is contained in:
adman
2026-03-20 22:10:40 +01:00
parent 33cec6ecc9
commit 254b75e76b
14 changed files with 110 additions and 343 deletions
+8 -6
View File
@@ -16,11 +16,6 @@ type ConfigIgnorer struct {
}
func (c *ConfigIgnorer) OnStart() (err error) {
c.RegisterCritical(c.Default)
c.RegisterUntilLatest(c.OnKnownPacks)
c.RegisterUntilLatest(c.OnFinish)
c.RegisterUntilLatest(c.OnPing)
c.RegisterUntilLatest(c.OnKeepAlive)
return
}
@@ -54,7 +49,14 @@ func (c *ConfigIgnorer) OnKeepAlive(packet *v1_21_8.ConfigurationToClientPacketK
}
func IgnoreConfig(c *proto.Conn) (err error) {
err = c.Start(&ConfigIgnorer{c})
ci := &ConfigIgnorer{c}
ci.RegisterCritical(ci.Default)
ci.RegisterUntilLatest(ci.OnKnownPacks)
ci.RegisterUntilLatest(ci.OnFinish)
ci.RegisterUntilLatest(ci.OnPing)
ci.RegisterUntilLatest(ci.OnKeepAlive)
err = ci.Start()
if err != nil {
err = errors.Join(err, errors.New("failed to ignore config"))
}
+24 -29
View File
@@ -124,37 +124,35 @@ func (s *LoginClient) OnSuccess(success *v1_21_8.LoginToClientPacketSuccess) (er
}
func (s *LoginClient) OnStart() (err error) {
s.RegisterCritical(s.OnDefault)
s.RegisterCritical(s.OnCycle)
s.RegisterCritical(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{
lc := &LoginClient{
Conn: c,
Account: account,
})
}
lc.RegisterCritical(lc.OnDefault)
lc.RegisterCritical(lc.OnCycle)
lc.RegisterCritical(lc.OnClose)
lc.RegisterUntilLatest(lc.OnCompress)
lc.RegisterUntilLatest(lc.OnEncrypt)
lc.RegisterUntilLatest(lc.OnDisconnect)
lc.RegisterUntilLatest(lc.OnSuccess)
p, err := MakeHandshakePacket(lc.Conn, proto_base.Login)
if err != nil {
return
}
err = lc.Send(p)
if err != nil {
return
}
lc.SetState(proto_base.Login)
err = lc.Send(&v1_21_8.LoginToServerPacketLoginStart{Username: lc.Account.Name, PlayerUUID: lc.Account.Uuid})
err = lc.Start()
if err != nil {
err = errors.Join(FailedToLoginErr, err)
}
@@ -166,10 +164,7 @@ func ConnectAndLogin(connectTo string, account *api.Account) (c *proto.Conn, err
if err != nil {
return
}
err = c.Start(&LoginClient{
Conn: c,
Account: account,
})
err = Login(c, account)
if err != nil {
err = errors.Join(FailedToLoginErr, err)
}
+22 -15
View File
@@ -16,29 +16,21 @@ type StatusClient struct {
*proto.Conn
Status string
PingSendTime, PingReceiveTime time.Time
DoPingRoundTripTime bool
}
func (s *StatusClient) OnStart() (err error) {
s.RegisterUntilLatest(s.OnStatus)
s.RegisterUntilLatest(s.OnPong)
p, err := MakeHandshakePacket(s.Conn, proto_base.Status)
if err != nil {
return
}
err = s.Send(p)
if err != nil {
return
}
s.SetState(proto_base.Status)
err = s.Send(&v1_21_8.StatusToServerPacketPingStart{})
return
}
func (s *StatusClient) OnStatus(p *v1_21_8.StatusToClientPacketServerInfo) (err error) {
s.Status = p.Response
s.PingSendTime = time.Now()
err = s.Send(&v1_21_8.StatusToServerPacketPing{Time: s.PingSendTime.UnixMilli()})
if s.DoPingRoundTripTime {
err = s.Send(&v1_21_8.StatusToServerPacketPing{Time: s.PingSendTime.UnixMilli()})
} else {
err = event.HandlerDoneErr{}
}
return
}
@@ -63,7 +55,22 @@ func StatusRaw(addr string) (s *StatusClient, err error) {
s = &StatusClient{
Conn: c,
}
err = s.Start(s)
s.Loop = event.NewLoop()
s.RegisterUntilLatest(s.OnStatus)
s.RegisterUntilLatest(s.OnPong)
p, err := MakeHandshakePacket(s.Conn, proto_base.Status)
if err != nil {
return
}
err = s.Send(p)
if err != nil {
return
}
s.SetState(proto_base.Status)
err = s.Send(&v1_21_8.StatusToServerPacketPingStart{})
err = s.StartConn()
return
}