From bab8517b2a07e41ea3b9122cb9d93d10bba3e430 Mon Sep 17 00:00:00 2001 From: ShadowNinja Date: Tue, 17 Dec 2013 14:22:10 -0500 Subject: [PATCH] Add protection support to tools This adds support to the chainsaw, mining drill, mining laser, sonic screwdriver, and tree tap. --- technic/tools/chainsaw.lua | 4 +++ technic/tools/mining_drill.lua | 4 +++ technic/tools/mining_lasers.lua | 4 +++ technic/tools/sonic_screwdriver.lua | 8 +++-- technic/tools/tree_tap.lua | 49 +++++++++++++++-------------- 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 @@ end -- 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 mining_drill_mode_text = { } 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 @@ local function node_tab(z, d) 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 @@ minetest.register_tool("technic:sonic_screwdriver", { 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 @@ local S = technic.getter 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 = {