From 28b3a63da8c038ead4b9b38869322d5f1acdabed Mon Sep 17 00:00:00 2001 From: raven Date: Sun, 22 Mar 2026 22:10:59 -0500 Subject: reject non-CPE clients --- server/server.go | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/server/server.go b/server/server.go index 213bd64..a434aee 100644 --- a/server/server.go +++ b/server/server.go @@ -439,18 +439,11 @@ func (cl *client) performHandshake(conn net.Conn, srvInfo ServerInfo) { } switch pid := packet.(type) { case *classic.PlayerId: - if pid.Version != 7 { - cl.disconnect( - "Please join on protocol version 7 (Minecraft Classic 0.30 / "+ - "ClassiCube)", - ) + if pid.Version != 7 || pid.Ext != classic.UseCpe { + cl.disconnect("Please join in a CPE client (i.e. ClassiCube)") + return } cl.username = classic.UnpadString(pid.Username) - if pid.Ext == classic.UseCpe { - if !cl.cpeHandshake(conn, ext) { - return - } - } default: cl.disconnect("Expected handshake") return @@ -459,6 +452,9 @@ func (cl *client) performHandshake(conn net.Conn, srvInfo ServerInfo) { cl.disconnect("Invalid player name") return } + if !cl.cpeHandshake(conn, ext) { + return + } err = classic.WritePacket(conn, &classic.ServerId { Version: 7, -- cgit v1.2.3