From 955c2b9b3d93d8d12e740ceff531c4ffc96bd709 Mon Sep 17 00:00:00 2001 From: TheBrokenRail Date: Thu, 27 Feb 2025 05:26:35 -0500 Subject: [PATCH] Small Bug Fix --- mods/src/api/api.cpp | 5 ++++- mods/src/api/events.cpp | 12 +++++++++++- mods/src/api/internal.h | 2 ++ symbols/src/api/ConnectedClient.def | 2 +- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/mods/src/api/api.cpp b/mods/src/api/api.cpp index fc5cf1be..20144dd3 100644 --- a/mods/src/api/api.cpp +++ b/mods/src/api/api.cpp @@ -514,7 +514,10 @@ sign->lines[i] = api_get_input(line_##i); \ return CommandServer::NullString; } else { // Call Original Method - return old(server, client, command); + api_suppress_chat_events = client.sock >= 0; // Suppress If Real API Client + std::string ret = old(server, client, command); + api_suppress_chat_events = false; + return ret; } } diff --git a/mods/src/api/events.cpp b/mods/src/api/events.cpp index 50a91687..fc301a8d 100644 --- a/mods/src/api/events.cpp +++ b/mods/src/api/events.cpp @@ -235,9 +235,19 @@ static void Gui_addMessage_injection(Gui_addMessage_t original, Gui *gui, const recursing = false; } } +bool api_suppress_chat_events = false; static bool enabled = false; void api_add_chat_event(const Player *sender, const std::string &message) { - if (!enabled || (!sender && api_compat_mode)) { + if (!enabled) { + // Extended API Is Disabled + return; + } + if (!sender && api_compat_mode) { + // Non-Chat Message Are Only Supported In Non-Compatability Mode + return; + } + if (api_suppress_chat_events) { + // Do Not Record Messages Sent By The API return; } push_event(&ExtraClientData::chat_events, { diff --git a/mods/src/api/internal.h b/mods/src/api/internal.h index 4d761989..b6052479 100644 --- a/mods/src/api/internal.h +++ b/mods/src/api/internal.h @@ -27,3 +27,5 @@ __attribute__((visibility("internal"))) void api_clear_events(const ConnectedCli __attribute__((visibility("internal"))) std::string api_get_projectile_events(CommandServer *server, const ConnectedClient &client, std::optional id); __attribute__((visibility("internal"))) std::string api_get_chat_events(CommandServer *server, const ConnectedClient &client, std::optional id); __attribute__((visibility("internal"))) std::string api_get_block_hit_events(CommandServer *server, const ConnectedClient &client, std::optional id); + +__attribute__((visibility("internal"))) extern bool api_suppress_chat_events; diff --git a/symbols/src/api/ConnectedClient.def b/symbols/src/api/ConnectedClient.def index 5591653f..e2f7be47 100644 --- a/symbols/src/api/ConnectedClient.def +++ b/symbols/src/api/ConnectedClient.def @@ -1,6 +1,6 @@ size 0xc; -property uint sock = 0x0; +property int sock = 0x0; property std::string str = 0x4; property int lastBlockHitPoll = 0x8;