From 1a8ead4955f3b46061e5a6e131611c1de4d56ea7 Mon Sep 17 00:00:00 2001 From: InviseDivine Date: Mon, 27 Jul 2026 15:45:17 +0200 Subject: [PATCH] 2 --- src/network/ServerSideNetworkHandler.cpp | 60 ++++++++++++++---------- src/plugins/LuaPlayer.hpp | 1 + src/plugins/MessageEvent.hpp | 9 ++++ src/plugins/PluginsManager.cpp | 6 +++ 4 files changed, 50 insertions(+), 26 deletions(-) create mode 100644 src/plugins/MessageEvent.hpp diff --git a/src/network/ServerSideNetworkHandler.cpp b/src/network/ServerSideNetworkHandler.cpp index 0776339..62cb4e5 100755 --- a/src/network/ServerSideNetworkHandler.cpp +++ b/src/network/ServerSideNetworkHandler.cpp @@ -40,6 +40,7 @@ #include "../server/ServerPlayer.h" #include "../world/entity/item/FallingTile.h" #include +#include #define TIMES(x) for(int itc ## __LINE__ = 0; itc ## __LINE__ < x; ++ itc ## __LINE__) @@ -164,23 +165,24 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, MessageP auto msg = std::string(packet->message.C_String()); - if (packet->message[0] == '/') { - // This is a command - auto cmd = Util::stringTrim(msg); - - if (PluginsManager::get().emitCommands(msg, source)) { - ChatPacket resp(minecraft->commandManager().execute(*minecraft, *player, msg)); - return sendPrivate(resp, source); - } else { - return; - } - } - // @todo rewrite - bool shouldShow = true; + MessageEvent event; + event.m_decline = false; - PluginsManager::get().emit("Message", LuaPlayer(source), packet->message); + PluginsManager::get().emit("Message", LuaPlayer(source), msg, event); + + if (!event.m_decline) { + if (packet->message[0] == '/') { + // This is a command + auto cmd = Util::stringTrim(msg.substr(1)); + + if (PluginsManager::get().emitCommands(cmd, source)) { + ChatPacket resp(minecraft->commandManager().execute(*minecraft, *player, cmd)); + return sendPrivate(resp, source); + } else { + return; + } + } - if (shouldShow) { displayGameMessage("<" + player->name + "> " + msg); } } @@ -191,20 +193,26 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, ChatPack if (player == nullptr) return; // @todo maybe kick? - if (packet->message[0] == '/') { - // This is a command - auto cmd = Util::stringTrim(packet->message.substr(1)); + MessageEvent event; + event.m_decline = false; + + PluginsManager::get().emit("Message", LuaPlayer(source), packet->message, event); + + if (!event.m_decline) { + if (packet->message[0] == '/') { + // This is a command + auto cmd = Util::stringTrim(packet->message.substr(1)); - if (PluginsManager::get().emitCommands(cmd, source)) { - ChatPacket resp(minecraft->commandManager().execute(*minecraft, *player, cmd)); - return sendPrivate(resp, source); - } else { - return; + if (PluginsManager::get().emitCommands(cmd, source)) { + ChatPacket resp(minecraft->commandManager().execute(*minecraft, *player, cmd)); + return sendPrivate(resp, source); + } else { + return; + } } - } - displayGameMessage("<" + player->name + "> " + packet->message); - PluginsManager::get().emit("Message", LuaPlayer(source), packet->message); + displayGameMessage("<" + player->name + "> " + packet->message); + } } void ServerSideNetworkHandler::onNewClient(const RakNet::RakNetGUID& clientGuid) diff --git a/src/plugins/LuaPlayer.hpp b/src/plugins/LuaPlayer.hpp index 711b70b..79e4869 100644 --- a/src/plugins/LuaPlayer.hpp +++ b/src/plugins/LuaPlayer.hpp @@ -1,4 +1,5 @@ #pragma once + #include #include #include diff --git a/src/plugins/MessageEvent.hpp b/src/plugins/MessageEvent.hpp new file mode 100644 index 0000000..b0c1731 --- /dev/null +++ b/src/plugins/MessageEvent.hpp @@ -0,0 +1,9 @@ +#pragma once + +class MessageEvent { +public: + bool m_decline; + + void setDecline(bool decline) { m_decline = decline; } +private: +}; \ No newline at end of file diff --git a/src/plugins/PluginsManager.cpp b/src/plugins/PluginsManager.cpp index a129f88..93cc24c 100644 --- a/src/plugins/PluginsManager.cpp +++ b/src/plugins/PluginsManager.cpp @@ -4,6 +4,7 @@ #include #include +#include "MessageEvent.hpp" namespace fs = std::filesystem; @@ -79,6 +80,11 @@ void PluginsManager::registerTypes() { "setHp", &LuaPlayer::setHp ); + m_lua.new_usertype( + "MessageEvent", + "setDecline", &MessageEvent::setDecline + ); + m_lua["Server"] = &m_srv; }