
Foliage 2.1.0
Create custom leaves, plants, trees and more ! For Nexo and ItemsAdder
💬 Join the Discord server to get support, even for pre-purchase !
Overview
Since HMCLeaves is now unsupported and not updated, let me introduce Foliage: the perfect plugin to expand your natural environment !
Here are the main features of Foliage
- 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.
⚠️ The showcased assets are not included with the plugin
https://www.youtube.com/watch?v=W8JoG1_rxVM
Commands
- /foliage give <type> <item> - Give custom item (leaves, saplings...).
- /foliage reload - Reload the config.
- /foliage lookat - Get details on the block you are looking at.
- /foliage help - Shows all the commands.
Configuration
General Foliage config
# 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).
Create custom leaves
# 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.
Create custom saplings + custom trees
# 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:
- Build your custom tree
- Select it with WorldEdit (//pos1 & //pos2 or use a Wooden Axe)
- //copy - Copy your selected structure
- //schem save <your-schematic> - Save your tree schematic under the name you want
- Copy your schematic from
WorldEdit/schematics/<your-schematic>.schem
- Paste it in
Foliage/schematics/
- Use your schematic name in
grow-into
in thecustom_saplings.yml
file.
Custom drop tables from drops.yml
# 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
Requirements
- Foliage requires a resource pack. The plugin currently supports ItemsAdder & Nexo.
- ProtocolLib is required.
- WorldEdit is required for custom tree growth system.