Compatibility
Minecraft: Java Edition
Platforms
Links
Tags
Creators
Details
Tree Quality of Life
Sneak + break a log, the whole tree comes down.
TreeQoL handles the boring part of tree chopping - breaking all the logs, clearing the leaves, and replanting the sapling - so you don't have to.

Simple breaking from top to bottom animation

Features
Tools - You customize tools. Blacklist individual axe types (e.g. golden axe) or add custom items from ItemsAdder or Nexo as valid axe tools.
Glow highlight - shows logs that will be chopped by glowing effect. Color and duration customizable.
Smart tree validation - min/max log count, max horizontal spread (so you can include branchy oaks but exclude log walls), and a leaf-percentage check that distinguishes natural trees from player-built structures.
Animation - off by default. When enabled, logs break layer by layer, top-down or bottom-up, with configurable delay, particles, and sounds. (Very satisfying with delay 0)
Auto replant - places a sapling at the root after chopping the tree. Can require suitable soil, can consume one from the player's inventory, and can be enabled/disabled per wood type.
Fast leaf decay - removes leaves in batched waves after the logs are gone. Speed and batch size are configurable. Can also be toggled per wood type.
Language - easy to use language system.
Commands
| Command | Permission | What it does |
|---|---|---|
/treeqol toggle |
treeqol.toggle |
Turn breaking trees on/off for yourself |
/treeqol lang <code|reset> |
treeqol.lang |
Override your language |
/treeqol reload |
treeqol.reload |
Reload config and lang files live |
/treeqol info |
- | Version info |
/treeqol help |
- | Command list |
| Permission | Notes |
|---|---|
treeqol.use |
Required to chop whole trees |
treeqol.toggle |
Required for /treeqol toggle |
treeqol.lang |
Required for /treeqol lang |
treeqol.reload |
Required for /treeqol reload |
treeqol.bypass.worldguard |
Ignore WorldGuard restrictions |
Integrations
| Plugin | Integration |
|---|---|
| WorldGuard | Chopping respects the BUILD flag - blocked regions stay blocked |
| CoreProtect | Every broken log is logged as a player block removal |
| ItemsAdder | Custom items can be configured as tools |
| Nexo | Same as ItemsAdder |
| Jobs Reborn | Player work by chopping trees |
Languages
The plugin reads the player's client locale automatically and picks the matching lang/XX.yml file. Players can override this with /treeqol lang <code>. If a translation doesn't exist for their locale, it falls back to default-locale in config.yml (English by default).
Bundled: English (en), Polish (pl).
To add a new language, copy lang/en.yml to lang/de.yml (or whatever the locale code is), translate the strings, and reload. No restart needed.
Config
# ═══════════════════════════════════════════════════
# TreeQoL Configuration
# ═══════════════════════════════════════════════════
# Default locale used when the player's locale cannot be determined or their
# translation file does not exist. Must match a file in the lang/ folder.
default-locale: "en"
# Force all players to use this locale regardless of client locale.
# Leave empty ("") to use per-player locale detection.
force-locale: ""
# ── Core Behaviour ──────────────────────────────────
tree-felling:
# Master switch - set false to disable all features without unloading the plugin.
enabled: true
# Player must hold SHIFT while breaking a log to trigger tree chopping.
require-shift: true
# Permission node required to use tree chopping. Leave empty to allow everyone.
permission: "treeqol.use"
# ── Tool Restrictions ──────────────────────────────
tools:
# Controls which items can trigger tree chopping:
# ANY - any item (including bare hand)
# AXES - only axe-type items (default)
# SPECIAL_ONLY - only items listed in special-items below
mode: "AXES"
# Axe materials for which tree chopping is DISABLED even when mode is AXES.
# Use Bukkit Material names (e.g. GOLDEN_AXE, WOODEN_AXE).
disabled-axe-types: []
# Special items that always activate chopping regardless of mode setting.
# Supports vanilla materials and custom items from ItemsAdder / Nexo.
special-items:
enabled: false
items: []
# Example entries:
# items:
# - type: VANILLA
# material: NETHERITE_AXE
# display-name: "" # optional: require exact display name match
# - type: ITEMSADDER
# id: "mypack:magic_axe"
# - type: NEXO
# id: "magic_axe"
# ── Block / Tree Type Restrictions ────────────────
blocks:
# Whitelist: only these log types will trigger tree chopping.
# Leave empty to allow ALL log types.
allowed-log-types: []
# Blacklist: chopping is always disabled for these log types.
disabled-log-types: []
# ── Tree Size Limits ──────────────────────────────
size:
# Minimum number of log blocks required to trigger chopping.
# Prevents accidentally chopping 2-block posts or tiny structures.
min-logs: 3
# Maximum number of log blocks that can be broken at once.
# Safety cap to prevent lag on huge custom trees.
max-logs: 200
# Maximum horizontal spread (bounding box width/depth) of the tree.
# Purely vertical trees have spread 0. Increase for oak/jungle trees with branches.
max-horizontal-spread: 5
# Number of topmost log layers to scan for leaves when validating the tree.
leaf-validation-layers: 3
# Minimum percentage (0–100) of surrounding blocks that must be leaves
# for the structure to be recognised as a natural tree.
min-leaf-percentage: 20
# ── Visual Effects ────────────────────────────────
effects:
# Apply Mining Fatigue to the player when a tree chopping is triggered.
slow-mining:
enabled: true
amplifier: 0 # 0 = Mining Fatigue I, 1 = II, etc.
duration-ticks: 40
# Highlight (glowing outline) all log blocks that will be broken.
highlight-blocks:
enabled: true
duration-ticks: 20
# Glow colour - must be a valid ChatColor name.
color: "WHITE"
# ── Break Animation ───────────────────────────────
animation:
# Play a staged break animation instead of instant removal.
enabled: true
# Direction of staged breaking:
# TOP_DOWN - logs break from top to bottom (realistic fall)
# BOTTOM_UP - logs break from bottom to top
direction: "TOP_DOWN"
# Delay in ticks between each Y-layer of logs being broken.
delay-per-layer-ticks: 1
# Spawn block-crack particles at each broken log position.
particles: true
# Play the log break sound for each layer.
sounds: true
# ── Auto Replant ──────────────────────────────────
auto-replant:
# Automatically place a sapling at the tree's root after chopping.
enabled: false
# Delay in ticks before placing the sapling.
delay-ticks: 5
# Per-tree-type control. If a type is not listed, it inherits 'enabled' above.
per-type:
OAK_LOG: true
BIRCH_LOG: true
SPRUCE_LOG: true
JUNGLE_LOG: true
ACACIA_LOG: true
DARK_OAK_LOG: true
MANGROVE_LOG: true
CHERRY_LOG: true
PALE_OAK_LOG: true
# Require suitable soil (grass, dirt, farmland…) under the root for replanting.
check-soil: true
# Consume one sapling from the player's inventory instead of placing one for free.
# If the player has no matching sapling, replanting is skipped.
consume-sapling: false
# ── Fast Leaf Decay ───────────────────────────────
fast-leaf-decay:
# Quickly remove natural leaf blocks after a tree is chopped.
enabled: true
# Delay in ticks between each wave of leaf removal.
delay-per-wave-ticks: 2
# Maximum leaf blocks to remove per wave.
max-per-wave: 20
# Per-tree-type control. If a type is not listed, it inherits 'enabled' above.
per-type:
OAK_LOG: true
BIRCH_LOG: true
SPRUCE_LOG: true
JUNGLE_LOG: true
ACACIA_LOG: true
DARK_OAK_LOG: true
MANGROVE_LOG: true
CHERRY_LOG: true
PALE_OAK_LOG: true
# ── Plugin Integrations ───────────────────────────
integrations:
worldguard:
# Block tree chopping in regions where the player cannot build.
enabled: true
check-build-flag: true
coreprotect:
# Log each chopped block in CoreProtect as a player block removal.
enabled: true
# Label prepended to the CoreProtect log entry (useful for filtering).
action-label: "#treeqol"
itemsadder:
enabled: true
nexo:
enabled: true
jobs:
# Award Jobs Reborn payment/XP for every log chopped, as if the player
# had broken each one individually. Requires Jobs Reborn to be installed.
enabled: true
# ── Command Settings ──────────────────────────────
commands-config:
# Cooldown in seconds between /treeqol toggle uses. 0 disables cooldown.
toggle-cooldown: 0


