Cristiano Magro
2020-10-11 767b74753d22cc8cf89107e6f483b8b40e0e6911
technic/tools/xno_tree_tap.lua
@@ -1,13 +1,13 @@
-- 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},
@@ -18,16 +18,18 @@
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)
@@ -129,7 +131,8 @@
    --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
@@ -137,15 +140,15 @@
    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
@@ -225,9 +228,12 @@
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
@@ -254,23 +260,7 @@
    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)
@@ -292,18 +282,18 @@
  },
})
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
--})