--- type: User Story title: "US-003: Fell unlocked trees" description: Safely and visibly break an unlocked tree's trunk from the mined block upward. status: backlog --- # US-003: Fell unlocked trees As a **player with an unlocked species**, I want its trees to break progressively from the point I chop so that felling is useful, understandable, and visually satisfying. ## Acceptance criteria - [ ] Automatic felling is considered only for a non-cancelled Survival-mode block break made with an axe against a species the player has unlocked. - [ ] Sneaking when the initiating block is broken always bypasses automatic felling and leaves the ordinary single-block break intact. - [ ] A disabled or administratively locked player receives the ordinary single-block break without automatic felling. - [ ] Tree detection follows connected blocks of the initiating trunk family laterally and upward, including diagonal branches, but never follows trunk blocks below the initiating block. - [ ] Detection requires foliage, wart blocks, or mushroom caps appropriate to the candidate species so that an unsupported log structure is not automatically felled. - [ ] Detection is iterative and bounded by configurable block and search-distance limits; reaching a safety limit aborts automatic felling without preventing the initiating ordinary break. - [ ] Neighbor visitation is deterministic and does not process a location more than once. - [ ] Only trunk, stem, or mushroom-stem blocks are felled; leaves, wart blocks, mushroom caps, roots, vines, and decorations remain for normal game behavior. - [ ] The initiating block is handled by the original break, and remaining discovered trunk blocks break bottom-to-top at a configurable delay of two server ticks per block by default. - [ ] Each additional block is checked through the applicable Bukkit block-break event path, and a cancellation prevents that block and any unsafe continuation from being broken. - [ ] Each successfully felled block produces drops and experience according to its block state, the active axe, enchantments, and the Spigot API rather than duplicating the initiating block's drops. - [ ] Axe durability, including Unbreaking behavior, is applied for every successfully felled block without double-charging the initiating break. - [ ] Felling stops safely before another block is processed when the axe breaks, is removed, or is no longer an eligible axe. - [ ] Logging out, plugin disablement, world unload, or another invalidated runtime condition cancels the remaining animation without breaking queued blocks. - [ ] A player cannot start overlapping automatic fellings that could double-break or double-drop the same blocks. - [ ] Only blocks actually removed by this felling are recorded for undo. ## Related - [US-001: Earn tree-type unlocks](us-001-earn-tree-type-unlocks.md) - [US-004: Control personal tree felling](us-004-control-personal-tree-felling.md) - [US-005: Undo the last felled tree](us-005-undo-the-last-felled-tree.md) - [US-008: Configure and persist Tree Feller](us-008-configure-and-persist-tree-feller.md)