From 636b0f20df4fef3eef821c23ccc2f606828f5c6f Mon Sep 17 00:00:00 2001
From: Zefram <zefram@fysh.org>
Date: Mon, 07 Jul 2014 15:15:05 +0200
Subject: [PATCH] Handheld prospecting tool

---
 technic/tools/tree_tap.lua |   58 +++++++++++++++++++++++++++++++---------------------------
 1 files changed, 31 insertions(+), 27 deletions(-)

diff --git a/technic/tools/tree_tap.lua b/technic/tools/tree_tap.lua
index 183a95b..275f4b6 100644
--- a/technic/tools/tree_tap.lua
+++ b/technic/tools/tree_tap.lua
@@ -4,41 +4,42 @@
 minetest.register_tool("technic:treetap", {
 	description = S("Tree Tap"),
 	inventory_image = "technic_tree_tap.png",
-	on_use = function(itemstack,user,pointed_thing)
+	on_use = function(itemstack, user, pointed_thing)
 		if pointed_thing.type ~= "node" then
 			return
 		end
-		if user:get_inventory():room_for_item("main",ItemStack("technic:raw_latex")) then
-			local pos = minetest.get_pointed_thing_position(pointed_thing,above)
-			local node = minetest.env:get_node(pos)
-			local node_name = node.name
-			if node_name == "moretrees:rubber_tree_trunk" then
-				node.name = "moretrees:rubber_tree_trunk_empty"
-				user:get_inventory():add_item("main", ItemStack("technic:raw_latex"))
-				minetest.set_node(pos,node)
-				local item = itemstack:to_table()
-				local item_wear = tonumber((item["wear"]))
-				item_wear = item_wear + 819
-				if item_wear > 65535 then
-					itemstack:clear()
-					return itemstack
-				end
-				item["wear"] = tostring(item_wear)
-				itemstack:replace(item)
-				return itemstack
-			else
-				return itemstack
-			end
-		else
+		local inv = user:get_inventory()
+		if not inv:room_for_item("main", ItemStack("technic:raw_latex")) then
 			return
 		end
+		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
+		end
+		local node = minetest.get_node(pos)
+		local node_name = node.name
+		if node_name ~= "moretrees:rubber_tree_trunk" then
+			return
+		end
+		node.name = "moretrees:rubber_tree_trunk_empty"
+		inv:add_item("main", ItemStack("technic:raw_latex"))
+		minetest.swap_node(pos, node)
+		local item_wear = tonumber(itemstack:get_wear())
+		item_wear = item_wear + 819
+		if item_wear > 65535 then
+			itemstack:clear()
+			return itemstack
+		end
+		itemstack:set_wear(item_wear)
+		return itemstack
 	end,
 })
-     
+
 minetest.register_craft({
 	output = "technic:treetap",
 	recipe = {
-		{"pipeworks:tube", "group:wood",    "default:stick"},
+		{"pipeworks:tube_1", "group:wood",    "default:stick"},
 		{"",               "default:stick", "default:stick"}
 	},
 })
@@ -64,8 +65,11 @@
 	interval = 60,
 	chance = 15,
 	action = function(pos, node)
-		node.name = "moretrees:rubber_tree_trunk"
-		minetest.set_node(pos, node)
+		local meta = minetest.get_meta(pos)
+		if meta:get_int("placed") ~= 0 then
+			return
+		end
+		minetest.set_node(pos, {name="moretrees:rubber_tree_trunk"})
 	end
 })
 

--
Gitblit v1.8.0