summaryrefslogtreecommitdiff
path: root/src/script/cpp_api/s_client.cpp
diff options
context:
space:
mode:
authorVincent Glize <vincentglize@hotmail.fr>2017-10-02 22:09:49 +0200
committerLoïc Blot <nerzhul@users.noreply.github.com>2017-10-02 22:09:49 +0200
commit4e19791cde6b203ad853905d8c1481c43004a7ea (patch)
tree9db628a01d6678b453fe7ae2b49c60c38179a29c /src/script/cpp_api/s_client.cpp
parentb9fb3cea33f495f0c9c9d7d74ed67af6aab78b04 (diff)
downloadminetest-4e19791cde6b203ad853905d8c1481c43004a7ea.tar.gz
minetest-4e19791cde6b203ad853905d8c1481c43004a7ea.tar.bz2
minetest-4e19791cde6b203ad853905d8c1481c43004a7ea.zip
[CSM] Add callback on open inventory (#5793)
Diffstat (limited to 'src/script/cpp_api/s_client.cpp')
-rw-r--r--src/script/cpp_api/s_client.cpp21
1 files changed, 21 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);