diff --git a/src/client/gui/screens/ConsoleScreen.cpp b/src/client/gui/screens/ConsoleScreen.cpp index 42f47ee..5a9e4a6 100644 --- a/src/client/gui/screens/ConsoleScreen.cpp +++ b/src/client/gui/screens/ConsoleScreen.cpp @@ -6,7 +6,7 @@ #include "../../../world/level/Level.h" #include "../../../network/RakNetInstance.h" #include "../../../network/ServerSideNetworkHandler.h" -#include "../../../network/packet/ChatPacket.h" +#include "../../../network/packet/MessagePacket.h" #include "../../../platform/log.h" #include "util/StringUtils.h" @@ -76,7 +76,7 @@ void ConsoleScreen::execute() if (minecraft->netCallback && minecraft->raknetInstance->isServer()) { static_cast(minecraft->netCallback)->displayGameMessage(_input); } else if (minecraft->netCallback) { - ChatPacket chatPkt(_input); + MessagePacket chatPkt(_input.c_str()); minecraft->raknetInstance->send(chatPkt); } else { minecraft->gui.addMessage("<" + minecraft->player->name + "> " + _input); diff --git a/src/network/ServerSideNetworkHandler.cpp b/src/network/ServerSideNetworkHandler.cpp index 474d9ad..2f4abc5 100755 --- a/src/network/ServerSideNetworkHandler.cpp +++ b/src/network/ServerSideNetworkHandler.cpp @@ -155,6 +155,23 @@ void ServerSideNetworkHandler::displayGameMessage(const std::string& message) raknetInstance->send(packet); } +void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, MessagePacket* packet) +{ + auto player = getPlayer(source); + + if (player == nullptr) return; // @todo maybe kick? + std::string msg = packet->message.C_String(); + + if (packet->message[0] == '/') { + // This is a command + + ChatPacket resp(minecraft->commandManager().execute(*minecraft, *player, Util::stringTrim(msg.substr(1)))); + return sendPrivate(resp, source); + } + + displayGameMessage("<" + player->name + "> " + msg); +} + void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, ChatPacket* packet) { auto player = getPlayer(source); diff --git a/src/network/ServerSideNetworkHandler.h b/src/network/ServerSideNetworkHandler.h index 1e9585d..c1cb632 100755 --- a/src/network/ServerSideNetworkHandler.h +++ b/src/network/ServerSideNetworkHandler.h @@ -58,6 +58,8 @@ public: virtual void handle(const RakNet::RakNetGUID& source, ContainerClosePacket* packet); virtual void handle(const RakNet::RakNetGUID& source, SignUpdatePacket* packet); virtual void handle(const RakNet::RakNetGUID& source, ChatPacket* packet); + virtual void handle(const RakNet::RakNetGUID& source, MessagePacket* packet); + virtual void handle(const RakNet::RakNetGUID& source, WantCreatePacket* packet); bool allowsIncomingConnections() { return _allowIncoming; } diff --git a/src/network/command/CommandServer.cpp b/src/network/command/CommandServer.cpp index 280b0a9..3bcbbc1 100755 --- a/src/network/command/CommandServer.cpp +++ b/src/network/command/CommandServer.cpp @@ -92,7 +92,7 @@ static std::string ToStringOk(const T& a, const T& b, const T& c) { std::stringstream ss; ss << a << "," << b << "," << c << "\n"; return ss.str(); -} +} static bool inRange(int c, int lowInclusive, int highInclusive) { return c >= lowInclusive && c <= highInclusive;