strom: add 1.12.2 protocol support and legacy login/status handlers

- Add minecraft-data for 1.12.2 (protocol 340)
- Generate proto_generated/v1_12_2
- Add v1_12_2 legacy handlers to client.Login (OnDisconnect,
  OnCompress, OnSuccess) and client.Status (OnStatus, OnPong)
- Same pattern as v1_8: RegisterUntilLatest only registers
  upward, so legacy versions need explicit RegisterCritical handlers
This commit is contained in:
Admin Else
2026-08-04 22:01:06 +02:00
parent acb5fe8d90
commit 1e6ce06fb0
9 changed files with 17933 additions and 3 deletions
+20
View File
@@ -10,6 +10,7 @@ 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"
)
@@ -54,6 +55,23 @@ 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.
@@ -79,6 +97,8 @@ func StatusRawWithVersion(ctx context.Context, addr, version string) (s *StatusC
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)
p, err := MakeHandshakePacketAddr(s.Conn, proto_base.Status, addr)
if err != nil {