summaryrefslogtreecommitdiff
path: root/src/script/cpp_api
diff options
context:
space:
mode:
authorred-001 <red-001@outlook.ie>2017-01-29 17:43:44 +0000
committerLoïc Blot <nerzhul@users.noreply.github.com>2017-03-13 23:56:05 +0100
commit073f5cf03d95ce1cdf04ce8a0adcaf1fc571d95f (patch)
treeeb35aa9d964972e85beaf66eda3bd9077018861a /src/script/cpp_api
parentba66fce8339f818a638f97679bd29da064a8c1c6 (diff)
downloadminetest-073f5cf03d95ce1cdf04ce8a0adcaf1fc571d95f.tar.gz
minetest-073f5cf03d95ce1cdf04ce8a0adcaf1fc571d95f.tar.bz2
minetest-073f5cf03d95ce1cdf04ce8a0adcaf1fc571d95f.zip
[CSM] Add `on_dignode` callback (#5140)
Diffstat (limited to 'src/script/cpp_api')
-rw-r--r--src/script/cpp_api/s_client.cpp22
-rw-r--r--src/script/cpp_api/s_client.h3
2 files changed, 25 insertions, 0 deletions
diff --git a/src/script/cpp_api/s_client.cpp b/src/script/cpp_api/s_client.cpp
index 1827d483b..2c8fee334 100644
--- a/src/script/cpp_api/s_client.cpp
+++ b/src/script/cpp_api/s_client.cpp
@@ -21,6 +21,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "s_client.h"
#include "s_internal.h"
#include "client.h"
+#include "common/c_converter.h"
+#include "common/c_content.h"
void ScriptApiClient::on_shutdown()
{
@@ -136,3 +138,23 @@ void ScriptApiClient::on_formspec_input(const std::string &formname,
}
runCallbacks(2, RUN_CALLBACKS_MODE_OR_SC);
}
+
+bool ScriptApiClient::on_dignode(v3s16 p, MapNode node)
+{
+ SCRIPTAPI_PRECHECKHEADER
+
+ INodeDefManager *ndef = getClient()->ndef();
+
+ // Get core.registered_on_dignode
+ lua_getglobal(L, "core");
+ lua_getfield(L, -1, "registered_on_dignode");
+
+ // Push data
+ push_v3s16(L, p);
+ pushnode(L, node, ndef);
+
+ // Call functions
+ runCallbacks(2, RUN_CALLBACKS_MODE_OR);
+ bool blocked = lua_toboolean(L, -1);
+ return blocked;
+} \ No newline at end of file
diff --git a/src/script/cpp_api/s_client.h b/src/script/cpp_api/s_client.h
index 42c41f8a4..09fd3a691 100644
--- a/src/script/cpp_api/s_client.h
+++ b/src/script/cpp_api/s_client.h
@@ -23,6 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "cpp_api/s_base.h"
#include "util/string.h"
+#include "mapnode.h"
#ifdef _CRT_MSVCP_CURRENT
#include <cstdint>
@@ -43,5 +44,7 @@ public:
void on_death();
void environment_step(float dtime);
void on_formspec_input(const std::string &formname, const StringMap &fields);
+
+ bool on_dignode(v3s16 p, MapNode node);
};
#endif