From 6492b8ec7650f4f76c9eded84418fe9e9fc6df71 Mon Sep 17 00:00:00 2001
From: HybridDog <ovvv@web.de>
Date: Wed, 1 Aug 2018 16:41:55 +0200
Subject: Add node breaker sounds (#219)

Also, disallow node breakers to dig unknown nodes
and a bit whitespace fix
---
 wielder.lua | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

(limited to 'wielder.lua')

diff --git a/wielder.lua b/wielder.lua
index 98f1ef0..4a80d3e 100644
--- a/wielder.lua
+++ b/wielder.lua
@@ -331,12 +331,25 @@ if pipeworks.enable_node_breaker then
 				virtplayer:set_wielded_item(wieldstack)
 			else
 				local under_node = minetest.get_node(pointed_thing.under)
-				local on_dig = (minetest.registered_nodes[under_node.name] or {on_dig=minetest.node_dig}).on_dig
-				-- check that the current tool is capable of destroying the target node.
+				local def = minetest.registered_nodes[under_node.name]
+				if not def then
+					-- do not dig an unknown node
+					return
+				end
+				-- check that the current tool is capable of destroying the
+				-- target node.
 				-- if we can't, don't dig, and leave the wield stack unchanged.
-				-- note that wieldstack:get_tool_capabilities() returns hand properties if the item has none of it's own.
-				if can_tool_dig_node(under_node.name, wieldstack:get_tool_capabilities(), wieldstack:get_name()) then
-					on_dig(pointed_thing.under, under_node, virtplayer)
+				-- note that wieldstack:get_tool_capabilities() returns hand
+				-- properties if the item has none of it's own.
+				if can_tool_dig_node(under_node.name,
+						wieldstack:get_tool_capabilities(),
+						wieldstack:get_name()) then
+					def.on_dig(pointed_thing.under, under_node, virtplayer)
+					local sound = def.sounds and def.sounds.dug
+					if sound then
+						minetest.sound_play(sound.name,
+							{pos=pointed_thing.under, gain=sound.gain})
+					end
 					wieldstack = virtplayer:get_wielded_item()
 				else
 					--pipeworks.logger(dname.."couldn't dig node!")
-- 
cgit v1.2.3