
Configurable Difficulty
A server-side Minecraft mod that adjusts entity attributes based on their biome, dimension, and depth
Screenshots



About this Mod
Configurable Difficulty
A server-side Minecraft mod that adjusts entity attributes based on their biome, dimension, and depth. Supports both NeoForge and Fabric mod loaders.
Features
Triple Multiplier System:
- Dimension Multipliers: Base difficulty per dimension (Nether, End, modded dimensions)
- Biome Multipliers: Difficulty scaling per biome
- Depth Scaling: Progressive difficulty based on Y-coordinate (Overworld only)
- Final Formula:
Dimension × Biome × Depth
Modded Biome Support: Works with ALL biome mods
Modded Dimension Support: Works with ANY dimension
- Auto-fallback: Unconfigured dimensions use Overworld as baseline
Attribute Split by Entity Type:
- Players: Only receive Luck attribute (better loot quality)
- Mobs: Receive all combat attributes (Health, Armor, Damage, etc.) except Luck
Configurable Attributes:
- Max Health
- Armor
- Armor Toughness
- Attack Damage
- Attack Speed
- Attack Knockback
- Knockback Resistance
- Luck (players only)
Y-Coordinate Depth Scaling:
- Applies only in Overworld
- Deeper underground = harder difficulty
- Configurable depth threshold and max depth
- Linear scaling mode available
Configuration
The config file is located at config/configurable-difficulty.json5.
Example Configuration
{
"enabled": true,
"playerMode": "dynamic",
"mobMode": "spawn_only",
"checkInterval": 20,
// Players: Always affected (luck attribute only)
// Mobs: Which entity types should be affected (all attributes except luck)
"applyToHostileMobs": true,
"applyToPassiveMobs": false,
"applyToNeutralMobs": false,
"debug": {
"enabled": false,
"logBiomeChanges": true,
"logAttributeChanges": true
},
"enabledAttributes": {
// Mob attributes: maxHealth, armor, armorToughness, attackDamage, attackSpeed, attackKnockback, knockbackResistance
// Player attribute: luck (loot quality)
"maxHealth": true,
"armor": true,
"armorToughness": true,
"attackDamage": true,
"attackSpeed": false,
"attackKnockback": false,
"knockbackResistance": true,
"luck": false
},
"dimensionMultipliers": {
"minecraft:overworld": {
"maxHealth": 1.0,
"armor": 1.0,
"attackDamage": 1.0,
"luck": 1.0
},
"minecraft:the_nether": {
"maxHealth": 1.5,
"armor": 1.3,
"attackDamage": 1.5,
"luck": 1.2
},
"minecraft:the_end": {
"maxHealth": 2.0,
"armor": 1.5,
"attackDamage": 2.0,
"luck": 1.5
}
},
"biomeMultipliers": {
"minecraft:desert": {
"maxHealth": 1.5,
"armor": 0.8,
"attackDamage": 1.3,
"knockbackResistance": 0.1,
"luck": 1.1
},
"minecraft:deep_dark": {
"maxHealth": 2.5,
"armor": 2.0,
"armorToughness": 1.5,
"attackDamage": 2.0,
"knockbackResistance": 0.4,
"luck": 1.5
}
},
"depthScaling": {
"enabled": false,
"yThreshold": 0,
"maxDepth": -64,
"scalingMode": "linear",
"maxMultipliers": {
"maxHealth": 2.0,
"armor": 1.5,
"attackDamage": 1.5,
"luck": 1.3
}
}
}
Multiplier Calculation
The final multiplier for any attribute is calculated as:
Final Multiplier = Dimension Multiplier × Biome Multiplier × Depth Multiplier
Example 1: Nether Zombie in Crimson Forest
- Dimension: Nether → 1.5x health
- Biome: Crimson Forest → 2.0x health
- Depth: N/A (depth scaling only in Overworld)
- Final: 1.5 × 2.0 = 3.0x health
Example 2: Overworld Zombie in Deep Dark at Y=-32
- Dimension: Overworld → 1.0x health
- Biome: Deep Dark → 2.5x health
- Depth: Y=-32 (halfway to -64) → 1.5x health
- Final: 1.0 × 2.5 × 1.5 = 3.75x health
Example 3: Player in The End
- Dimension: The End → 1.5x luck
- Biome: Default → 1.0x luck
- Depth: N/A
- Final: 1.5 × 1.0 = 1.5x luck (better loot drops!)
Adding Modded Biomes and Dimensions
Adding Modded Biomes
Simply add the biome ID to the biomeMultipliers section:
"biomeMultipliers": {
"biomesoplenty:ominous_woods": {
"maxHealth": 2.0,
"attackDamage": 1.8
},
"terralith:volcanic_peaks": {
"maxHealth": 2.3,
"armor": 1.8,
"attackDamage": 1.9
}
}
Adding Modded Dimensions
Simply add the dimension ID to the dimensionMultipliers section:
"dimensionMultipliers": {
"minecraft:overworld": {
"maxHealth": 1.0,
"attackDamage": 1.0,
"luck": 1.0
},
"twilightforest:twilight_forest": {
"maxHealth": 1.3,
"attackDamage": 1.3,
"luck": 1.1
},
"aether:the_aether": {
"maxHealth": 0.8,
"attackDamage": 0.8,
"luck": 1.2
}
}
Note: Unconfigured dimensions automatically fall back to the Overworld settings as a baseline.
How It Works
Multiplier System
The mod applies attribute modifiers using a three-tier multiplier system:
Dimension Multiplier: Base difficulty for the entire dimension
- Applied to all entities in that dimension
- Higher values make the whole dimension harder
Biome Multiplier: Specific difficulty per biome
- Applied on top of the dimension multiplier
- More dangerous biomes have higher multipliers
Depth Multiplier: Progressive difficulty based on Y-coordinate
- Only applies in the Overworld
- Entities deeper underground face higher multipliers
- Configurable threshold and max depth
Final Formula: Dimension × Biome × Depth
Player Attribute Split
Players receive different attributes than mobs:
Players: Only receive the Luck attribute
- Affects loot quality from blocks, mobs, and chests
- Dynamic mode: Updates as player moves between biomes
- Spawn-only mode: Set at spawn, never changes
Mobs: Receive combat attributes (all except luck)
- Max Health, Armor, Armor Toughness
- Attack Damage, Attack Speed, Attack Knockback
- Knockback Resistance
- Spawn-only mode: Set at spawn, persists forever
Spawn-Only Mode (Default for Mobs)
When an entity spawns:
- Checks the spawn dimension and biome
- Calculates combined multiplier (dimension × biome)
- Applies attribute multipliers
- Entity keeps those stats forever, even if it moves
Dynamic Mode (Default for Players)
Every checkInterval ticks (default 20 = 1 second):
- Checks entity's current dimension and biome
- If changed from previous, recalculates multiplier
- Removes old modifiers and applies new ones
- Health percentage is preserved when max health changes
Depth Scaling (Overworld Only)
- Applies only in the Overworld dimension
- Progressive difficulty based on Y-coordinate
- Configurable via
depthScalingconfig sectionyThreshold: Y-level where scaling starts (above = no bonus)maxDepth: Y-level where max multiplier is reachedscalingMode: Currently supports "linear" scalingmaxMultipliers: Maximum multipliers atmaxDepth
Example (config: yThreshold=0, maxDepth=-64):
- Y=0 to 63: 1.0x (no depth bonus)
- Y=-32: 1.5x (halfway to max)
- Y=-64: 2.0x (maximum depth bonus)
Available Versions
How to Install Configurable Difficulty on Your Server
Order Server
Order a Minecraft Java server with at least 3 GB RAM (4 GB recommended).
Set fabric Loader
In the panel under "Egg", select the fabric loader and matching Minecraft version (1.21.1).
Install Mod
Open the mod browser in the dashboard and search for "Configurable Difficulty". Click "Install" – done! Alternatively, upload the .jar via SFTP to the /mods folder.
Compatibility
Mod Loaders
Minecraft Versions
1.21.1
Server-side
✓ RequiredRecommended RAM
4 GB(min. 3 GB)Frequently Asked Questions
Configurable Difficulty server crashes on startup – what to do?
Most common cause: wrong fabric version or insufficient RAM. Check the server log (latest.log) for "OutOfMemoryError" or "Mixin" errors. With Mado Hosting: ensure at least 3 GB RAM is allocated and the loader matches the mod version (1.21.1). You can switch loaders with one click in the panel.
Is Configurable Difficulty compatible with fabric and neoforge?
Configurable Difficulty officially supports fabric, neoforge for Minecraft 1.21.1. The Mado dashboard automatically detects incompatible loader combinations.
Server lagging with Configurable Difficulty – how to optimize performance?
Recommended RAM: 4 GB (per 8 players). Use /spark profiler to check if Configurable Difficulty consumes the most tick time. Common fixes: reduce server view-distance to 8-10, install "performant" or "starlight" as supplementary mods on Forge. With Mado Hosting, your server runs on NVMe SSDs with dedicated CPU cores for minimal latency.
Similar Mods
Rent Modded Server
Install Configurable Difficulty with just one click on your server.