From bab8517b2a07e41ea3b9122cb9d93d10bba3e430 Mon Sep 17 00:00:00 2001
From: ShadowNinja <shadowninja@minetest.net>
Date: Tue, 17 Dec 2013 20:22:10 +0100
Subject: [PATCH] Add protection support to tools

---
 technic/tools/chainsaw.lua          |    4 ++
 technic/tools/mining_lasers.lua     |    4 ++
 technic/tools/mining_drill.lua      |    4 ++
 technic/tools/tree_tap.lua          |   49 ++++++++++++------------
 technic/tools/sonic_screwdriver.lua |    8 +++-
 5 files changed, 43 insertions(+), 26 deletions(-)

diff --git a/technic/tools/chainsaw.lua b/technic/tools/chainsaw.lua
index fd8ce2c..4124265 100644
--- a/technic/tools/chainsaw.lua
+++ b/technic/tools/chainsaw.lua
@@ -203,6 +203,10 @@
 
 -- Saw down trees entry point
 local function chainsaw_dig_it(pos, player,current_charge)
+	if minetest.is_protected(pos, player:get_player_name()) then
+		minetest.record_protection_violation(pos, player:get_player_name())
+		return current_charge
+	end
         local remaining_charge=current_charge
 
         -- Save the currently installed dropping mechanism so we can restore it.
diff --git a/technic/tools/mining_drill.lua b/technic/tools/mining_drill.lua
index 79eef53..d7eb49c 100644
--- a/technic/tools/mining_drill.lua
+++ b/technic/tools/mining_drill.lua
@@ -51,6 +51,10 @@
 }
 
 local function drill_dig_it0 (pos,player)
+	if minetest.is_protected(pos, player:get_player_name()) then
+		minetest.record_protection_violation(pos, player:get_player_name())
+		return
+	end
 	local node=minetest.env:get_node(pos)
 	if node.name == "air" or node.name == "ignore" then return end
 	if node.name == "default:lava_source" then return end
diff --git a/technic/tools/mining_lasers.lua b/technic/tools/mining_lasers.lua
index 64628eb..e06a00d 100644
--- a/technic/tools/mining_lasers.lua
+++ b/technic/tools/mining_lasers.lua
@@ -60,6 +60,10 @@
 end
 
 local function laser_node(pos, player)
+	if minetest.is_protected(pos, player:get_player_name()) then
+		minetest.record_protection_violation(pos, player:get_player_name())
+		return
+	end
 	local node = minetest.get_node(pos)
 	if node.name == "air"
 	or node.name == "ignore"
diff --git a/technic/tools/sonic_screwdriver.lua b/technic/tools/sonic_screwdriver.lua
index cd2ce51..3951b8b 100644
--- a/technic/tools/sonic_screwdriver.lua
+++ b/technic/tools/sonic_screwdriver.lua
@@ -12,12 +12,16 @@
 		if pointed_thing.type ~= "node" then
 			return
 		end
-		local pos = minetest.get_pointed_thing_position(pointed_thing, above)
+		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 minetest.registered_nodes[node_name].paramtype2 ~= "facedir" and
 		   minetest.registered_nodes[node_name].paramtype2 ~= "wallmounted" then
-			return itemstack
+			return
 		end
 		if node.param2 == nil then
 			return
diff --git a/technic/tools/tree_tap.lua b/technic/tools/tree_tap.lua
index 183a95b..ab53955 100644
--- a/technic/tools/tree_tap.lua
+++ b/technic/tools/tree_tap.lua
@@ -4,37 +4,38 @@
 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 = {

--
Gitblit v1.8.0