Biome-Specific Surface Changes
One of the most common tasks is changing surface blocks in specific biomes.Simple Block Replacement
Replace grass with a custom block in specific biomes:Multi-Layer Surface
Create custom surface layers with grass, dirt, and stone:Height-Based Generation
Control what generates at different elevations.Mountain Peaks
Snow and ice above certain heights:Underground Layers
Different stone types at different depths:Adding Structures to Villages
Extend vanilla villages with custom buildings.Simple House Addition
Biome-Specific Buildings
Add different variants per biome using processors:Feature Decoration Stacking
Add decorative features on top of existing generation.Mushrooms on Trees
Ore Vein Decoration
Add crystal clusters near ore veins:Structure Processor Patterns
Weathering and Decay
Randomly replace blocks with weathered variants:Material Palette Swapping
Change all wood types in a structure:Random Palette Selection
Create variety by randomly choosing from multiple palettes:Noise-Based Variation
Use noise to create natural-looking variation.Patchy Ground Cover
Gradual Biome Transitions
Custom Ore Distribution
While vanilla ore placement works well, you can create custom patterns.Clustered Rare Ores
Height-Stratified Ores
Use different ore configurations at different heights with multiple modifiers:Conditional Structure Spawning
Control when and where structures can spawn.Altitude Requirements
Multiple Conditions
Combine conditions for precise control:Optimization Patterns
Use Tags Instead of Lists
Bad:Priority Organization
Structure your modifiers with clear priorities:- 0-500: Critical foundation changes (dimension noise, basic terrain)
- 500-1000: Major modifications (surface rules, large features)
- 1000-1500: Standard additions (structures, decorations)
- 1500-2000: Refinements (small features, tweaks)
- 2000+: Removals and cleanup
Conditional Execution
Only apply modifiers when necessary:Testing Patterns
Isolated Testing
Create test-specific modifiers:Gradual Rollout
Test modifiers on single biome before expanding:- Apply to one test biome
- Verify behavior
- Expand to biome tag
- Full deployment
Common Mistakes to Avoid
Forgetting surface_type conditions
Forgetting surface_type conditions
Always check Without this, blocks may appear on ceilings too.
surface_type in stone_depth predicates:Incorrect sequence order
Incorrect sequence order
Surface rules execute in order - most specific first:
Over-weighting rare structures
Over-weighting rare structures
Structure weights are relative. A weight of 1 among others with weight 1 means 50/50:
- Common: 15-25
- Uncommon: 8-15
- Rare: 3-8
- Very rare: 1-3
Not testing edge cases
Not testing edge cases
Test at:
- Biome boundaries
- Height limits (y=-64, y=320)
- Chunk borders
- With other mods active
Integration Patterns
Multiple Datapacks
When working with multiple datapacks:- Use distinct priority ranges per pack
- Document dependencies
- Use tags for cross-pack references
- Test combinations thoroughly
Mod Compatibility
Ensure compatibility with other mods:- Use append mode when modifying structures
- Avoid hardcoded block IDs from other mods
- Use predicates that work with modded content
- Test with popular worldgen mods
Documentation Templates
Document your modifiers:Next Steps
Adding Modifiers
Complete guide to creating worldgen modifiers
Custom Structures
Learn structure creation in detail
Bandlands Terrain
Create banded terrain patterns
API Reference
Complete API documentation
