From 6492b8ec7650f4f76c9eded84418fe9e9fc6df71 Mon Sep 17 00:00:00 2001 From: HybridDog 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(-) 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 From 6fdda1839064684f77c9ea7f3e087a2d3d6fa388 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sat, 4 Aug 2018 12:27:09 +0200 Subject: Handle nil return value for add_item Remove old comments. Current HEAD requires version ~0.4.16 --- item_transport.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/item_transport.lua b/item_transport.lua index 388e2e7..d3a13c5 100644 --- a/item_transport.lua +++ b/item_transport.lua @@ -350,8 +350,10 @@ luaentity.register_entity("pipeworks:tubed_item", { -- compatible with Minetest 0.4.13. -- Using item_drop here makes Minetest 0.4.13 crash. local dropped_item = minetest.add_item(self.start_pos, stack) - dropped_item:set_velocity(vector.multiply(velocity, 5)) - self:remove() + if dropped_item then + dropped_item:set_velocity(vector.multiply(velocity, 5)) + self:remove() + end return else velocity = vector.multiply(velocity, -1) -- cgit v1.2.3