From 905be0e9e35f56ae6f71847019dfd8b3853c3554 Mon Sep 17 00:00:00 2001
From: Cristiano Magro <cristiano.magro@vola.it>
Date: Thu, 03 Dec 2020 13:06:12 +0100
Subject: [PATCH] xno_pick set some sound

---
 technic/tools/xno_pick.lua |  428 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 421 insertions(+), 7 deletions(-)

diff --git a/technic/tools/xno_pick.lua b/technic/tools/xno_pick.lua
index 5516581..c3ded51 100644
--- a/technic/tools/xno_pick.lua
+++ b/technic/tools/xno_pick.lua
@@ -19,9 +19,11 @@
 
   if node_name:match("default:.*_with_.*") or
     node_name:match("default:coalblock") or
+    node_name:match("default:mese") or
     node_name:match("technic:mineral_.*") or
     node_name:match("xtraores:.*_ore") or
     node_name:match("underch:.*_ore") or
+    -- underch:black_eye_ore
     node_name:match("underch:coal_dust") or
     node_name:match("underch:coal_diamond") or
     node_name:match("moreores:mineral_.*") or
@@ -34,19 +36,48 @@
   return false
 end
 
+function handle_node_drops(pos, drops, digger)
+  -- Add dropped items to object's inventory
+  local inv = digger and digger:get_inventory()
+  local give_item
+  if inv then
+    give_item = function(item)
+      return inv:add_item("main", item)
+    end
+  else
+    give_item = function(item)
+      -- itemstring to ItemStack for left:is_empty()
+      return ItemStack(item)
+    end
+  end
+
+  for _, dropped_item in pairs(drops) do
+    local left = give_item(dropped_item)
+    if not left:is_empty() then
+      local p = {
+        x = pos.x + math.random()/2-0.25,
+        y = pos.y + math.random()/2-0.25,
+        z = pos.z + math.random()/2-0.25,
+      }
+      minetest.add_item(p, left)
+      minetest.sound_play("item_drop_pickup", {pos = pos, gain = 1.0, max_hear_distance = 10})
+    end
+  end
+end 
+
+
 local function collect_node(user, pos, current_charge)
   if current_charge < xnopick_charge_per_node then
+    minetest.sound_play("technic_prospector_miss", {pos = pos, gain = 1.0, max_hear_distance = 10})
     return current_charge
   end
 
   local node_name = minetest.get_node(pos).name
   local droped = minetest.get_node_drops(node_name)
 
-  minetest.handle_node_drops(user:getpos(), droped, user) 
---  for _, nameDroped in pairs(droped) do
---    --add node back into placer's inv
---    user:get_inventory():add_item("main",  nameDroped .. ' 1')
---  end
+  -- add to inventory
+--  minetest.handle_node_drops(user:getpos(), droped, user)
+  handle_node_drops(user:getpos(), droped, user)
 
   minetest.remove_node(pos)
   local remain_charge = current_charge - xnopick_charge_per_node
@@ -87,6 +118,8 @@
   on_refill = technic.refill_RE_charge,
 
   on_use = function(itemstack, user, pointed_thing)
+    local pos = pointed_thing.under
+
     if pointed_thing.type ~= "node" then
       return itemstack
     end
@@ -94,12 +127,14 @@
     --check tool charge
     local meta = minetest.deserialize(itemstack:get_metadata())
     if not meta or not meta.charge or
-      meta.charge < xnopick_charge_per_node then
+      meta.charge < xnopick_charge_per_node
+    then
+      minetest.sound_play("technic_prospector_miss", {pos = pos, gain = 1.0, max_hear_distance = 10})
+
       return
     end
 
     --check node protection
-    local pos = pointed_thing.under
     if minetest.is_protected(pos, user:get_player_name()) then
       minetest.record_protection_violation(pos, user:get_player_name())
       return
@@ -117,6 +152,8 @@
     -- Send current charge to digging function so that the
     -- chainsaw will stop after digging a number of nodes
     meta.charge = collect_block_node(user, pos, meta.charge)
+    minetest.sound_play("technic_laser_mk3", {pos = pos, gain = 1.0, max_hear_distance = 10})
+    
     if not technic.creative_mode then
       technic.set_RE_wear(itemstack, meta.charge, xnopick_max_charge)
       itemstack:set_metadata(minetest.serialize(meta))
@@ -367,3 +404,380 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

--
Gitblit v1.8.0