From 6e3946c620895010af8f0a55a92311c1eea732d1 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 12 Feb 2022 20:43:23 +0100 Subject: [PATCH] origin dest added to reply the sender after successful reply of the target dest --- modules/structs/MinecraftClient.go | 4 ++-- modules/structs/QueueMessage.go | 1 + serverCommunication/minecraft.go | 4 ++-- serverCommunication/web.go | 10 +++++++++- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/modules/structs/MinecraftClient.go b/modules/structs/MinecraftClient.go index 8f3640a..7441470 100644 --- a/modules/structs/MinecraftClient.go +++ b/modules/structs/MinecraftClient.go @@ -51,8 +51,8 @@ func (mcClient *MinecraftClient) GenerateMinecraftCmdID() int { return mcClient.CurrentCmdIDIndexByBackend } -func (mcClient *MinecraftClient) AddMessageToSendQueue(raw []byte, cmdID int) { - mcClient.SendQueueMessages = append(mcClient.SendQueueMessages, &SendQueueMessage{MessageRaw: raw, CmdID: cmdID, TrySendCount: 0, Time: time.Now()}) +func (mcClient *MinecraftClient) AddMessageToSendQueue(raw []byte, cmdID int, originDest int) { + mcClient.SendQueueMessages = append(mcClient.SendQueueMessages, &SendQueueMessage{MessageRaw: raw, CmdID: cmdID, TrySendCount: 0, OriginDest: originDest, Time: time.Now()}) } func (mcClient *MinecraftClient) IsCmdIDInSendMessagesQueue(cmdID int) bool { diff --git a/modules/structs/QueueMessage.go b/modules/structs/QueueMessage.go index 901a43c..246b525 100644 --- a/modules/structs/QueueMessage.go +++ b/modules/structs/QueueMessage.go @@ -6,5 +6,6 @@ type SendQueueMessage struct { MessageRaw []byte CmdID int TrySendCount int + OriginDest int // This value tells from which destination this message was sent. (example: voice, mobile, backend) Time time.Time } diff --git a/serverCommunication/minecraft.go b/serverCommunication/minecraft.go index 7f76ef7..222f39b 100644 --- a/serverCommunication/minecraft.go +++ b/serverCommunication/minecraft.go @@ -212,7 +212,7 @@ func SendMessageToServer(dest int, playerUuid string, args string) { } } -func SendMessageToMinecraftServer(status int, dest int, playerUuid string, cmdNumber int, args string) error { +func SendMessageToMinecraftServer(originDest, status int, dest int, playerUuid string, cmdNumber int, args string) error { cmdID := kraProtocol.DefaultCmdID serverName := getMinecraftServerNameByDest(dest) @@ -237,7 +237,7 @@ func SendMessageToMinecraftServer(status int, dest int, playerUuid string, cmdNu } if status == kraProtocol.StatusGet { - mcClient.AddMessageToSendQueue(raw, cmdID) + mcClient.AddMessageToSendQueue(raw, cmdID, originDest) } return nil diff --git a/serverCommunication/web.go b/serverCommunication/web.go index 862b76b..7124db9 100644 --- a/serverCommunication/web.go +++ b/serverCommunication/web.go @@ -123,7 +123,15 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, msg []byt // no ack if dest == kraProtocol.DestProxy || dest == kraProtocol.DestPlayersCurrentServer { // forwarding message to java / minecraft - err = SendMessageToMinecraftServer(status, dest, uuid, cmdNumber, args) + var originDest int + + if isVoice { + originDest = kraProtocol.DestVoice + } else { + originDest = kraProtocol.DestMobile + } + + err = SendMessageToMinecraftServer(originDest, status, dest, uuid, cmdNumber, args) if err != nil { raw := kraProtocol.EncodeWebMessage(kraProtocol.StatusErrTryAgain, cmdID, cmdNumber, args)