caption = fgettext("Credits"),
cbf_formspec = function(tabview, name, tabdata)
local logofile = defaulttexturedir .. "logo.png"
+ local version = core.get_version()
return "image[0.5,1;" .. core.formspec_escape(logofile) .. "]" ..
- "label[0.5,3.2;Minetest " .. core.get_version() .. "]" ..
+ "label[0.5,3.2;" .. version.project .. " " .. version.string .. "]" ..
"label[0.5,3.5;http://minetest.net]" ..
"tablecolumns[color;text]" ..
"tableoptions[background=#00000000;highlight=#00000000;border=false]" ..
* nil: return all entries,
* true: return only subdirectory names, or
* false: return only file names.
+* `minetest.get_version()`: returns a table containing components of the
+ engine version. Components:
+ * `project`: Name of the project, eg, "Minetest"
+ * `string`: Simple version, eg, "1.2.3-dev"
+ * `hash`: Full git version (only set if available), eg, "1.2.3-dev-01234567-dirty"
+ Use this for informational purposes only. The information in the returned
+ table does not represent the capabilities of the engine, nor is it
+ reliable or verifyable. Compatible forks will have a different name and
+ version entirely. To check for the presence of engine features, test
+ whether the functions exported by the wanted features exist. For example:
+ `if core.nodeupdate then ... end`.
### Logging
* `minetest.debug(...)`
return 0;
}
-/******************************************************************************/
-int ModApiMainMenu::l_get_version(lua_State *L)
-{
- lua_pushstring(L, g_version_string);
- return 1;
-}
-
/******************************************************************************/
int ModApiMainMenu::l_sound_play(lua_State *L)
{
API_FCT(extract_zip);
API_FCT(get_mainmenu_path);
API_FCT(show_file_open_dialog);
- API_FCT(get_version);
API_FCT(download_file);
API_FCT(get_modstore_details);
API_FCT(get_modstore_list);
ASYNC_API_FCT(delete_dir);
ASYNC_API_FCT(copy_dir);
//ASYNC_API_FCT(extract_zip); //TODO remove dependency to GuiEngine
- ASYNC_API_FCT(get_version);
ASYNC_API_FCT(download_file);
ASYNC_API_FCT(get_modstore_details);
ASYNC_API_FCT(get_modstore_list);
static int l_delete_favorite(lua_State *L);
- static int l_get_version(lua_State *L);
-
static int l_sound_play(lua_State *L);
static int l_sound_stop(lua_State *L);
#include "settings.h"
#include "util/auth.h"
#include "util/base64.h"
+#include "config.h"
+#include "version.h"
#include <algorithm>
+
// log([level,] text)
// Writes a line to the logger.
// The one-argument version logs to infostream.
return 1;
}
+// get_builtin_path()
int ModApiUtil::l_get_builtin_path(lua_State *L)
{
NO_MAP_LOCK_REQUIRED;
std::string path = porting::path_share + DIR_DELIM + "builtin";
lua_pushstring(L, path.c_str());
+
return 1;
}
return 1;
}
+// get_version()
+int ModApiUtil::l_get_version(lua_State *L)
+{
+ lua_createtable(L, 0, 3);
+ int table = lua_gettop(L);
+
+ lua_pushstring(L, PROJECT_NAME_C);
+ lua_setfield(L, table, "project");
+
+ lua_pushstring(L, g_version_string);
+ lua_setfield(L, table, "string");
+
+ if (strcmp(g_version_string, g_version_hash)) {
+ lua_pushstring(L, g_version_hash);
+ lua_setfield(L, table, "hash");
+ }
+
+ return 1;
+}
+
void ModApiUtil::Initialize(lua_State *L, int top)
{
API_FCT(encode_base64);
API_FCT(decode_base64);
+
+ API_FCT(get_version);
}
void ModApiUtil::InitializeAsync(AsyncEngine& engine)
ASYNC_API_FCT(encode_base64);
ASYNC_API_FCT(decode_base64);
+
+ ASYNC_API_FCT(get_version);
}
// decode_base64(string)
static int l_decode_base64(lua_State *L);
+ // get_version()
+ static int l_get_version(lua_State *L);
+
public:
static void Initialize(lua_State *L, int top);