mirror of
https://github.com/moparisthebest/minetest
synced 2024-11-10 19:35:12 -05:00
5a0ed780f5
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
240 lines
8.0 KiB
Plaintext
240 lines
8.0 KiB
Plaintext
Minetest Lua Mainmenu API Reference 0.4.11
|
|
========================================
|
|
|
|
Introduction
|
|
-------------
|
|
The main menu is defined as a formspec by Lua in builtin/mainmenu/
|
|
Description of formspec language to show your menu is in lua_api.txt
|
|
|
|
Callbacks
|
|
---------
|
|
core.buttonhandler(fields): called when a button is pressed.
|
|
^ fields = {name1 = value1, name2 = value2, ...}
|
|
core.event_handler(event)
|
|
^ event: "MenuQuit", "KeyEnter", "ExitButton" or "EditBoxEnter"
|
|
|
|
Gamedata
|
|
--------
|
|
The "gamedata" table is read when calling core.start(). It should contain:
|
|
{
|
|
playername = <name>,
|
|
password = <password>,
|
|
address = <IP/adress>,
|
|
port = <port>,
|
|
selected_world = <index>, -- 0 for client mode
|
|
singleplayer = <true/false>,
|
|
}
|
|
|
|
Functions
|
|
---------
|
|
core.start()
|
|
core.close()
|
|
|
|
Filesystem:
|
|
core.get_scriptdir()
|
|
^ returns directory of script
|
|
core.get_modpath() (possible in async calls)
|
|
^ returns path to global 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.get_dirlist(path,onlydirs) (possible in async calls)
|
|
^ path to get subdirs from
|
|
^ onlydirs should result contain only dirs?
|
|
^ returns list of folders within path
|
|
core.create_dir(absolute_path) (possible in async calls)
|
|
^ absolute_path to directory to create (needs to be absolute)
|
|
^ returns true/false
|
|
core.delete_dir(absolute_path) (possible in async calls)
|
|
^ absolute_path to directory to delete (needs to be absolute)
|
|
^ returns true/false
|
|
core.copy_dir(source,destination,keep_soure) (possible in async calls)
|
|
^ source folder
|
|
^ destination folder
|
|
^ keep_source DEFAULT true --> if set to false source is deleted after copying
|
|
^ returns true/false
|
|
core.extract_zip(zipfile,destination) [unzip within path required]
|
|
^ zipfile to extract
|
|
^ destination folder to extract to
|
|
^ returns true/false
|
|
core.download_file(url,target) (possible in async calls)
|
|
^ url to download
|
|
^ target to store to
|
|
^ returns true/false
|
|
core.get_version() (possible in async calls)
|
|
^ returns current core version
|
|
core.sound_play(spec, looped) -> handle
|
|
^ spec = SimpleSoundSpec (see lua-api.txt)
|
|
^ looped = bool
|
|
core.sound_stop(handle)
|
|
core.get_video_drivers()
|
|
^ get list of video drivers supported by engine (not all modes are guaranteed to work)
|
|
^ 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
|
|
|
|
Formspec:
|
|
core.update_formspec(formspec)
|
|
core.get_table_index(tablename) -> index
|
|
^ can also handle textlists
|
|
core.formspec_escape(string) -> string
|
|
^ escapes characters [ ] \ , ; that can not be used in formspecs
|
|
core.explode_table_event(string) -> table
|
|
^ returns e.g. {type="CHG", row=1, column=2}
|
|
^ type: "INV" (no row selected), "CHG" (selected) or "DCL" (double-click)
|
|
core.explode_textlist_event(string) -> table
|
|
^ returns e.g. {type="CHG", index=1}
|
|
^ type: "INV" (no row selected), "CHG" (selected) or "DCL" (double-click)
|
|
|
|
GUI:
|
|
core.set_background(type, texturepath,[tile],[minsize])
|
|
^ type: "background", "overlay", "header" or "footer"
|
|
^ tile: tile the image instead of scaling (background only)
|
|
^ minsize: minimum tile size, images are scaled to at least this size prior
|
|
^ doing tiling (background only)
|
|
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
|
|
^ formname is base name of dialog response returned in fields
|
|
^ -if dialog was accepted "_accepted"
|
|
^^ will be added to fieldname containing the path
|
|
^ -if dialog was canceled "_cancelled"
|
|
^ will be added to fieldname value is set to formname itself
|
|
^ returns nil or selected file/folder
|
|
core.get_screen_info()
|
|
^ returns {
|
|
density = <screen density 0.75,1.0,2.0,3.0 ... (dpi)>,
|
|
display_width = <width of display>,
|
|
display_height = <height of display>,
|
|
window_width = <current window width>,
|
|
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() -> table of all map generator algorithms registered in
|
|
the core (possible in async calls)
|
|
|
|
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>
|
|
},
|
|
}
|
|
core.delete_favorite(id, location) -> success
|
|
|
|
Logging:
|
|
core.debug(line) (possible in async calls)
|
|
^ Always printed to stderr and logfile (print() is redirected here)
|
|
core.log(line) (possible in async calls)
|
|
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
|
|
|
|
Worlds:
|
|
core.get_worlds() -> list of worlds (possible in async calls)
|
|
^ returns {
|
|
[1] = {
|
|
path = <full path to world>,
|
|
name = <name of world>,
|
|
gameid = <gameid of world>,
|
|
},
|
|
}
|
|
core.create_world(worldname, gameid)
|
|
core.delete_world(index)
|
|
|
|
Helpers:
|
|
core.gettext(string) -> string
|
|
^ look up the translation of a string in the gettext message catalog
|
|
fgettext_ne(string, ...)
|
|
^ call core.gettext(string), replace "$1"..."$9" with the given
|
|
^ extra arguments and return the result
|
|
fgettext(string, ...) -> string
|
|
^ same as fgettext_ne(), but calls core.formspec_escape before returning result
|
|
core.parse_json(string[, nullvalue]) -> something (possible in async calls)
|
|
^ see core.parse_json (lua_api.txt)
|
|
dump(obj, dumped={})
|
|
^ Return object serialized as a string
|
|
string:split(separator)
|
|
^ eg. string:split("a,b", ",") == {"a","b"}
|
|
string:trim()
|
|
^ eg. string.trim("\n \t\tfoo bar\t ") == "foo bar"
|
|
core.is_yes(arg) (possible in async calls)
|
|
^ returns whether arg can be interpreted as yes
|
|
|
|
Version compat:
|
|
core.get_min_supp_proto()
|
|
^ returns the minimum supported network protocol version
|
|
core.get_max_supp_proto()
|
|
^ returns the maximum supported network protocol version
|
|
|
|
Async:
|
|
core.handle_async(async_job,parameters,finished)
|
|
^ execute a function asynchronously
|
|
^ async_job is a function receiving one parameter and returning one parameter
|
|
^ parameters parameter table passed to async_job
|
|
^ finished function to be called once async_job has finished
|
|
^ the result of async_job is passed to this function
|
|
|
|
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
|
|
|
|
|
|
Class reference
|
|
----------------
|
|
Settings: see lua_api.txt
|