Remove client-side chat prediction. (#5055)
authorred-001 <red-001@outlook.ie>
Mon, 16 Jan 2017 23:09:47 +0000 (23:09 +0000)
committerLoïc Blot <nerzhul@users.noreply.github.com>
Mon, 16 Jan 2017 23:09:47 +0000 (00:09 +0100)
Network lag isn't really a big issue with chat and chat prediction makes writing mods harder.

builtin/game/features.lua
src/client.cpp
src/network/networkprotocol.h
src/server.cpp

index 646b254ea20a66ae69f4d0ca89e4a31ee643ab2b..ef85fbbc373431c59571ded52bdc0c54fceee42c 100644 (file)
@@ -10,6 +10,7 @@ core.features = {
        texture_names_parens = true,
        area_store_custom_ids = true,
        add_entity_with_staticdata = true,
+       no_chat_message_prediction = true,
 }
 
 function core.has_feature(arg)
index c2471dbd7ae6c6ac647e541fdfe4a09d1d6f1c27..30058a2b0b490bfc1f86560c40e4b1338a1be38c 100644 (file)
@@ -1563,10 +1563,13 @@ void Client::typeChatMessage(const std::wstring &message)
        }
        else
        {
-               LocalPlayer *player = m_env.getLocalPlayer();
-               assert(player != NULL);
-               std::wstring name = narrow_to_wide(player->getName());
-               m_chat_queue.push((std::wstring)L"<" + name + L"> " + message);
+               // compatibility code
+               if (m_proto_ver < 29) {
+                       LocalPlayer *player = m_env.getLocalPlayer();
+                       assert(player != NULL);
+                       std::wstring name = narrow_to_wide(player->getName());
+                       m_chat_queue.push((std::wstring)L"<" + name + L"> " + message);
+               }
        }
 }
 
index 45bf76ff8b3b14b5bddc0f06071add4b552da8da..23c8a665b10133e40747c63eb6572f70c0456cfb 100644 (file)
@@ -142,6 +142,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
                Server doesn't accept TOSERVER_BREATH anymore
                serialization of TileAnimation params changed
                TAT_SHEET_2D
+               Removed client-sided chat perdiction
 */
 
 #define LATEST_PROTOCOL_VERSION 29
index 29dce5a4ac4b47b9ccd2ed61ec936228fb6e891e..74d9541c9fd745f337760c724fae980b087390ae 100644 (file)
@@ -2826,7 +2826,15 @@ std::wstring Server::handleChat(const std::string &name, const std::wstring &wna
 
                std::vector<u16> clients = m_clients.getClientIDs();
 
+               /*
+                       Send the message back to the inital sender
+                       if they are using protocol version >= 29
+               */
+
                u16 peer_id_to_avoid_sending = (player ? player->peer_id : PEER_ID_INEXISTENT);
+               if (player->protocol_version >= 29)
+                       peer_id_to_avoid_sending = PEER_ID_INEXISTENT;
+
                for (u16 i = 0; i < clients.size(); i++) {
                        u16 cid = clients[i];
                        if (cid != peer_id_to_avoid_sending)