Dual serverlist
This commit is contained in:
parent
c9d0b5a9c3
commit
272314875d
@ -36,6 +36,7 @@ void set_default_settings(Settings *settings)
|
||||
settings->setDefault("name", "");
|
||||
settings->setDefault("bind_address", "");
|
||||
settings->setDefault("serverlist_url", "servers.minetest.net");
|
||||
settings->setDefault("serverlist_url_2", "");
|
||||
|
||||
// Client
|
||||
settings->setDefault("address", "");
|
||||
|
@ -463,7 +463,12 @@ int ModApiMainMenu::l_get_favorites(lua_State *L)
|
||||
std::vector<ServerListSpec> servers;
|
||||
|
||||
if(listtype == "online") {
|
||||
servers = ServerList::getOnline();
|
||||
servers = ServerList::getOnline(g_settings->get("serverlist_url"));
|
||||
std::string aux_list = g_settings->get("serverlist_url_2");
|
||||
if (!aux_list.empty()) {
|
||||
std::vector<ServerListSpec> aux = ServerList::getOnline(aux_list);
|
||||
servers.insert(servers.end(), aux.begin(), aux.end());
|
||||
}
|
||||
} else {
|
||||
servers = ServerList::getLocal();
|
||||
}
|
||||
@ -474,6 +479,12 @@ int ModApiMainMenu::l_get_favorites(lua_State *L)
|
||||
|
||||
for (unsigned int i = 0; i < servers.size(); i++)
|
||||
{
|
||||
// only list compatible servers
|
||||
if (!servers[i]["proto_min"].asString().size() ||
|
||||
!servers[i]["proto_max"].asString().size() ||
|
||||
servers[i]["proto_min"].asInt() > CLIENT_PROTOCOL_VERSION_MAX ||
|
||||
servers[i]["proto_max"].asInt() < CLIENT_PROTOCOL_VERSION_MIN)
|
||||
continue;
|
||||
|
||||
lua_pushnumber(L,index);
|
||||
|
||||
@ -606,7 +617,7 @@ int ModApiMainMenu::l_delete_favorite(lua_State *L)
|
||||
|
||||
|
||||
if(listtype == "online") {
|
||||
servers = ServerList::getOnline();
|
||||
servers = ServerList::getOnline(g_settings->get("serverlist_url"));
|
||||
} else {
|
||||
servers = ServerList::getLocal();
|
||||
}
|
||||
|
@ -66,14 +66,14 @@ std::vector<ServerListSpec> getLocal()
|
||||
}
|
||||
|
||||
|
||||
std::vector<ServerListSpec> getOnline()
|
||||
std::vector<ServerListSpec> getOnline(const std::string &url)
|
||||
{
|
||||
std::ostringstream geturl;
|
||||
|
||||
u16 proto_version_min = g_settings->getFlag("send_pre_v25_init") ?
|
||||
CLIENT_PROTOCOL_VERSION_MIN_LEGACY : CLIENT_PROTOCOL_VERSION_MIN;
|
||||
|
||||
geturl << g_settings->get("serverlist_url") <<
|
||||
geturl << url <<
|
||||
"/list?proto_version_min=" << proto_version_min <<
|
||||
"&proto_version_max=" << CLIENT_PROTOCOL_VERSION_MAX;
|
||||
Json::Value root = fetchJsonValue(geturl.str(), NULL);
|
||||
|
@ -30,7 +30,7 @@ typedef Json::Value ServerListSpec;
|
||||
namespace ServerList
|
||||
{
|
||||
std::vector<ServerListSpec> getLocal();
|
||||
std::vector<ServerListSpec> getOnline();
|
||||
std::vector<ServerListSpec> getOnline(const std::string &url);
|
||||
|
||||
bool deleteEntry(const ServerListSpec &server);
|
||||
bool insert(const ServerListSpec &server);
|
||||
|
Loading…
x
Reference in New Issue
Block a user