From 0727bb3ddd9c550ff962af4546bac8cc058bce73 Mon Sep 17 00:00:00 2001
From: red-001 <red-001@outlook.ie>
Date: Sun, 29 Jan 2017 18:28:38 +0000
Subject: [CSM] Add `on_punchnode` callback

---
 src/script/cpp_api/s_client.cpp | 22 +++++++++++++++++++++-
 src/script/cpp_api/s_client.h   |  1 +
 2 files changed, 22 insertions(+), 1 deletion(-)

(limited to 'src/script/cpp_api')

diff --git a/src/script/cpp_api/s_client.cpp b/src/script/cpp_api/s_client.cpp
index 2c8fee334..8c5e3796b 100644
--- a/src/script/cpp_api/s_client.cpp
+++ b/src/script/cpp_api/s_client.cpp
@@ -157,4 +157,24 @@ bool ScriptApiClient::on_dignode(v3s16 p, MapNode node)
 	runCallbacks(2, RUN_CALLBACKS_MODE_OR);
 	bool blocked = lua_toboolean(L, -1);
 	return blocked;
-}
\ No newline at end of file
+}
+
+bool ScriptApiClient::on_punchnode(v3s16 p, MapNode node)
+{
+	SCRIPTAPI_PRECHECKHEADER
+
+	INodeDefManager *ndef = getClient()->ndef();
+
+	// Get core.registered_on_punchgnode
+	lua_getglobal(L, "core");
+	lua_getfield(L, -1, "registered_on_punchnode");
+
+	// 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;
+}
diff --git a/src/script/cpp_api/s_client.h b/src/script/cpp_api/s_client.h
index 09fd3a691..93e9558f2 100644
--- a/src/script/cpp_api/s_client.h
+++ b/src/script/cpp_api/s_client.h
@@ -46,5 +46,6 @@ public:
 	void on_formspec_input(const std::string &formname, const StringMap &fields);
 
 	bool on_dignode(v3s16 p, MapNode node);
+	bool on_punchnode(v3s16 p, MapNode node);
 };
 #endif
-- 
cgit v1.2.3