From 717ad02350eebdc1ec8b8af93d05f8c229af0332 Mon Sep 17 00:00:00 2001 From: dokutan <54861821+dokutan@users.noreply.github.com> Date: Fri, 8 May 2020 00:15:50 +0200 Subject: [PATCH] Chainsaw checks for node groups --- technic/tools/chainsaw.lua | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/technic/tools/chainsaw.lua b/technic/tools/chainsaw.lua index 8b338a8..b8fc7d9 100644 --- a/technic/tools/chainsaw.lua +++ b/technic/tools/chainsaw.lua @@ -194,6 +194,25 @@ local S = technic.getter technic.register_power_tool("technic:chainsaw", chainsaw_max_charge) +-- This function checks if the specified node should be sawed +local function check_if_node_sawed(pos) + + if chainsaw_leaves then + if minetest.get_item_group( minetest.get_node(pos).name, "leaves" ) ~= 0 + or minetest.get_item_group( minetest.get_node(pos).name, "tree" ) ~= 0 + or timber_nodenames[minetest.get_node(pos).name] then + return true + end + else + if minetest.get_item_group( minetest.get_node(pos).name, "tree" ) ~= 0 + or timber_nodenames[minetest.get_node(pos).name] then + return true + end + end + + return false +end + -- Table for saving what was sawed down local produced = {} @@ -270,7 +289,7 @@ local function recursive_dig(pos, remaining_charge) end local node = minetest.get_node(pos) - if not timber_nodenames[node.name] then + if not check_if_node_sawed(pos) then return remaining_charge end @@ -284,7 +303,7 @@ local function recursive_dig(pos, remaining_charge) if remaining_charge < chainsaw_charge_per_node then break end - if timber_nodenames[minetest.get_node(npos).name] then + if check_if_node_sawed(npos) then remaining_charge = recursive_dig(npos, remaining_charge) end end