Polymart is now Voxel Shop! We're upgrading many features of the site, and during this open beta you will experience occasional bugs. Learn more
Create custom leaves, plants, trees and more ! For Nexo and ItemsAdder

💬 Join the Discord server to get support, even for pre-purchase !
Since HMCLeaves is now unsupported and not updated, let me introduce Foliage: the perfect plugin to expand your natural environment !
- 2 custom block types are supported - leaves & saplings. (other types are being worked on)
- Flexible config makes you free to create whatever you want.
- Custom drops allows you to expand the vanilla-like experience.
- WorldEdit support allows you to executes //copy, //paste, //set , //replace or //schem commands with custom leaves.
- Custom trees can grow from your custom saplings using schematics.
- ItemsAdder & Nexo support make it a lot easier to create content.
- Automatic Resource Pack generation makes the creation process faster.
https://www.youtube.com/watch?v=W8JoG1_rxVM
# Foliage Plugin Configuration
# General settings
settings:
# Whether to use MiniMessage format
# If false, will use legacy color codes (§)
use-minimessage: true
# Vanilla leaves settings (client-side via ProtocolLib)
vanilla-leaves:
override-enabled: true #Leave this true
fixed-distance: 7
persistent: false
processed-types:
- OAK_LEAVES
- BIRCH_LEAVES
- SPRUCE_LEAVES
- JUNGLE_LEAVES
- ACACIA_LEAVES
- DARK_OAK_LEAVES
- AZALEA_LEAVES
- FLOWERING_AZALEA_LEAVES
- MANGROVE_LEAVES
- CHERRY_LEAVES
# Vanilla saplings settings
vanilla-saplings:
# Whether to override vanilla saplings behavior
override-enabled: true
# Whether to force stage 0 for all vanilla saplings
force-stage-zero: true
# Whether to allow natural tree growth
allow-natural-growth: true
# General custom sapling growth settings
custom-saplings:
growth-chance: 0.25
bonemeal-multiplier: 3.0
random-tick-interval: 30
blocks-per-chunk: 10
allow-bonemeal: true
performance: #Do not touch if you don't know what you are doing
# Maximum number of chunks to keep in memory cache
chunk-cache-size: 100
# Whether to load chunks asynchronously
async-loading: true
# Whether to batch block updates
batch-updates: true
# Maximum number of block updates to process in a single batch
batch-size: 1000
# How often to save block data to disk (in seconds)
save-interval: 300
# Whether to use more thorough sampling for chunks after initial sampling
# Only enable if you notice missing leaves in some chunks
thorough-sampling: false
# Whether to use legacy full chunk processing instead of sampling (not recommended)
# This will have a significant performance impact
legacy-full-processing: false
# Whether to use adaptive forest-aware leaf processing (reduces TPS impact in forests)
adaptive-leaf-processing: true
# Maximum number of leaf updates to process per tick (lower = less TPS impact)
max-leaf-updates-per-tick: 50
# Multiplier for cooldown in dense forest areas (higher = fewer updates in forests)
density-cooldown-multiplier: 3
# Storage settings
storage:
# Whether to use the region storage system (recommended)
use-region-storage: true
# Whether to automatically migrate data from the old YML storage to the new region storage
auto-migrate: true
# Whether to delete the old storage file after migration
delete-old-storage: false
# Compression level for region files (0-9, where 9 is maximum compression)
# Higher values use more CPU but less disk space
compression-level: 6
# Debug settings
debug:
# Enable debug messages in console
enabled: false
# Log block placements
log-placements: true
# Log block registrations
log-registrations: true
# Log block updates and physics
log-updates: true
# Log chunk loading/unloading
log-chunks: true
# Log block storage operations
log-storage: true
# Log block operations
log-blocks: true
# Log sapling growth events
log-growth: true
# Log WorldEdit operations
log-worldedit: false
# Log startup messages
log-startup: true
# Log packet operations
log-packets: false
# Log placement attempts for custom blocks
log-placement: true
# Log block breaks
log-breaks: true
# Log drops from blocks
log-drops: true
# Log leaf growth events
log-leaf-growth: true
# Log sapling growth events
log-sapling-growth: true
# Permissions
permissions:
# Whether to check permissions for placing blocks
enabled: true
# Default permission settings
defaults:
# Allow placing custom leaf blocks
can-place-leaves: true
# Allow placing custom sapling blocks
can-place-saplings: true
# Messages
messages:
# Use MiniMessage format for all messages
# See: https://docs.adventure.kyori.net/minimessage/format.html
prefix: "<dark_gray>[<green>Foliage</green><dark_gray>] <gray>"
no-permission: "<red>You don't have permission to do that!</red>"
given-block: "<gray>Given <green>{block}</green>!</gray>"
invalid-block: "<red>Invalid block configuration: {error}</red>"
# Version - do not modify
config-version: 1
This config is important for non-custom blocks (leaves, sugar cane, saplings).
# Custom Blocks Configuration
# This is an example of how to configure custom leaves.
custom_leaves:
fir_leaves:
item:
itemsadder: custom_blocks:fir_leaves #Use ItemsAdder items
block:
base_material: AZALEA_LEAVES
distance: 3
persistent: true
model: "custom_blocks:leaves/fir_leaves/fir_leaves" #Use a single model
drops: "fir_leaves" #Use the name from drops.yml
maple_leaves:
item:
nexo: custom_blocks:maple_leaves #Use Nexo items
block:
base_material: AZALEA_LEAVES
distance: 4
persistent: true
models: #Use multiple models
- "custom_blocks:leaves/maple_leaves/maple_leaves"
- "custom_blocks:leaves/maple_leaves/maple_leaves1"
- "custom_blocks:leaves/maple_leaves/maple_leaves2"
- "custom_blocks:leaves/maple_leaves/maple_leaves3"
drops: "maple_leaves" #Use the name from drops.yml
# Configuration version - do not modify
version: 1
Everything is fully configurable, you are free to create your unique foliage.
# Custom Saplings Configuration
# This file contains definitions for all custom sapling blocks in the game
custom_saplings:
example_sapling:
item:
material: OAK_SAPLING
name: "<green>Example Sapling</green>"
custom_model_data: 1001
lore:
- "<gray>A magical sapling that grows</gray>"
- "<gray>into a custom tree!</gray>"
# Optional custom item IDs
itemsadder: ""
nexo: ""
block:
base_material: OAK_SAPLING
stage: 0
growth:
# Chance to grow on random tick (out of 100)
chance: 15
# List of schematics to randomly choose from (from the schematics/ directory)
schematics:
- "custom_tree1.schem"
- "custom_tree2.schem"
# Minimum light level required for growth (0-15)
min_light: 9
# Whether bonemeal can be used
allow_bonemeal: true
# Whether the sapling needs specific blocks below to grow
required_blocks:
- "GRASS_BLOCK"
- "DIRT"
- "PODZOL"
# Minimum space needed above the sapling (y height)
required_height: 7
# Whether to check for space in a radius around the sapling
space_check:
enabled: true
radius: 2
height: 5
# Drop table to use for this block (references a table in drops.yml)
drops: "example_sapling"
# Configuration version - do not modify
version: 1
Your custom saplings growth system is fully configurable and allows custom trees growth.
Foliage uses WorldEdit schematics to handle custom trees:
WorldEdit/schematics/<your-schematic>.schemFoliage/schematics/grow-into in the custom_saplings.yml file.# Drop tables configuration
drop-tables:
fir_leaves:
drops:
stick:
material: STICK
amount: 1-2
chance: 0.1
fortune-affected: false
fir_sapling:
itemsadder: custom_blocks:fir_sapling
amount: 1
chance: 0.05
fortune-affected: false
maple_leaves:
drops:
stick:
material: STICK
amount: 1-2
chance: 0.1
fortune-affected: false
maple_sapling:
nexo: maple_sapling
amount: 1
chance: 0.05
fortune-affected: false