]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/server.cpp
Increase limit for simultaneous blocks sent per client and the meshgen cache.
[dragonfireclient.git] / src / server.cpp
index b8a99f6ae952181ca274af267847feebf2a8ff38..8f6257afe83443f86c23fa0c97948e056cbed901 100644 (file)
@@ -653,7 +653,12 @@ void Server::AsyncRunStep(bool initial_step)
        }
        m_clients.step(dtime);
 
-       m_lag_gauge->increment((m_lag_gauge->get() > dtime ? -1 : 1) * dtime/100);
+       // increase/decrease lag gauge gradually
+       if (m_lag_gauge->get() > dtime) {
+               m_lag_gauge->decrement(dtime/100);
+       } else {
+               m_lag_gauge->increment(dtime/100);
+       }
 #if USE_CURL
        // send masterserver announce
        {
@@ -797,7 +802,7 @@ void Server::AsyncRunStep(bool initial_step)
                                        // u16 id
                                        // std::string data
                                        buffer.append(idbuf, sizeof(idbuf));
-                                       buffer.append(serializeString(aom.datastring));
+                                       buffer.append(serializeString16(aom.datastring));
                                }
                        }
                        /*
@@ -1988,7 +1993,7 @@ void Server::SendActiveObjectRemoveAdd(RemoteClient *client, PlayerSAO *playersa
                writeU8((u8*)buf, type);
                data.append(buf, 1);
 
-               data.append(serializeLongString(
+               data.append(serializeString32(
                        obj->getClientInitializationData(client->net_proto_version)));
 
                // Add to known objects
@@ -2333,7 +2338,7 @@ void Server::SendBlockNoLock(session_t peer_id, MapBlock *block, u8 ver,
        block->serializeNetworkSpecific(os);
        std::string s = os.str();
 
-       NetworkPacket pkt(TOCLIENT_BLOCKDATA, 2 + 2 + 2 + 2 + s.size(), peer_id);
+       NetworkPacket pkt(TOCLIENT_BLOCKDATA, 2 + 2 + 2 + s.size(), peer_id);
 
        pkt << block->getPos();
        pkt.putRawString(s.c_str(), s.size());
@@ -2657,6 +2662,23 @@ void Server::sendRequestedMedia(session_t peer_id,
        }
 }
 
+void Server::SendMinimapModes(session_t peer_id,
+               std::vector<MinimapMode> &modes, size_t wanted_mode)
+{
+       RemotePlayer *player = m_env->getPlayer(peer_id);
+       assert(player);
+       if (player->getPeerId() == PEER_ID_INEXISTENT)
+               return;
+
+       NetworkPacket pkt(TOCLIENT_MINIMAP_MODES, 0, peer_id);
+       pkt << (u16)modes.size() << (u16)wanted_mode;
+
+       for (auto &mode : modes)
+               pkt << (u16)mode.type << mode.label << mode.size << mode.texture << mode.scale;
+
+       Send(&pkt);
+}
+
 void Server::sendDetachedInventory(Inventory *inventory, const std::string &name, session_t peer_id)
 {
        NetworkPacket pkt(TOCLIENT_DETACHED_INVENTORY, 0, peer_id);