TreeFellingCommand: type: command name: treefell description: "Toggles the tree felling feature on for 10 minutes, or off if currently on." usage: "/treefell" script: - if : - flag player tree_felling:! - narrate "Tree felling feature has been disabled early." - else: - flag player tree_felling: - narrate "Tree felling feature enabled for 10 minutes." - wait 10m - if : - flag player tree_felling:! - narrate " Your tree felling feature has now been automatically disabled." TreeFelling: type: world debug: false events: on player breaks block: - if : - if : - flag player tree_felling:! - else: - if || || : - determine passively - define axe - define tree_base - if <[axe].material.name.ends_with[_axe]>: - define blocks_to_break ].run> - foreach <[blocks_to_break]> as:tree_block: - modifyblock <[tree_block]> air - adjust <[axe]> durability:<[axe].durability.add[1]> - if <[axe].durability> <[axe].max_durability>: - inventory clear slot: - stop recursive_tree_felling: type: procedure script: - define start_block - define blocks_to_check ]> - define checked_blocks - define blocks_to_break - while !<[blocks_to_check].is_empty>: - define current_block <[blocks_to_check].remove[1]> - define adjacent_blocks - foreach <[adjacent_blocks]> as:adj_block: - if !<[checked_blocks].contains[<[adj_block]>]>: - define blocks_to_check <[blocks_to_check].include[<[adj_block]>]> - define checked_blocks <[checked_blocks].include[<[current_block]>]> - define blocks_to_break <[blocks_to_break].include[<[current_block]>]> - determine <[blocks_to_break]>