From 31a052d7e6ac3036003a3e0db5fe981964a831f5 Mon Sep 17 00:00:00 2001 From: dokutan <54861821+dokutan@users.noreply.github.com> Date: Sun, 10 May 2020 14:42:57 +0200 Subject: [PATCH] Chainsaw update (bushes and moretrees fixed) (#551) Add missing moretrees nodes to the chainsaw Cut all nodes with the "tree" and "leaves" group too. --- technic/tools/chainsaw.lua | 87 +++++++++++++++++++++++++++++--------- 1 file changed, 67 insertions(+), 20 deletions(-) diff --git a/technic/tools/chainsaw.lua b/technic/tools/chainsaw.lua index 22685cf..4d33324 100644 --- a/technic/tools/chainsaw.lua +++ b/technic/tools/chainsaw.lua @@ -24,48 +24,81 @@ local nodes = { {"default:jungleleaves", false}, {"default:pine_needles", false}, + -- The default bushes + {"default:acacia_bush_stem", true}, + {"default:bush_stem", true}, + {"default:pine_bush_stem", true}, + {"default:acacia_bush_leaves", false}, + {"default:blueberry_bush_leaves", false}, + {"default:blueberry_bush_leaves_with_berries", false}, + {"default:bush_leaves", false}, + {"default:pine_bush_needles", false}, + -- Rubber trees from moretrees or technic_worldgen if moretrees isn't installed {"moretrees:rubber_tree_trunk_empty", true}, {"moretrees:rubber_tree_trunk", true}, {"moretrees:rubber_tree_leaves", false}, - -- Support moretrees + -- Support moretrees (trunk) {"moretrees:acacia_trunk", true}, {"moretrees:apple_tree_trunk", true}, {"moretrees:beech_trunk", true}, {"moretrees:birch_trunk", true}, + {"moretrees:cedar_trunk", true}, + {"moretrees:date_palm_ffruit_trunk", true}, + {"moretrees:date_palm_fruit_trunk", true}, + {"moretrees:date_palm_mfruit_trunk", true}, + {"moretrees:date_palm_trunk", true}, {"moretrees:fir_trunk", true}, + {"moretrees:jungletree_trunk", true}, {"moretrees:oak_trunk", true}, {"moretrees:palm_trunk", true}, + {"moretrees:palm_fruit_trunk", true}, + {"moretrees:palm_fruit_trunk_gen", true}, {"moretrees:pine_trunk", true}, + {"moretrees:poplar_trunk", true}, {"moretrees:sequoia_trunk", true}, {"moretrees:spruce_trunk", true}, {"moretrees:willow_trunk", true}, - {"moretrees:jungletree_trunk", true}, - {"moretrees:poplar_trunk", true}, + -- Support moretrees (leaves) {"moretrees:acacia_leaves", false}, {"moretrees:apple_tree_leaves", false}, - {"moretrees:oak_leaves", false}, + {"moretrees:beech_leaves", false}, + {"moretrees:birch_leaves", false}, + {"moretrees:cedar_leaves", false}, + {"moretrees:date_palm_leaves", false}, {"moretrees:fir_leaves", false}, {"moretrees:fir_leaves_bright", false}, - {"moretrees:sequoia_leaves", false}, - {"moretrees:birch_leaves", false}, - {"moretrees:birch_leaves", false}, - {"moretrees:palm_leaves", false}, - {"moretrees:spruce_leaves", false}, - {"moretrees:spruce_leaves", false}, - {"moretrees:pine_leaves", false}, - {"moretrees:willow_leaves", false}, {"moretrees:jungletree_leaves_green", false}, {"moretrees:jungletree_leaves_yellow", false}, {"moretrees:jungletree_leaves_red", false}, - {"moretrees:acorn", false}, - {"moretrees:coconut", false}, - {"moretrees:spruce_cone", false}, - {"moretrees:pine_cone", false}, - {"moretrees:fir_cone", false}, - {"moretrees:apple_blossoms", false}, + {"moretrees:oak_leaves", false}, + {"moretrees:palm_leaves", false}, {"moretrees:poplar_leaves", false}, + {"moretrees:pine_leaves", false}, + {"moretrees:sequoia_leaves", false}, + {"moretrees:spruce_leaves", false}, + {"moretrees:willow_leaves", false}, + -- Support moretrees (fruit) + {"moretrees:acorn", false}, + {"moretrees:apple_blossoms", false}, + {"moretrees:cedar_cone", false}, + {"moretrees:coconut", false}, + {"moretrees:coconut_0", false}, + {"moretrees:coconut_1", false}, + {"moretrees:coconut_2", false}, + {"moretrees:coconut_3", false}, + {"moretrees:dates_f0", false}, + {"moretrees:dates_f1", false}, + {"moretrees:dates_f2", false}, + {"moretrees:dates_f3", false}, + {"moretrees:dates_f4", false}, + {"moretrees:dates_fn", false}, + {"moretrees:dates_m0", false}, + {"moretrees:dates_n", false}, + {"moretrees:fir_cone", false}, + {"moretrees:pine_cone", false}, + {"moretrees:spruce_cone", false}, -- Support growing_trees {"growing_trees:trunk", true}, @@ -161,6 +194,18 @@ 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) + local node_name = minetest.get_node(pos).name + if timber_nodenames[node_name] + or (chainsaw_leaves and minetest.get_item_group(node_name, "leaves") ~= 0) + or minetest.get_item_group(node_name, "tree") ~= 0 then + return true + end + + return false +end + -- Table for saving what was sawed down local produced = {} @@ -237,7 +282,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 @@ -251,8 +296,10 @@ 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) + else + minetest.check_for_falling(npos) end end return remaining_charge