Skip to content

TreeChopper 1.6

Choose a tag to compare

@Erotoro Erotoro released this 27 May 22:34

TreeChopper 1.6

This release focuses on stability, durability handling, and Folia safety.

Bug Fixes

1. Fixed double durability loss on the first block

Previously, the first block could consume durability twice because the plugin applied manual damage and breakNaturally(tool) also reduced durability.

Now the initial block is handled by vanilla mechanics, and the plugin only applies extra durability loss for chained blocks.

2. Fixed a bug that caused indestructible tools to lose durability

Axes marked with the ItemMeta#isUnbreakable() attribute no longer lose durability.

3. Fixed Folia cross-region access in foliage breaking

FoliageBreakService was reworked to avoid unsafe cross-region block access on Folia.

Key changes:

  • per-chunk task dispatch
  • coordinate-only data transfer between tasks
  • chunk-bounded scans for leaves and nearby decorations

This prevents region access issues and keeps foliage clearing Folia-safe.

4. Fixed concurrency issues in PlayerToggleService

Player toggle state is now managed with thread-safe access:

  • atomic updates in toggle()
  • atomic state swap in load()
  • snapshot-based persistence in save()

This removes race conditions and prevents ConcurrentModificationException during serialization.

5. Fixed service reference visibility after /treechopper reload

Reloaded services in TreeChopper.java are now properly visible across threads using volatile references.

This ensures region threads always see the latest service instances after reload.

6. Fixed incomplete foliage cleanup for 2×2 mega trees

After the Folia-safe chunk dispatch rewrite, leaves extending into neighboring chunks without logs could remain uncleared.

The fix now schedules foliage tasks for every chunk inside the full leaf search area, ensuring complete canopy cleanup for jungle and dark oak mega trees.

7. Fixed compatibility for the first broken block

Previously, the original BlockBreakEvent for the first block was cancelled, which could hide the break from logging and gameplay plugins.

Now the first block is broken through the normal vanilla flow, improving compatibility with plugins such as CoreProtect, McMMO, and other listeners relying on standard break events.

Tests

Added regression coverage for:

  • concurrent player toggles
  • atomic reload state swap
  • foliage clearing across chunk boundaries for mega trees

All tests are passing.

Compatibility

Fully backward compatible.
No config changes were required.