| | |
| | | -- Configuration |
| | | |
| | | local xnotreetrap_max_charge = 30000 -- Maximum charge of the saw |
| | | local xnotreetap_max_charge = 30000 -- Maximum charge of the saw |
| | | -- Gives 2500 nodes on a single charge (about 50 complete normal trees) |
| | | local xnotreetrap_charge_per_node = 12 |
| | | local xnotreetap_charge_per_node = 12 |
| | | -- Cut down tree leaves. Leaf decay may cause slowness on large trees |
| | | -- if this is disabled. |
| | | local xnotreetrap_leaves = true |
| | | local xnotreetap_leaves = true |
| | | |
| | | -- First value is node name; second is whether the node is considered even if chainsaw_leaves is false. |
| | | -- First value is node name; second is whether the node is considered even if xnotreetap_leaves is false. |
| | | local nodes = { |
| | | -- Rubber trees from moretrees or technic_worldgen if moretrees isn't installed |
| | | {"moretrees:rubber_tree_trunk_empty", true}, |
| | |
| | | |
| | | local timber_nodenames = {} |
| | | for _, node in pairs(nodes) do |
| | | if chainsaw_leaves or node[2] then |
| | | if xnotreetap_leaves or node[2] then |
| | | timber_nodenames[node[1]] = true |
| | | end |
| | | end |
| | | |
| | | |
| | | local S = technic.getter |
| | | local mesecons_materials = minetest.get_modpath("mesecons_materials") |
| | | |
| | | technic.register_power_tool("technic:xnotreetap", xnotreetap_max_charge) |
| | | |
| | | local mesecons_materials = minetest.get_modpath("mesecons_materials") |
| | | |
| | | |
| | | -- This function checks if the specified node should be sawed |
| | | local function check_if_node_sawed(pos) |
| | |
| | | --raccolta gomma |
| | | node.name = "moretrees:rubber_tree_trunk_empty" |
| | | minetest.swap_node(pos, node) |
| | | minetest.handle_node_drops(pointed_thing.above, {"technic:raw_latex"}, user) |
| | | -- minetest.handle_node_drops(pointed_thing.above, {"technic:raw_latex"}, user) |
| | | handle_drops({"technic:raw_latex"}) |
| | | remaining_charge = remaining_charge - xnotreetap_charge_per_node |
| | | |
| | | -- Wood found - cut it |
| | |
| | | minetest.remove_node(pos) |
| | | remaining_charge = remaining_charge - xnotreetap_charge_per_node |
| | | |
| | | if not technic.creative_mode then |
| | | 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) |
| | | end |
| | | -- if not technic.creative_mode then |
| | | -- 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) |
| | | -- end |
| | | end |
| | | |
| | | -- Check surroundings and run recursively if any charge left |
| | |
| | | minetest.register_tool("technic:xnotreetap", { |
| | | description = S("Xno Tree Tap"), |
| | | inventory_image = "technic_tree_tap.png", |
| | | |
| | | stack_max = 1, |
| | | |
| | | wear_represents = "technic_RE_charge", |
| | | on_refill = technic.refill_RE_charge, |
| | | |
| | | on_use = function(itemstack, user, pointed_thing) |
| | | if pointed_thing.type ~= "node" then |
| | | return itemstack |
| | |
| | | if node_name ~= "moretrees:rubber_tree_trunk" then |
| | | return |
| | | end |
| | | |
| | | --raccolta gomma |
| | | -- node.name = "moretrees:rubber_tree_trunk_empty" |
| | | -- minetest.swap_node(pos, node) |
| | | -- minetest.handle_node_drops(pointed_thing.above, {"technic:raw_latex"}, user) |
| | | -- |
| | | -- if not technic.creative_mode then |
| | | -- 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) |
| | | -- end |
| | | -- return itemstack |
| | | |
| | | |
| | | -- Send current charge to digging function so that the |
| | | -- chainsaw will stop after digging a number of nodes |
| | | meta.charge = xnotreetap_dig(pointed_thing.under, meta.charge) |
| | |
| | | }, |
| | | }) |
| | | |
| | | minetest.register_abm({ |
| | | label = "Tools: xno tree tap", |
| | | nodenames = {"moretrees:rubber_tree_trunk_empty"}, |
| | | interval = 60, |
| | | chance = 15, |
| | | action = function(pos, node) |
| | | if minetest.find_node_near(pos, (moretrees and moretrees.leafdecay_radius) or 5, {"moretrees:rubber_tree_leaves"}) then |
| | | node.name = "moretrees:rubber_tree_trunk" |
| | | minetest.swap_node(pos, node) |
| | | end |
| | | end |
| | | }) |
| | | --minetest.register_abm({ |
| | | -- label = "Tools: xno tree tap", |
| | | -- nodenames = {"moretrees:rubber_tree_trunk_empty"}, |
| | | -- interval = 60, |
| | | -- chance = 15, |
| | | -- action = function(pos, node) |
| | | -- if minetest.find_node_near(pos, (moretrees and moretrees.leafdecay_radius) or 5, {"moretrees:rubber_tree_leaves"}) then |
| | | -- node.name = "moretrees:rubber_tree_trunk" |
| | | -- minetest.swap_node(pos, node) |
| | | -- end |
| | | -- end |
| | | --}) |
| | | |
| | | |
| | | |