Add protection support to tools

This adds support to the chainsaw, mining drill, mining laser,
sonic screwdriver, and tree tap.
This commit is contained in:
ShadowNinja 2013-12-17 14:22:10 -05:00
parent 5cf765b2f1
commit bab8517b2a
5 changed files with 43 additions and 26 deletions

View File

@ -203,6 +203,10 @@ end
-- Saw down trees entry point -- Saw down trees entry point
local function chainsaw_dig_it(pos, player,current_charge) 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 local remaining_charge=current_charge
-- Save the currently installed dropping mechanism so we can restore it. -- Save the currently installed dropping mechanism so we can restore it.

View File

@ -51,6 +51,10 @@ local mining_drill_mode_text = {
} }
local function drill_dig_it0 (pos,player) 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) local node=minetest.env:get_node(pos)
if node.name == "air" or node.name == "ignore" then return end if node.name == "air" or node.name == "ignore" then return end
if node.name == "default:lava_source" then return end if node.name == "default:lava_source" then return end

View File

@ -60,6 +60,10 @@ local function node_tab(z, d)
end end
local function laser_node(pos, player) 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) local node = minetest.get_node(pos)
if node.name == "air" if node.name == "air"
or node.name == "ignore" or node.name == "ignore"

View File

@ -12,12 +12,16 @@ minetest.register_tool("technic:sonic_screwdriver", {
if pointed_thing.type ~= "node" then if pointed_thing.type ~= "node" then
return return
end 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 = minetest.get_node(pos)
local node_name = node.name local node_name = node.name
if minetest.registered_nodes[node_name].paramtype2 ~= "facedir" and if minetest.registered_nodes[node_name].paramtype2 ~= "facedir" and
minetest.registered_nodes[node_name].paramtype2 ~= "wallmounted" then minetest.registered_nodes[node_name].paramtype2 ~= "wallmounted" then
return itemstack return
end end
if node.param2 == nil then if node.param2 == nil then
return return

View File

@ -4,34 +4,35 @@ local S = technic.getter
minetest.register_tool("technic:treetap", { minetest.register_tool("technic:treetap", {
description = S("Tree Tap"), description = S("Tree Tap"),
inventory_image = "technic_tree_tap.png", 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 if pointed_thing.type ~= "node" then
return return
end end
if user:get_inventory():room_for_item("main",ItemStack("technic:raw_latex")) then local inv = user:get_inventory()
local pos = minetest.get_pointed_thing_position(pointed_thing,above) if not inv:room_for_item("main", ItemStack("technic:raw_latex")) then
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
return return
end 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, end,
}) })