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("name", "");
|
||||||
settings->setDefault("bind_address", "");
|
settings->setDefault("bind_address", "");
|
||||||
settings->setDefault("serverlist_url", "servers.minetest.net");
|
settings->setDefault("serverlist_url", "servers.minetest.net");
|
||||||
|
settings->setDefault("serverlist_url_2", "");
|
||||||
|
|
||||||
// Client
|
// Client
|
||||||
settings->setDefault("address", "");
|
settings->setDefault("address", "");
|
||||||
|
@ -463,7 +463,12 @@ int ModApiMainMenu::l_get_favorites(lua_State *L)
|
|||||||
std::vector<ServerListSpec> servers;
|
std::vector<ServerListSpec> servers;
|
||||||
|
|
||||||
if(listtype == "online") {
|
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 {
|
} else {
|
||||||
servers = ServerList::getLocal();
|
servers = ServerList::getLocal();
|
||||||
}
|
}
|
||||||
@ -474,6 +479,12 @@ int ModApiMainMenu::l_get_favorites(lua_State *L)
|
|||||||
|
|
||||||
for (unsigned int i = 0; i < servers.size(); i++)
|
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);
|
lua_pushnumber(L,index);
|
||||||
|
|
||||||
@ -606,7 +617,7 @@ int ModApiMainMenu::l_delete_favorite(lua_State *L)
|
|||||||
|
|
||||||
|
|
||||||
if(listtype == "online") {
|
if(listtype == "online") {
|
||||||
servers = ServerList::getOnline();
|
servers = ServerList::getOnline(g_settings->get("serverlist_url"));
|
||||||
} else {
|
} else {
|
||||||
servers = ServerList::getLocal();
|
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;
|
std::ostringstream geturl;
|
||||||
|
|
||||||
u16 proto_version_min = g_settings->getFlag("send_pre_v25_init") ?
|
u16 proto_version_min = g_settings->getFlag("send_pre_v25_init") ?
|
||||||
CLIENT_PROTOCOL_VERSION_MIN_LEGACY : CLIENT_PROTOCOL_VERSION_MIN;
|
CLIENT_PROTOCOL_VERSION_MIN_LEGACY : CLIENT_PROTOCOL_VERSION_MIN;
|
||||||
|
|
||||||
geturl << g_settings->get("serverlist_url") <<
|
geturl << url <<
|
||||||
"/list?proto_version_min=" << proto_version_min <<
|
"/list?proto_version_min=" << proto_version_min <<
|
||||||
"&proto_version_max=" << CLIENT_PROTOCOL_VERSION_MAX;
|
"&proto_version_max=" << CLIENT_PROTOCOL_VERSION_MAX;
|
||||||
Json::Value root = fetchJsonValue(geturl.str(), NULL);
|
Json::Value root = fetchJsonValue(geturl.str(), NULL);
|
||||||
|
@ -30,7 +30,7 @@ typedef Json::Value ServerListSpec;
|
|||||||
namespace ServerList
|
namespace ServerList
|
||||||
{
|
{
|
||||||
std::vector<ServerListSpec> getLocal();
|
std::vector<ServerListSpec> getLocal();
|
||||||
std::vector<ServerListSpec> getOnline();
|
std::vector<ServerListSpec> getOnline(const std::string &url);
|
||||||
|
|
||||||
bool deleteEntry(const ServerListSpec &server);
|
bool deleteEntry(const ServerListSpec &server);
|
||||||
bool insert(const ServerListSpec &server);
|
bool insert(const ServerListSpec &server);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user