]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/script/cpp_api/s_client.cpp
[CSM] Add callback on open inventory (#5793)
[dragonfireclient.git] / src / script / cpp_api / s_client.cpp
index b2dcc60c4c1b86c509c2083efe93bd644505ec94..c6f7a8e191ca7c8859ad0f45c5c6255fb4ea97d8 100644 (file)
@@ -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);