From e126700622a086ebc35fe2d3dfdeca7514086fc9 Mon Sep 17 00:00:00 2001 From: Jessica James Date: Tue, 4 Aug 2020 15:56:42 -0500 Subject: [PATCH] Listed player counts are now clamped to [0, playerLimit] --- src/Plugins/RenX/RenX.ServerList/RenX_ServerList.cpp | 9 +++++++-- src/Plugins/RenX/RenX.ServerList/RenX_ServerList.h | 2 ++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.cpp b/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.cpp index 5ffcfb8..6240fb5 100644 --- a/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.cpp +++ b/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.cpp @@ -199,6 +199,11 @@ RenX_ServerListPlugin::~RenX_ServerListPlugin() server.remove(RenX_ServerListPlugin::web_hostname, RenX_ServerListPlugin::web_path, RenX_ServerListPlugin::server_page_name); } +size_t RenX_ServerListPlugin::getListedPlayerCount(const RenX::Server& server) { + size_t player_limit = static_cast(std::max(server.getPlayerLimit(), 0)); + return std::min(server.activePlayers(false).size(), player_limit); +} + Jupiter::ReadableString *RenX_ServerListPlugin::getServerListJSON() { return &server_list_json; @@ -257,7 +262,7 @@ Jupiter::StringS RenX_ServerListPlugin::server_as_json(const RenX::Server &serve server_prefix.size(), server_prefix.ptr(), server_map.size(), server_map.ptr(), server.getBotCount(), - server.activePlayers(false).size(), + getListedPlayerCount(server), server_version.size(), server_version.ptr(), server_attributes.size(), server_attributes.data(), server.getMineLimit(), @@ -592,7 +597,7 @@ void RenX_ServerListPlugin::updateMetadata() { RenX::Server* server = servers.get(index); if (server->isConnected() && server->isFullyConnected()) { ++server_count; - player_count += server->players.size(); + player_count += getListedPlayerCount(*server); } } diff --git a/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.h b/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.h index 8667ec4..96da111 100644 --- a/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.h +++ b/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.h @@ -33,6 +33,8 @@ public: // RenX_ServerListPlugin std::vector attributes; }; + size_t getListedPlayerCount(const RenX::Server& server); + Jupiter::ReadableString *getServerListJSON(); Jupiter::ReadableString* getMetadataJSON();