Rename moveresult speed to velocity
[oweals/minetest.git] / doc / menu_lua_api.txt
index a9392ff9350183dba78981f7f05c8a399442e2ae..8f5460acb19c938f1dc1c63dd5448632b10a1ec8 100644 (file)
@@ -1,5 +1,5 @@
-Minetest Lua Mainmenu API Reference 0.4.16
-========================================
+Minetest Lua Mainmenu API Reference 5.3.0
+=========================================
 
 Introduction
 -------------
@@ -33,34 +33,6 @@ core.close()
 Filesystem:
 core.get_builtin_path()
 ^ returns path to builtin root
-core.get_modpath() (possible in async calls)
-^ returns path to global modpath
-core.get_clientmodpath() (possible in async calls)
-^ returns path to global client-side modpath
-core.get_modstore_details(modid) (possible in async calls)
-^ modid numeric id of mod in modstore
-^ returns {
-       id                      = <numeric id of mod in modstore>,
-       title           = <human readable title>,
-       basename        = <basename for mod>,
-       description = <description of mod>,
-       author          = <author of mod>,
-       download_url= <best match download url>,
-       license         = <short description of license>,
-       rating          = <float value of current rating>
-}
-core.get_modstore_list() (possible in async calls)
-^ returns {
-       [1] = {
-               id               = <numeric id of mod in modstore>,
-               title    = <human readable title>,
-               basename = <basename for mod>
-       }
-}
-core.get_gamepath() (possible in async calls)
-^ returns path to global gamepath
-core.get_texturepath() (possible in async calls)
-^ returns path to default textures
 core.create_dir(absolute_path) (possible in async calls)
 ^ absolute_path to directory to create (needs to be absolute)
 ^ returns true/false
@@ -91,6 +63,9 @@ core.get_video_drivers()
 ^ returns list of available video drivers' settings name and 'friendly' display name
 ^ e.g. { {name="opengl", friendly_name="OpenGL"}, {name="software", friendly_name="Software Renderer"} }
 ^ first element of returned list is guaranteed to be the NULL driver
+core.get_mapgen_names([include_hidden=false]) -> table of map generator algorithms
+    registered in the core (possible in async calls)
+core.get_cache_path() -> path of cache
 
 Formspec:
 core.update_formspec(formspec)
@@ -104,6 +79,8 @@ core.explode_table_event(string) -> table
 core.explode_textlist_event(string) -> table
 ^ returns e.g. {type="CHG", index=1}
 ^ type: "INV" (no row selected), "CHG" (selected) or "DCL" (double-click)
+core.set_formspec_prepend(formspec)
+^ string to be added to every mainmenu formspec, to be used for theming.
 
 GUI:
 core.set_background(type, texturepath,[tile],[minsize])
@@ -114,13 +91,14 @@ core.set_background(type, texturepath,[tile],[minsize])
 core.set_clouds(<true/false>)
 core.set_topleft_text(text)
 core.show_keys_menu()
-core.file_open_dialog(formname,caption)
-^ shows a file open dialog
+core.show_path_select_dialog(formname, caption, is_file_select)
+^ shows a path select dialog
 ^ formname is base name of dialog response returned in fields
 ^     -if dialog was accepted "_accepted"
-^^       will be added to fieldname containing the path
+^        will be added to fieldname containing the path
 ^     -if dialog was canceled "_cancelled"
 ^        will be added to fieldname value is set to formname itself
+^ if `is_file_select` is `true`, a file and not a folder will be selected
 ^ returns nil or selected file/folder
 core.get_screen_info()
 ^ returns {
@@ -131,38 +109,68 @@ core.get_screen_info()
        window_height   = <current window height>
        }
 
-Games:
-core.get_game(index)
-^ returns {
-       id               = <id>,
-       path             = <full path to game>,
-       gamemods_path    = <path>,
-       name             = <name of game>,
-       menuicon_path    = <full path to menuicon>,
-       DEPRECATED:
-       addon_mods_paths = {[1] = <path>,},
-}
-core.get_games() -> table of all games in upper format (possible in async calls)
-core.get_mapgen_names([include_hidden=false]) -> table of map generator algorithms
-    registered in the core (possible in async calls)
+### Content and Packages
+
+Content - an installed mod, modpack, game, or texture pack (txt)
+Package - content which is downloadable from the content db, may or may not be installed.
+
+* core.get_modpath() (possible in async calls)
+       * returns path to global modpath
+* core.get_clientmodpath() (possible in async calls)
+       * returns path to global client-side modpath
+* core.get_gamepath() (possible in async calls)
+       * returns path to global gamepath
+* core.get_texturepath() (possible in async calls)
+       * returns path to default textures
+* core.get_game(index)
+       * returns:
+
+               {
+                       id               = <id>,
+                       path             = <full path to game>,
+                       gamemods_path    = <path>,
+                       name             = <name of game>,
+                       menuicon_path    = <full path to menuicon>,
+                       author           = "author",
+                       DEPRECATED:
+                       addon_mods_paths = {[1] = <path>,},
+               }
+
+* core.get_games() -> table of all games in upper format (possible in async calls)
+* core.get_content_info(path)
+       * returns
+
+               {
+                       name             = "name of content",
+                       type             = "mod" or "modpack" or "game" or "txp",
+                       description      = "description",
+                       author           = "author",
+                       path             = "path/to/content",
+                       depends          = {"mod", "names"}, -- mods only
+                       optional_depends = {"mod", "names"}, -- mods only
+               }
+
 
 Favorites:
 core.get_favorites(location) -> list of favorites (possible in async calls)
 ^ location: "local" or "online"
 ^ returns {
        [1] = {
-       clients       = <number of clients/nil>,
-       clients_max   = <maximum number of clients/nil>,
-       version       = <server version/nil>,
-       password      = <true/nil>,
-       creative      = <true/nil>,
-       damage        = <true/nil>,
-       pvp           = <true/nil>,
-       description   = <server description/nil>,
-       name          = <server name/nil>,
-       address       = <address of server/nil>,
-       port          = <port>
+               clients       = <number of clients/nil>,
+               clients_max   = <maximum number of clients/nil>,
+               version       = <server version/nil>,
+               password      = <true/nil>,
+               creative      = <true/nil>,
+               damage        = <true/nil>,
+               pvp           = <true/nil>,
+               description   = <server description/nil>,
+               name          = <server name/nil>,
+               address       = <address of server/nil>,
+               port          = <port>
+               clients_list  = <array of clients/nil>
+               mods          = <array of mods/nil>
        },
+       ...
 }
 core.delete_favorite(id, location) -> success
 
@@ -174,11 +182,14 @@ core.log(loglevel, line) (possible in async calls)
 ^ loglevel one of "error", "action", "info", "verbose"
 
 Settings:
-core.setting_set(name, value)
-core.setting_get(name) -> string or nil (possible in async calls)
-core.setting_setbool(name, value)
-core.setting_getbool(name) -> bool or nil (possible in async calls)
-core.setting_save() -> nil, save all settings to config file
+core.settings:set(name, value)
+core.settings:get(name) -> string or nil (possible in async calls)
+core.settings:set_bool(name, value)
+core.settings:get_bool(name) -> bool or nil (possible in async calls)
+core.settings:save() -> nil, save all settings to config file
+
+For a complete list of methods of the Settings object see
+[lua_api.txt](https://github.com/minetest/minetest/blob/master/doc/lua_api.txt)
 
 Worlds:
 core.get_worlds() -> list of worlds (possible in async calls)
@@ -235,9 +246,12 @@ Limitations of Async operations
  -No access to global lua variables, don't even try
  -Limited set of available functions
        e.g. No access to functions modifying menu like core.start,core.close,
-       core.file_open_dialog
-
+       core.show_path_select_dialog
 
-Class reference
+Background music
 ----------------
-Settings: see lua_api.txt
+The main menu supports background music.
+It looks for a `main_menu` sound in `$USER_PATH/sounds`. The same naming
+conventions as for normal sounds apply.
+This means the player can add a custom sound.
+It will be played in the main menu (gain = 1.0), looped.