
Advanced TreeCapitator
Advanced TreeCapitator enables fast tree felling on Paper 1.21. Sneak with an axe to chop entire trees, with configurable durability loss, world restrictions, and a reload command.
453
2
Список изменений
[1.4.0] — 2026-05-14
Fixed
- [CRITICAL] Forced Java 21 requirement — The
pom.xmlcompile target has been lowered from Java 21 to Java 17. Previously the plugin threwUnsupportedClassVersionErroron any server running Java 17 (Paper 1.20.x, Purpur, Pufferfish, most shared hosting providers). No source changes were needed because the code does not use any Java 21-specific APIs. - [CRITICAL] Protection plugin bypass — Extra log blocks (every block other than the
origin) were broken with
breakNaturally()without first firing aBlockBreakEvent, meaning WorldGuard, GriefPrevention, Lands, and Residence had no opportunity to intervene. A dedicatedBlockBreakEventis now fired for each extra block before it is broken; if any protection plugin cancels that event, the block is silently skipped. - [CRITICAL] Missing anti-recursion guard — The protection-plugin fix above fires
BlockBreakEventprogrammatically, which caused the plugin's own listener to trigger again for each block, creating an infinite loop. AbreakingTreesSet<UUID>now marks any player whose felling session is currently in progress; the listener returns immediately if the player's UUID is already present. The set is always cleared inside afinallyblock so a player can never get permanently stuck. - [MEDIUM] BFS linking two nearby trees — The 26-direction BFS could follow diagonal
log connections to merge two adjacent trees into one oversized fell. A new
MAX_HORIZONTAL_DISTANCE = 8constant (Manhattan X+Z distance from the origin block) causes BFS to skip any candidate block beyond that threshold. The value of 8 is wide enough to accommodate Big Oak and Dark Oak canopies without bridging two separate trunks. - [MEDIUM] No config value validation — Values such as
max-blocks: -1ordamage-multiplier: -100were loaded directly into fields, producing undefined behaviour (negative BFS limits, inverted durability).clamp()andclampDouble()helpers have been added toConfig.reload(); all numeric values are now constrained to a valid range (e.g.max-blocks→[1, 1000],damage-multiplier→[0.1, 10.0]).
Clarified (not a bug)
- Double durability damage (analyst report #2) — The audit report claimed that
breakNaturally(tool)automatically reduces the tool's durability in the player's inventory, causing damage to be applied twice alongsideDurabilityHandler. After reviewing the Paper API source:Block.breakNaturally(ItemStack)uses theItemStackonly to determine drop calculations (Fortune, Silk Touch) and does not modify the item in the player's inventory.DurabilityHandlerremains the sole source of durability loss. No double damage occurs.
Changed
- Lowered the supported
api-versionfrom Paper 1.21 to Paper 1.20.4+, broadening compatibility without requiring any 1.21-specific API. - Added Javadoc to
TreeFinder,TreeCapitatorTask, andConfig.
Not Fixed (planned v1.5.0)
- Folia incompatibility — The plugin schedules work with
BukkitScheduler.runTask(), which is incompatible with Folia's region-based threading model. A proper fix requires migrating toRegionScheduler/GlobalRegionSchedulerand is planned for v1.5.0.
Файлы
AdvancedTreeCapitator-1.4.0.jar(21.70 KiB)
ОсновнойМетаданные
Канал релиза
Release
Номер версии
1.4.0
Загрузчики
BukkitPaperPurpurSpigot
Версии игры
1.21–1.21.11
Загрузок
3
Дата публикации
9 ч. назад
