ShadowNinja
2013-12-17 bab8517b2a07e41ea3b9122cb9d93d10bba3e430
Add protection support to tools

This adds support to the chainsaw, mining drill, mining laser,
sonic screwdriver, and tree tap.
5 files modified
69 ■■■■■ changed files
technic/tools/chainsaw.lua 4 ●●●● patch | view | raw | blame | history
technic/tools/mining_drill.lua 4 ●●●● patch | view | raw | blame | history
technic/tools/mining_lasers.lua 4 ●●●● patch | view | raw | blame | history
technic/tools/sonic_screwdriver.lua 8 ●●●● patch | view | raw | blame | history
technic/tools/tree_tap.lua 49 ●●●● patch | view | raw | blame | history
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.
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
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"
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
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 = {