diff options
author | Vincent Glize <vincentglize@hotmail.fr> | 2017-10-02 22:09:49 +0200 |
---|---|---|
committer | Loïc Blot <nerzhul@users.noreply.github.com> | 2017-10-02 22:09:49 +0200 |
commit | 4e19791cde6b203ad853905d8c1481c43004a7ea (patch) | |
tree | 9db628a01d6678b453fe7ae2b49c60c38179a29c /src/script | |
parent | b9fb3cea33f495f0c9c9d7d74ed67af6aab78b04 (diff) | |
download | minetest-4e19791cde6b203ad853905d8c1481c43004a7ea.tar.gz minetest-4e19791cde6b203ad853905d8c1481c43004a7ea.tar.bz2 minetest-4e19791cde6b203ad853905d8c1481c43004a7ea.zip |
[CSM] Add callback on open inventory (#5793)
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/cpp_api/s_client.cpp | 21 | ||||
-rw-r--r-- | src/script/cpp_api/s_client.h | 2 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/script/cpp_api/s_client.cpp b/src/script/cpp_api/s_client.cpp index b2dcc60c4..c6f7a8e19 100644 --- a/src/script/cpp_api/s_client.cpp +++ b/src/script/cpp_api/s_client.cpp @@ -224,6 +224,27 @@ bool ScriptApiClient::on_item_use(const ItemStack &item, const PointedThing &poi return lua_toboolean(L, -1); } +bool ScriptApiClient::on_inventory_open(Inventory *inventory) +{ + SCRIPTAPI_PRECHECKHEADER + + lua_getglobal(L, "core"); + lua_getfield(L, -1, "registered_on_inventory_open"); + + std::vector<const InventoryList*> lists = inventory->getLists(); + std::vector<const InventoryList*>::iterator iter = lists.begin(); + lua_createtable(L, 0, lists.size()); + for (; iter != lists.end(); iter++) { + const char* name = (*iter)->getName().c_str(); + lua_pushstring(L, name); + push_inventory_list(L, inventory, name); + lua_rawset(L, -3); + } + + runCallbacks(1, RUN_CALLBACKS_MODE_OR); + return lua_toboolean(L, -1); +} + void ScriptApiClient::setEnv(ClientEnvironment *env) { ScriptApiBase::setEnv(env); diff --git a/src/script/cpp_api/s_client.h b/src/script/cpp_api/s_client.h index 074a68e39..717fbb4cc 100644 --- a/src/script/cpp_api/s_client.h +++ b/src/script/cpp_api/s_client.h @@ -57,5 +57,7 @@ public: bool on_placenode(const PointedThing &pointed, const ItemDefinition &item); bool on_item_use(const ItemStack &item, const PointedThing &pointed); + bool on_inventory_open(Inventory *inventory); + void setEnv(ClientEnvironment *env); }; |