diff --git a/doc/en/8.Scripting.md b/doc/en/8.Scripting.md index ace3c80e..3cc2895f 100644 --- a/doc/en/8.Scripting.md +++ b/doc/en/8.Scripting.md @@ -71,6 +71,26 @@ world.get_seed() -> int Returns world seed. +## *pack* library + +```python +pack.get_folder(packid: str) -> str +``` + +Returns installed content-pack folder + +```python +pack.is_installed(packid: str) -> bool +``` + +Check if the world has specified pack installed + +```python +pack.get_installed() -> array of strings +``` + +Returns all installed content-pack ids + ## *gui* library Library contains ui elements access functions. Library should not be directly used, because script *layouts/layout_name.xml.lua* already has a generated variable **document** (instance of **Document**) diff --git a/doc/ru/8.Скриптинг.md b/doc/ru/8.Скриптинг.md index 40b0a5a3..e53e7958 100644 --- a/doc/ru/8.Скриптинг.md +++ b/doc/ru/8.Скриптинг.md @@ -66,6 +66,26 @@ world.get_seed() -> int Возвращает зерно мира. +## Библиотека pack + +```python +pack.get_folder(packid: str) -> str +``` + +Возвращает путь к папке установленного контент-пака + +```python +pack.is_installed(packid: str) -> bool +``` + +Проверяет наличие контент-пака в мире + +```python +pack.get_installed() -> массив строк +``` + +Возращает id всех установленных в мире контент-паков + ## Библиотека gui Библиотека содержит функции для доступа к свойствам UI элементов. Вместо gui следует использовать объектную обертку, предоставляющую доступ к свойствам через мета-методы __index, __newindex: diff --git a/src/logic/scripting/lua/libpack.cpp b/src/logic/scripting/lua/libpack.cpp index ff0b8186..67335a01 100644 --- a/src/logic/scripting/lua/libpack.cpp +++ b/src/logic/scripting/lua/libpack.cpp @@ -25,7 +25,18 @@ static int l_pack_get_folder(lua_State* L) { return 1; } +static int l_pack_get_installed(lua_State* L) { + auto& packs = scripting::engine->getContentPacks(); + lua_createtable(L, packs.size(), 0); + for (size_t i = 0; i < packs.size(); i++) { + lua_pushstring(L, packs[i].id.c_str()); + lua_rawseti(L, -2, i + 1); + } + return 1; +} + const luaL_Reg packlib [] = { {"get_folder", lua_wrap_errors}, + {"get_installed", lua_wrap_errors}, {NULL, NULL} };