strom: fix RegisterUntilLow to panic on reverse range, use dual-range registrations
- RegisterUntilLow now panics if startIndex > endIndex (programmer must address version incompatibility explicitly, not silently skip) - Replace per-version RegisterCritical handlers with dual-range RegisterUntil: modern range (v1_21_8->latest) + legacy range (v1_8->1.12.2) - Remove v1_12_2 handler duplicates (covered by upward range from v1_8) - Move legacy chat handling into chat.Module.SendMessage (protocol<764 uses v1_8.PlayToServerPacketChat instead of v1_21_11) - Skip chat signing init for pre-1.19 versions
This commit is contained in:
+2
-24
@@ -10,7 +10,6 @@ import (
|
||||
"github.com/admin-else/strom/mc/proto_base"
|
||||
"github.com/admin-else/strom/mc/proto_generated/v1_21_8"
|
||||
"github.com/admin-else/strom/mc/proto_generated/v1_8"
|
||||
"github.com/admin-else/strom/mc/proto_generated/v1_12_2"
|
||||
"github.com/admin-else/strom/mc/server"
|
||||
)
|
||||
|
||||
@@ -55,23 +54,6 @@ func (s *StatusClient) OnPongV1_8(p *v1_8.StatusToClientPacketPing) (err error)
|
||||
return
|
||||
}
|
||||
|
||||
func (s *StatusClient) OnStatusV1_12_2(p *v1_12_2.StatusToClientPacketServerInfo) (err error) {
|
||||
s.Status = p.Response
|
||||
s.PingSendTime = time.Now()
|
||||
if s.DoPingRoundTripTime {
|
||||
err = s.Send(&v1_21_8.StatusToServerPacketPing{Time: s.PingSendTime.UnixMilli()})
|
||||
} else {
|
||||
err = event.HandlerDoneErr{}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (s *StatusClient) OnPongV1_12_2(p *v1_12_2.StatusToClientPacketPing) (err error) {
|
||||
s.PingReceiveTime = time.Now()
|
||||
err = event.HandlerDoneErr{}
|
||||
return
|
||||
}
|
||||
|
||||
// StatusRaw returns a StatusClient that is not connected to a server.
|
||||
// So ignore the resource leak warning. And maybe attach a warn ignore comment.
|
||||
// It does not resolve SRV records.
|
||||
@@ -93,12 +75,8 @@ func StatusRawWithVersion(ctx context.Context, addr, version string) (s *StatusC
|
||||
s = &StatusClient{
|
||||
Conn: c,
|
||||
}
|
||||
s.RegisterCriticalUntilLatest(s.OnStatus)
|
||||
s.RegisterCriticalUntilLatest(s.OnPong)
|
||||
s.RegisterCritical(s.OnStatusV1_8)
|
||||
s.RegisterCritical(s.OnPongV1_8)
|
||||
s.RegisterCritical(s.OnStatusV1_12_2)
|
||||
s.RegisterCritical(s.OnPongV1_12_2)
|
||||
s.RegisterUntil("26.2", s.OnStatus, s.OnPong)
|
||||
s.RegisterUntil("1.12.2", s.OnStatusV1_8, s.OnPongV1_8)
|
||||
|
||||
p, err := MakeHandshakePacketAddr(s.Conn, proto_base.Status, addr)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user