diff --git a/modules/kraProtocol/kraProtocol.go b/modules/kraProtocol/kraProtocol.go index 53eff52..58f6437 100644 --- a/modules/kraProtocol/kraProtocol.go +++ b/modules/kraProtocol/kraProtocol.go @@ -23,6 +23,8 @@ const ( DestPlayersCurrentServer = 11 DefaultCmdID = 1 + + DummyUUID = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" ) func EncodeWebMessage(status int, cmdID int, cmdNumber int, args interface{}) []byte { diff --git a/servers/minecraft/socketHub.go b/servers/minecraft/socketHub.go index 90b7fdc..3c0ee5e 100644 --- a/servers/minecraft/socketHub.go +++ b/servers/minecraft/socketHub.go @@ -3,6 +3,7 @@ package minecraft import ( "github.com/gofiber/websocket/v2" "krakatoa.net/backend/modules/cache" + "krakatoa.net/backend/modules/kraProtocol" "krakatoa.net/backend/modules/logger" "krakatoa.net/backend/modules/structs" serverCommunication "krakatoa.net/backend/serverCommunication" @@ -17,10 +18,21 @@ func RunHub() { select { case connection := <-register: servername := connection.Query("s") + dest := serverCommunication.GenerateDestForNewMinecraftClient() - cache.MinecraftClients[servername] = &structs.MinecraftClient{Name: servername, Dest: serverCommunication.GenerateDestForNewMinecraftClient(), Conn: connection} + cache.MinecraftClients[servername] = &structs.MinecraftClient{Name: servername, Dest: dest, Conn: connection} - logger.Minecraft.Debugln("connection registered ", connection.Query("c"), connection) + logger.Minecraft.Debugln("connection registered ", connection.Query("c"), connection, "dest:", dest) + + mcClient := serverCommunication.GetMinecraftClientByConn(connection) + + raw := kraProtocol.EncodeJavaMessage(kraProtocol.StatusGet, mcClient.GenerateMinecraftCmdID(), 0, kraProtocol.DummyUUID, 33767, mcClient.Dest) + + err := mcClient.SendBinaryMessage(raw) + + if err != nil { + logger.Minecraft.Warnln("failed to send msg to mc client:", mcClient.Name, "dest:", mcClient.Dest) + } case data := <-broadcast: logger.Minecraft.Debugln("message received", data.Msg)