configuration protocol support draft

This commit is contained in:
Tnze
2023-11-19 02:10:15 +08:00
parent 61916db07a
commit 006f958f43
9 changed files with 184 additions and 106 deletions

View File

@ -79,7 +79,7 @@ func Encrypt(conn *net.Conn, name string, serverKey *rsa.PrivateKey) (*Resp, err
func encryptionRequest(conn *net.Conn, publicKey, verifyToken []byte) error {
return conn.WritePacket(pk.Marshal(
packetid.LoginEncryptionRequest,
packetid.ClientboundLoginEncryptionRequest,
pk.String(""),
pk.ByteArray(publicKey),
pk.ByteArray(verifyToken),
@ -92,7 +92,7 @@ func encryptionResponse(conn *net.Conn, serverKey *rsa.PrivateKey, verifyToken [
if err != nil {
return nil, err
}
if p.ID != packetid.LoginEncryptionResponse {
if packetid.ServerboundPacketID(p.ID) != packetid.ServerboundLoginEncryptionResponse {
return nil, fmt.Errorf("0x%02X is not Encryption Response", p.ID)
}

View File

@ -96,8 +96,8 @@ func (d *MojangLoginHandler) AcceptLogin(conn *net.Conn, protocol int32) (name s
if err != nil {
return
}
if p.ID != packetid.LoginStart {
err = wrongPacketErr{expect: packetid.LoginStart, get: p.ID}
if packetid.ServerboundPacketID(p.ID) != packetid.ServerboundLoginStart {
err = wrongPacketErr{expect: int32(packetid.ServerboundLoginStart), get: p.ID}
return
}
@ -133,7 +133,7 @@ func (d *MojangLoginHandler) AcceptLogin(conn *net.Conn, protocol int32) (name s
// set compression
if d.Threshold >= 0 {
err = conn.WritePacket(pk.Marshal(
packetid.LoginCompression,
packetid.ClientboundLoginCompression,
pk.VarInt(d.Threshold),
))
if err != nil {
@ -152,7 +152,7 @@ func (d *MojangLoginHandler) AcceptLogin(conn *net.Conn, protocol int32) (name s
}
// send login success
err = conn.WritePacket(pk.Marshal(
packetid.LoginSuccess,
packetid.ClientboundLoginSuccess,
pk.UUID(id),
pk.String(name),
pk.Array(properties),

View File

@ -59,15 +59,15 @@ func (s *Server) acceptListPing(conn *net.Conn, clientProtocol int32) {
return
}
switch p.ID {
case packetid.StatusResponse: // List
switch packetid.ClientboundPacketID(p.ID) {
case packetid.ClientboundStatusResponse: // List
var resp []byte
resp, err = s.listResp(clientProtocol)
if err != nil {
break
}
err = conn.WritePacket(pk.Marshal(0x00, pk.String(resp)))
case packetid.StatusPongResponse: // Ping
case packetid.ClientboundStatusPongResponse: // Ping
err = conn.WritePacket(p)
}
if err != nil {

View File

@ -80,7 +80,7 @@ func (s *Server) AcceptConn(conn *net.Conn) {
var loginErr LoginFailErr
if errors.As(err, &loginErr) {
_ = conn.WritePacket(pk.Marshal(
packetid.LoginDisconnect,
packetid.ClientboundLoginDisconnect,
loginErr.reason,
))
}