diff options
author | red-001 <red-001@outlook.ie> | 2017-05-06 20:12:44 +0100 |
---|---|---|
committer | Loïc Blot <nerzhul@users.noreply.github.com> | 2017-05-06 21:12:44 +0200 |
commit | 5ebf8f945050e9c74a3bb6784a0844d1fb68bdff (patch) | |
tree | 474c9f798c7624c659dd16aa11a4d097cd16b5b4 /src/script | |
parent | 6658ad3d94c053eeed12bb79e255cdfa46831e19 (diff) | |
download | minetest-5ebf8f945050e9c74a3bb6784a0844d1fb68bdff.tar.gz minetest-5ebf8f945050e9c74a3bb6784a0844d1fb68bdff.tar.bz2 minetest-5ebf8f945050e9c74a3bb6784a0844d1fb68bdff.zip |
[CSM] add `on_item_use` (#5544)
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/cpp_api/s_client.cpp | 17 | ||||
-rw-r--r-- | src/script/cpp_api/s_client.h | 3 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/script/cpp_api/s_client.cpp b/src/script/cpp_api/s_client.cpp index 4bc368d1d..d5ec52407 100644 --- a/src/script/cpp_api/s_client.cpp +++ b/src/script/cpp_api/s_client.cpp @@ -207,6 +207,23 @@ bool ScriptApiClient::on_placenode(const PointedThing &pointed, const ItemDefini return lua_toboolean(L, -1); } +bool ScriptApiClient::on_item_use(const ItemStack &item, const PointedThing &pointed) +{ + SCRIPTAPI_PRECHECKHEADER + + // Get core.registered_on_item_use + lua_getglobal(L, "core"); + lua_getfield(L, -1, "registered_on_item_use"); + + // Push data + LuaItemStack::create(L, item); + push_pointed_thing(L, pointed); + + // Call functions + runCallbacks(2, 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 f252cf499..9133637a6 100644 --- a/src/script/cpp_api/s_client.h +++ b/src/script/cpp_api/s_client.h @@ -26,6 +26,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mapnode.h" #include "itemdef.h" #include "util/string.h" +#include "util/pointedthing.h" +#include "lua_api/l_item.h" #ifdef _CRT_MSVCP_CURRENT #include <cstdint> @@ -54,6 +56,7 @@ public: bool on_dignode(v3s16 p, MapNode node); bool on_punchnode(v3s16 p, MapNode node); bool on_placenode(const PointedThing &pointed, const ItemDefinition &item); + bool on_item_use(const ItemStack &item, const PointedThing &pointed); void setEnv(ClientEnvironment *env); }; |