From 4a0a6723afc5c5a14acd7cd833aea33cb53ac618 Mon Sep 17 00:00:00 2001
From: Auke Kok <sofar@foo-projects.org>
Date: Fri, 22 Jan 2016 21:52:50 -0800
Subject: [PATCH] Builtin/../item: Enable tool breaking sounds

If a tool wears out and is destroyed, it's itemstack count
goes to 0, and we can optionally play a breaking sound.

This patch implements playing a breaking sound when this
occurs. Sounds need to be added to the tool itemdef
registration as the sound name string in the .sound.breaks
member.
---
 builtin/game/item.lua | 3 +++
 doc/lua_api.txt       | 1 +
 2 files changed, 4 insertions(+)

diff --git a/builtin/game/item.lua b/builtin/game/item.lua
index ec996292f..a2fdbc1f4 100644
--- a/builtin/game/item.lua
+++ b/builtin/game/item.lua
@@ -474,6 +474,9 @@ function core.node_dig(pos, node, digger)
 		-- Wear out tool
 		if not core.setting_getbool("creative_mode") then
 			wielded:add_wear(dp.wear)
+			if wielded:get_count() == 0 and wdef.sound and wdef.sound.breaks then
+				core.sound_play(wdef.sound.breaks, {pos = pos, gain = 1.0})
+			end
 		end
 	end
 	digger:set_wielded_item(wielded)
diff --git a/doc/lua_api.txt b/doc/lua_api.txt
index 2164bfc5e..84080502f 100644
--- a/doc/lua_api.txt
+++ b/doc/lua_api.txt
@@ -3606,6 +3606,7 @@ Definition tables
           actual result to client in a short moment.
         ]]
         sound = {
+            breaks = "default_tool_break", -- tools only
             place = --[[<SimpleSoundSpec>]],
         },