aboutsummaryrefslogtreecommitdiff
path: root/src/script
diff options
context:
space:
mode:
authorest31 <MTest31@outlook.com>2015-02-17 01:37:14 +0100
committerLoic Blot <loic.blot@unix-experience.fr>2015-02-18 16:17:03 +0100
commit82bfa2ee7b90f678b687fb42405ca775c517be13 (patch)
tree5f55ebb512aad9b995dda71f98195dd4473c3dfc /src/script
parent9ef2e5000f6df5a0c16e0343c6af59967150db42 (diff)
downloadminetest-82bfa2ee7b90f678b687fb42405ca775c517be13.tar.gz
minetest-82bfa2ee7b90f678b687fb42405ca775c517be13.tar.bz2
minetest-82bfa2ee7b90f678b687fb42405ca775c517be13.zip
Server: announce MIN/MAX protocol version supported to serverlist. Client: check serverlist
Client now informs about incompatible servers from the list, this permits to prevent the protocol movements. Server announces its supported protocol versions to master server
Diffstat (limited to 'src/script')
-rw-r--r--src/script/lua_api/l_mainmenu.cpp28
-rw-r--r--src/script/lua_api/l_mainmenu.h6
2 files changed, 34 insertions, 0 deletions
diff --git a/src/script/lua_api/l_mainmenu.cpp b/src/script/lua_api/l_mainmenu.cpp
index 0d8365106..2bed2a255 100644
--- a/src/script/lua_api/l_mainmenu.cpp
+++ b/src/script/lua_api/l_mainmenu.cpp
@@ -472,6 +472,7 @@ int ModApiMainMenu::l_get_favorites(lua_State *L)
for (unsigned int i = 0; i < servers.size(); i++)
{
+
lua_pushnumber(L,index);
lua_newtable(L);
@@ -509,6 +510,18 @@ int ModApiMainMenu::l_get_favorites(lua_State *L)
lua_settable(L, top_lvl2);
}
+ if (servers[i]["proto_min"].asString().size()) {
+ lua_pushstring(L,"proto_min");
+ lua_pushinteger(L,servers[i]["proto_min"].asInt());
+ lua_settable(L, top_lvl2);
+ }
+
+ if (servers[i]["proto_max"].asString().size()) {
+ lua_pushstring(L,"proto_max");
+ lua_pushinteger(L,servers[i]["proto_max"].asInt());
+ lua_settable(L, top_lvl2);
+ }
+
if (servers[i]["password"].asString().size()) {
lua_pushstring(L,"password");
lua_pushboolean(L,servers[i]["password"].asBool());
@@ -1083,6 +1096,19 @@ int ModApiMainMenu::l_get_screen_info(lua_State *L)
}
/******************************************************************************/
+int ModApiMainMenu::l_get_min_supp_proto(lua_State *L)
+{
+ lua_pushinteger(L, CLIENT_PROTOCOL_VERSION_MIN);
+ return 1;
+}
+
+int ModApiMainMenu::l_get_max_supp_proto(lua_State *L)
+{
+ lua_pushinteger(L, CLIENT_PROTOCOL_VERSION_MAX);
+ return 1;
+}
+
+/******************************************************************************/
int ModApiMainMenu::l_do_async_callback(lua_State *L)
{
GUIEngine* engine = getGuiEngine(L);
@@ -1142,6 +1168,8 @@ void ModApiMainMenu::Initialize(lua_State *L, int top)
API_FCT(gettext);
API_FCT(get_video_drivers);
API_FCT(get_screen_info);
+ API_FCT(get_min_supp_proto);
+ API_FCT(get_max_supp_proto);
API_FCT(do_async_callback);
}
diff --git a/src/script/lua_api/l_mainmenu.h b/src/script/lua_api/l_mainmenu.h
index ff61dd97a..8b21a93aa 100644
--- a/src/script/lua_api/l_mainmenu.h
+++ b/src/script/lua_api/l_mainmenu.h
@@ -137,6 +137,12 @@ private:
static int l_get_video_drivers(lua_State *L);
+ //version compatibility
+ static int l_get_min_supp_proto(lua_State *L);
+
+ static int l_get_max_supp_proto(lua_State *L);
+
+
// async
static int l_do_async_callback(lua_State *L);