X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fserver%2Fnet.cpp;fp=src%2Fserver%2Fnet.cpp;h=f7c874f665fb1fbc4f38e190e045b5ae4f96a255;hb=10a310869c61cc52046e165f36ac9639fe9d0c69;hp=38224ec9a57e879e2a84357a77456b30253f3f1c;hpb=69e4d6c0a86a27f9b3f1297e46c55b36059a24b9;p=blank.git diff --git a/src/server/net.cpp b/src/server/net.cpp index 38224ec..f7c874f 100644 --- a/src/server/net.cpp +++ b/src/server/net.cpp @@ -593,7 +593,7 @@ void ClientConnection::On(const Packet::Message &pack) { pack.ReadMessage(msg); if (type == 1 && HasPlayer()) { - server.DistributeMessage(1, PlayerEntity().ID(), msg); + server.DispatchMessage(input->GetPlayer(), msg); } } @@ -609,7 +609,8 @@ Server::Server( , world(world) , spawn_index(world.Chunks().MakeIndex(wc.spawn, 3)) , save(save) -, player_model(nullptr) { +, player_model(nullptr) +, cli(world) { serv_sock = SDLNet_UDP_Open(conf.port); if (!serv_sock) { throw NetError("SDLNet_UDP_Open"); @@ -724,6 +725,17 @@ void Server::SetBlock(Chunk &chunk, int index, const Block &block) { } } +void Server::DispatchMessage(Player &player, const string &msg) { + if (msg.empty()) { + return; + } + if (msg[0] == '/' && msg.size() > 1 && msg[1] != '/') { + cli.Execute(player, msg.substr(1)); + } else { + DistributeMessage(1, player.GetEntity().ID(), msg); + } +} + void Server::DistributeMessage(uint8_t type, uint32_t ref, const string &msg) { auto pack = Packet::Make(serv_pack); pack.WriteType(type);