Damage System
This is a comprehensive breakdown of how the health / damage scales in EliteMobs. It should be used as a reference when designing dungeons.
It focuses on ordinary attacks involving Custom Bosses. Natural elites use the same core curves, with the scaled-combat and legacy-health options described below. Scripted raw damage, magic weapons and class abilities can use separate damage paths; see Custom damage and absorption.
Before you start!
You don't need to read all of this if you just want to do quick tweaks. Skip to the "Using this data for dungeons" section to see very simplified quick maths and a series of premade recommended settings!
Scaling (in general)
EliteMobs combines exponential skill adjustments with gear modifiers. The unclamped boss-health formula doubles every 5 levels, while offensive and defensive skill adjustments double every 7.5 levels of difference. Boss health and player base damage stop growing from mob level alone at the configured Minecraft health ceiling, so these curves do not guarantee identical fights across every level range.
Player power combines two independently calculated layers:
- Weapon Skill Level -- earned by killing Elite Mobs with a specific weapon type (swords, axes, bows, crossbows, tridents, hoes, maces, spears, staves, or wands).
- Item Level -- the elite level of the weapon or armor piece the player has equipped.
Players also earn Armor Skill XP from eligible elite kills, using one third of the base XP share before its own modifiers and rounding. Taking hits alone does not grant this XP. Armor skill grants bonus maximum health (+1 heart per level above 1) when its health settings and world rules allow it, and determines defensive scaling against boss damage.
Weapon Skills
Weapon XP is divided between the skills recorded when your hits land or projectiles launch, in proportion to their damage contributions. Switching weapons at the mob’s death does not redirect XP. Armor XP is earned at a reduced rate.
The available weapon skills are:
| Skill | Weapon |
|---|---|
| Swords | All sword types |
| Axes | All axe types |
| Bows | Bow |
| Crossbows | Crossbow |
| Tridents | Trident |
| Hoes | All hoe types |
| Maces | Mace (1.21+) |
| Spears | All spear types (1.21.11+) |
| Staves | Custom-model weapons tagged with weaponType: STAVES |
| Wands | Custom-model weapons tagged with weaponType: WANDS |
| Armor | Defensive skill, progressed alongside eligible elite kills |
The starting XP value is mobLevel^2, modified by boss health/damage multipliers, contribution, reward-level limits and XP perks. Level 100 is a soft cap, not a maximum: the required XP continues increasing beyond it. See Skill System for the reward rules.
Skill Bonuses
All ten weapon skills and Armor have skill bonuses -- special abilities that unlock as the player levels up. Players can select which bonuses to activate. Skill bonuses come in five types:
- Passive -- always active when equipped (e.g., flat damage increase).
- Conditional -- active only when a specific condition is met (e.g., bonus damage when target is below 30% health).
- Proc -- chance-based trigger on specific events (e.g., chance to cause bleeding on hit).
- Stacking -- builds up over consecutive actions (e.g., consecutive hits increase damage).
- Cooldown -- powerful effect with an internal cooldown (e.g., survive fatal damage once every 60 seconds).
Offensive skill bonuses from weapon skills are applied as additive damage multipliers on top of the base damage dealt to bosses. Defensive skill bonuses from the armor skill reduce incoming boss damage through various mechanics (flat reduction, dodge, damage shields, etc.).
Players can have up to 3 active bonuses per weapon or armor type. Because every curve on this page is drawn without them, see Skill Bonuses in the Damage Pipeline for how they compose into real damage before you use these numbers to balance an encounter.
Damage dealt by Custom Bosses
Boss damage in EliteMobs 10 uses three multiplicative layers with no pre-compensation. The system is designed so that a properly geared player survives approximately 5 hits from same-level content.
The damage formula for Custom Bosses is:
1. playerMaxHealth = 20 + (armorSkillLevel - 1) * 2
2. baseDamage = playerMaxHealth / 5.0
3. skillAdjustment = 2 ^ ((bossLevel - armorSkillLevel) / 7.5)
4. gearAdjustment = 2.0 * (1 - gearReduction)
5. scaledDamage = baseDamage * skillAdjustment * gearAdjustment
6. [explosion distance attenuation, if applicable]
7. potionMultiplier = source Strength/Weakness multiplier * player Resistance multiplier
8. finalDamage = max(scaledDamage, 1) * potionMultiplier * customBossDamageMultiplier * specialMultiplier * configMultiplier
9. capHealth = [Alpha] Advanced Combat System active ? max(1, actualMaxHealth - 30) : actualMaxHealth
10. finalDamage = min(finalDamage, capHealth - 1)
The three layers are:
- Base damage -- how much HP per hit the player is expected to lose (
playerMaxHealth / 5). - Skill adjustment -- exponential scaling from the difference between the boss's level and the player's Armor Skill level.
- Gear adjustment -- damage-type-aware reduction based on the player's equipped armor and protection enchantments (see Gear Defense System below).
The one-shot cap uses actual maximum health minus 1 in ordinary combat. When [Alpha] Advanced Combat System is active, it first removes that mode's flat 30 HP increase from the cap. That extra health increases the player's health pool without increasing incoming base damage. The cap is applied inside the formula, before blocking and event listeners. Raw custom damage bypasses it, and an injured player can still die from a hit.
playerMaxHealth
With the default armor-health settings active, the health baseline is 20 HP plus 2 HP per Armor level above 1. Level 50 therefore gives 118 HP before other modifiers. The bonus can be disabled in skills.yml, and excluded worlds do not receive it. The baseline is fixed at 20 HP; there is no base-health setting in that file. When [Alpha] Advanced Combat System is enabled, its managed-combat-world rules also govern where the bonus applies.
baseDamage
The base damage is simply playerMaxHealth / 5.0. This is the amount of damage a properly geared, same-level player is expected to receive per hit. Unlike the old system, there is no pre-compensation -- the base value is the target damage, not an inflated raw value.
skillAdjustment
The skill adjustment uses exponential scaling to make the level difference between the boss and the player's Armor Skill meaningful:
skillAdjustment = 2 ^ ((bossLevel - armorSkillLevel) / 7.5)
Every 7.5 levels of difference doubles (or halves) the boss's effective damage. This is a slower curve than unclamped boss health, which doubles every 5 levels. The gear adjustment layer provides additional scaling.
| Level Difference | Skill Adjustment | Approximate Hits to Kill (matched gear) |
|---|---|---|
| Same level (0) | 1.0x | ~5 hits |
| +5 levels | ~1.6x | ~3 hits |
| +10 levels | ~2.5x | ~2 hits |
| +15 levels | 4.0x | ~1.25 hits |
Gear Defense System
The gear defense system replaces the old gear ramp. Instead of assuming a flat pre-compensation multiplier based on skill level, the system now reads the player's actual equipped gear and calculates a damage-type-aware gear reduction.
Damage Types
The system classifies incoming damage into five categories. The damage type determines which protection enchantments contribute to the gear score:
| Damage Type | Event Causes | Protection Enchantments Used |
|---|---|---|
| MELEE | Direct attack, sweep attack | Protection only |
| PROJECTILE | Arrows, fireballs | Protection + Projectile Protection |
| EXPLOSION | Creeper, ghast blast | Protection + Blast Protection |
| FIRE | Fire, fire tick | Protection + Fire Protection |
| OTHER | Everything else | Protection only |
Gear Score
The gear score combines armor level and enchantment bonuses into a single value that can be compared to the attacking mob's level:
gearScore = (sum of armorLevel for 4 armor slots) / 4
+ (sum of enchantBonus for all 6 slots) / 4
Armor level is determined per item:
- Elite items use
materialTier + 4 * eliteDefenseAttribute. Normally generated armor matches its intended level, but changing only its stored item-level tag does not change this defense. The elite material tiers are 3 for leather/gold/turtle, 5 for chainmail, 6 for iron, 7 for diamond and 8 for netherite. These differ from the vanilla lookup below. - Vanilla items use a material-based lookup:
| Material | Armor Level |
|---|---|
| Leather | 1 |
| Gold | 2 |
| Chainmail | 3 |
| Iron | 4 |
| Turtle Shell | 4 |
| Diamond | 5 |
| Netherite | 7 |
| Copper (server versions that have it) | 2 |
Only the 4 armor slots (helmet, chestplate, leggings, boots) contribute armor level.
Enchant bonus converts protection enchantment levels into armor-level-equivalent units:
enchantBonus = (general Protection level + type-specific Protection level) * (1/3)
All 6 equipment slots (4 armor + mainhand + offhand) contribute enchant bonus. This means shields or weapons with Protection enchantments provide additional defense. The /4 normalization on the sum means that having enchants on all 6 slots gives up to 50% more enchant contribution than having them on 4 armor pieces alone.
Worked example: Lv25 matched gear + Prot IV vs Lv25 (melee)
Player: armorSkillLevel=25, maxHP = 20 + 24*2 = 68
4 elite armor pieces each at armorLevel=25, each with Protection IV
Mob: level=25, melee attack
Step 1 -- Armor level per piece: 25 (material tier + 4 * elite defense attribute)
Step 2 -- Enchant bonus per piece: Protection IV = 4 * (1/3) = 1.333
(melee damage type, so only general Protection applies)
Step 3 -- Gear score:
armorLevelSum = 25*4 = 100, /4 = 25.0
enchantBonusSum = 1.333*4 = 5.333 (no mainhand/offhand enchants), /4 = 1.333
gearScore = 25.0 + 1.333 = 26.333
Step 4 -- Gear reduction (above matching):
reduction = 0.50 + (26.333 - 25) * 0.025 = 0.533 (53.3%)
Step 5 -- Gear adjustment: 2.0 * (1 - 0.533) = 0.933
Step 6 -- Final damage: baseDamage(13.6) * skillAdj(1.0) * gearAdj(0.933) = 12.69
Hits to kill: 68 / 12.69 = 5.36, approximately 5.4 hits
Worked example: Lv1 vanilla diamond vs Lv5 skeleton (projectile)
Player: armorSkillLevel=1, maxHP = 20
Full vanilla diamond armor (no enchants), no mainhand/offhand enchants
Mob: level=5, skeleton arrow (PROJECTILE damage type)
Step 1 -- Armor level per piece: 5 (vanilla diamond from lookup table)
Step 2 -- Enchant bonus: 0 (no enchants on any piece)
Step 3 -- Gear score: (5+5+5+5)/4 + 0/4 = 5.0
Step 4 -- Gear reduction (matching): 0.50 * (5/5) = 0.50 (50%)
Step 5 -- Gear adjustment: 2.0 * (1 - 0.50) = 1.0
Step 6 -- Final damage: baseDamage(4) * skillAdj(1.447) * gearAdj(1.0) = 5.79
Hits to kill: 20 / 5.79 = 3.45, approximately 3.5 hits
If the diamond armor also had Projectile Protection IV, each piece would gain an enchant bonus of 4 * (1/3) = 1.333. The gear score would rise to 5.0 + (1.333*4)/4 = 6.333, increasing reduction to 53.3% and noticeably improving survival against arrows.
Gear Reduction Curve
The gear reduction uses a two-part linear curve that transitions at the point where gear score equals mob level:
Below matching (gearScore is less than or equal to mobLevel):
reduction = 0.50 * (gearScore / mobLevel)
Scales linearly from 0% (naked) to 50% (matching). The slope depends on mob level -- against a level 5 mob each gear level gives 10% reduction, while against a level 50 mob each gives 1%. This naturally makes low-level vanilla armor effective against low-level mobs but irrelevant against high-level ones.
Above matching (gearScore is greater than mobLevel):
reduction = 0.50 + (gearScore - mobLevel) * 0.025
Flat 2.5% per gear level above mob. Reaches the 75% hard cap at +10 gear levels above the mob.
Gear adjustment converts the reduction into a damage multiplier:
gearAdjustment = 2.0 * (1 - gearReduction)
| Gear Situation | Gear Reduction | Gear Adjustment | Hits to Kill (same skill level) |
|---|---|---|---|
| Naked (no gear) | 0% | 2.0 | ~2.5 |
| Half-matching gear | 25% | 1.5 | ~3.3 |
| Matching gear (gearScore = mobLevel) | 50% | 1.0 | ~5.0 |
| +4 levels above mob | 60% | 0.8 | ~6.25 |
| +10 levels above mob (cap) | 75% | 0.5 | ~10.0 |
Scenario Table
The following hit counts assume full health with the ordinary 20 HP base plus armor-skill health, default damage multipliers, and no extra health, potions or skill bonuses. [Alpha] Advanced Combat System adds 30 HP without increasing incoming base damage, so players in that mode can take more hits.
| Scenario | Skill Adj | Gear Red | Gear Adj | Hits |
|---|---|---|---|---|
| Lv1 naked vs Lv1 | 1.0 | 0% | 2.0 | 2.5 |
| Lv1 naked vs Lv5 | 1.45 | 0% | 2.0 | ~1.7 |
| Lv1 vanilla diamond vs Lv5 | 1.45 | 50% | 1.0 | ~3.5 |
| Lv25 matched vs Lv25 | 1.0 | 50% | 1.0 | 5.0 |
| Lv25 matched+ProtIV vs Lv25 | 1.0 | 53.3% | 0.93 | 5.4 |
| Lv25 matched vs Lv30 | 1.59 | 41.7% | 1.17 | 2.7 |
| Lv25 peak gear vs Lv25 | 1.0 | 75% | 0.50 | 10.0 |
| Lv50 matched vs Lv50 | 1.0 | 50% | 1.0 | 5.0 |
Key design targets:
- 5 hits at matched level -- under the ordinary health baseline above, a properly geared, full-health player is defeated in approximately 5 normal hits from a same-level elite mob.
- 2.5 hits naked -- no gear means double damage via the 2.0 gear adjustment. Immediate incentive to equip any armor.
- Vanilla armor matters -- a level 1 player in diamond armor survives ~3.5 hits from a level 5 mob instead of ~1.7 naked.
- Enchants are meaningful but not dominant -- Protection IV on all 4 armor pieces adds ~1.33 to gear score, pushing from 50% to 53.3% reduction. Noticeable (~8% more survivability) but not game-breaking.
- Level-consistent baseline -- matched combat at levels 25 and 50 both target approximately 5 hits under those assumptions. [Alpha] Advanced Combat System's extra health changes the actual count.
- Peak gear cap at 10 hits -- even with the best possible gear (+10 levels above mob), players still take meaningful damage.
potionMultiplier (Defensive)
Incoming damage combines the attacking elite’s Strength/Weakness multiplier with the player’s Resistance reduction. The Resistance part is:
potionMultiplier = max(0, 1.0 - (resistanceAmplifier + 1) * resistanceDamageMultiplier)
The config key is resistanceDamageMultiplierV2 in MobCombatSettings.yml (default: 0.2). This matches vanilla behavior: Resistance I = 20% reduction, Resistance V = 100% reduction (immune).
customBossDamageMultiplier
This is the damage multiplier in the Custom Boss file. Defaults to 1.
configMultiplier (Defensive)
This is the multiplier in MobCombatSettings.yml. For normalized combat, it uses normalizedDamageToPlayerMultiplier (default 1.0). For scaled combat, it uses scaledDamageToPlayerMultiplier (default 1.0). For standard mobs, it uses damageToPlayerMultiplierV2 (default 1.0).
specialMultiplier
This is a multiplier submitted by a boss power for a particular damage call. The matching event consumes it once; unrelated or nested later hits do not inherit it. Its default is 1.0.
Explosion Damage Attenuation
Creeper damage is attenuated using the distance from the creeper and its explosion radius. The ghast branch currently measures distance from the ghast, using the fireball yield; it does not measure distance from the fireball impact. Both use max(0, 1 - distance / radius). The formula then floors the attenuated value at 1 before applying other multipliers, so distance attenuation alone does not guarantee zero damage.
Maximum health of Custom Bosses
The unclamped boss-health formula in EliteMobs 10 doubles every 5 levels. Actual health is limited by the Minecraft max-health ceiling, applied both before and after healthMultiplier, so that doubling stops when a health cap is reached.
The health formula for Custom Bosses is:
baseHealth = min(2.1875 * 2^(bossLevel / 5), minecraftMaxHealth)
health = max(1, min(baseHealth * customBossHealthMultiplier, minecraftMaxHealth))
Exponential Scaling
The base constant (2.1875) is tuned so that a level 25 boss has approximately 70 HP. Example health values (before the max-health ceiling described below):
| Boss Level | Formula Health | +5 Levels Health |
|---|---|---|
| 1 | ~2.5 | ~5 (2x) |
| 5 | ~4.4 | ~8.75 (2x) |
| 10 | ~8.75 | ~17.5 (2x) |
| 25 | ~70 | ~140 (2x) |
| 50 | ~2,240 | ~4,480 (2x) |
| 100 | ~2,293,760 | ~4,587,520 (2x) |
The Minecraft Max-Health Ceiling
Minecraft itself refuses to give an entity more health than settings.attribute.maxHealth.max in spigot.yml. EliteMobs reads that value at startup and, if it is below 2048, raises it to 2048 and saves the file. Call that value MAX.
The ceiling is applied twice -- once to the bare level formula, and again after healthMultiplier has been applied:
effectiveHealth = min( min(2.1875 * 2^(level / 5), MAX) * healthMultiplier, MAX )
The inner clamp is why even a healthMultiplier below 1.0 eventually stops scaling: the bare formula crosses 2048 at level 50 no matter what multiplier you use, and everything downstream is working from a pinned number after that. The outer clamp then bites earlier still for multipliers above 1.0.
On a default server (MAX = 2048):
| healthMultiplier | Typical use | HP stops growing at | Pinned at |
|---|---|---|---|
| 0.25 | Reinforcements | Level 50 | 512 HP |
| 0.7 | Trash pack | Level 50 | ~1,434 HP |
| 1.0 | Standard dungeon mob | Level 50 | 2,048 HP |
| 3.0 | Miniboss | Level 42 | 2,048 HP |
| 7.0 | Boss | Level 36 | 2,048 HP |
| 40.0 | World boss | Level 23 | 2,048 HP |
Above those levels the health pool is frozen: a level 60 world boss and a level 90 world boss have identical HP. The final health calculation logs a warning when multiplication exceeds the ceiling. The earlier base-health clamp is silent, so a missing warning does not prove the boss is below the ceiling. Use a positive finite healthMultiplier; invalid values fall back to 1.0.
If you are building content above roughly level 35 with large healthMultiplier values, raise settings.attribute.maxHealth.max in spigot.yml yourself. Otherwise your boss tiers flatten into each other -- the healthMultiplier values recommended later on this page stop differentiating encounters once every one of them clamps to the same number.
Player base damage uses the clamped level health divided by 3, so it also stops growing from mob level alone once the inner health cap is reached. Weapon, skill and other damage multipliers still apply. A large healthMultiplier loses its extra durability when the final boss health reaches the cap.
customBossHealthMultiplier
This is the multiplier in the Custom Boss file. Defaults to 1.
Damage dealt to Custom Bosses
Player damage uses multiplicative layers of exponential and linear scaling to keep combat consistent across levels while still letting different weapon families feel different. The formula separates player power into two independent axes -- weapon skill level (exponential skill adjustment) and weapon item level (linear weapon adjustment) -- so both skill investment and gear contribute to combat power.
The important change from older versions is that melee weapon speed no longer tries to make every weapon type have identical theoretical DPS. Swords remain the reference point, while axes, maces, and melee tridents receive damped burst compensation. Weapon families that already tested well, such as hoes and spears, keep the legacy attack-speed factor.
Damage Formula
The full player-to-elite damage formula is:
formulaDamage = baseDamage * attackSpeedFactor * skillAdjustment * weaponAdjustment * cooldownOrVelocity * sweepMultiplier * potionMultiplier * equipmentEnchantmentMultiplier * enchantmentMultiplier * arrowDamageMultiplier
finalDamage = roundToTwoDecimals(formulaDamage * damageModifier * combatMultiplier) * critMultiplier
damageAfterSkills = finalDamage * (1 + sum of every active skill bonus fraction)
Each component is described below. Skill bonuses run in a HIGH priority listener during the EliteMobs damage event; later listeners can still modify the result. See Skill Bonuses in the Damage Pipeline.
baseDamage
The base damage per hit is derived from the mob's normalized HP (at healthMultiplier=1.0) divided by the target number of hits to kill:
baseDamage = normalizedMobHP / 3.0
Where normalizedMobHP = min(2.1875 * 2^(mobLevel / 5), minecraftMaxHealth) (see the Maximum health of Custom Bosses section above). The constant 3.0 (TARGET_HITS_TO_KILL_MOB) means a matched player targets roughly 3 fully charged sword hits against a standard elite before extra modifiers and rounding.
These hit-count estimates assume matched gear and skills and enough room below the final health cap. For example, healthMultiplier: 2.0 gives twice the base health only while the multiplied result fits below the cap; it does not guarantee six sword hits at every level.
attackSpeedFactor
This is the melee attack-speed pacing layer. It starts from the old legacy factor:
legacyFactor = 1.6 / weaponAttackSpeed
The speed here is the weapon speed returned by EliteMobs; the live player attack-speed attribute is used separately for recharge timing. The reference speed of 1.6 is the sword attack speed. The final factor then depends on the weapon family:
Swords, hoes, spears, unknown melee, and bow/crossbow melee:
attackSpeedFactor = legacyFactor
Axes, maces, and melee tridents:
attackSpeedFactor = sqrt(legacyFactor)
Ranged projectile attacks:
attackSpeedFactor = 1.0
This means the system is not trying to make every melee weapon have identical DPS. Slow burst weapons still hit harder per swing, but axes, maces, and melee tridents no longer receive the full 1.6 / speed burst multiplier. Hoes and spears intentionally stay on the old factor because playtesting showed their pacing was already acceptable.
Examples at matched skill and weapon level:
| Weapon Type | Example Attack Speed | Factor | Formula Hits vs healthMultiplier: 1.0 |
|---|---|---|---|
| Sword | 1.6 | 1.00x | 3.0 |
| Axe | 1.0 | 1.26x | ~2.4 |
| Mace | 0.6 | 1.63x | ~1.8 |
| Hoe | 4.0 | 0.40x | 7.5 |
| Trident, melee | 1.1 | 1.21x | ~2.5 |
| Spear, example diamond | ~0.95 | ~1.68x | ~1.8 |
| Bow/crossbow projectile | N/A | 1.00x | projectile velocity decides charge |
For projectile attacks, including bows, crossbows, and thrown tridents, the melee attack-speed factor is not applied. Projectile charge/strength is represented by cooldownOrVelocity instead.
Note: Ranged-only weapons (bows, crossbows) used in melee are treated as unarmed strikes -- weapon level 0 and skill level 1, with a default attack speed of 4.0 (fist speed). This makes them very weak in melee, incentivizing players to use them at range.
skillAdjustment
Exponential scaling from the difference between the player's weapon skill level and the mob's level:
skillAdjustment = 2 ^ ((weaponSkillLevel - mobLevel) / 7.5)
Every 7.5 levels of difference doubles (or halves) player damage. This matches the defensive skill scaling rate used in boss-to-player damage, producing symmetric combat.
| Skill Difference | Skill Adjustment | Effect |
|---|---|---|
| -15 | 0.25x | Quarter damage |
| -7.5 | 0.50x | Half damage |
| 0 (matched) | 1.0x | Baseline |
| +7.5 | 2.0x | Double damage |
| +15 | 4.0x | Quadruple damage |
Boss HP is bounded by the server health ceiling, but the offensive skill adjustment is not clamped in the current code. In practice, very large level differences (beyond +/-22 levels) can produce extreme values, and skill level 100 is only a soft progression cap.
weaponAdjustment
A two-part linear curve based on the weapon's item level vs the mob's level. This mirrors the defensive gear reduction curve from the Gear Defense System.
The weapon uses its stored item level when available. Otherwise EliteMobs calculates a level from its damage and attack speed, with an armor-level fallback for low values. Vanilla weapons can therefore have a nonzero effective level. This differs from the armor-defense calculation above.
weaponAdjustment = 0.5 + bonus
Below matching (weaponLevel is less than or equal to mobLevel):
bonus = 0.50 * (weaponLevel / mobLevel)
Scales linearly from 0 (no weapon) to 0.50 (matching). With no weapon equipped, the adjustment is 0.50 (half damage).
Above matching (weaponLevel is greater than mobLevel):
bonus = 0.50 + (weaponLevel - mobLevel) * 0.025
bonus = min(bonus, 0.75)
Flat 2.5% per weapon level above mob, capped at 0.75 bonus. Requires +10 weapon levels above mob to hit cap.
| Weapon Scenario | Bonus | Weapon Adj | Effect on Hits |
|---|---|---|---|
| Weapon level 0 (isolating this adjustment) | 0.00 | 0.50 | 6 hits (2x slower) |
| Half-level weapon | 0.25 | 0.75 | 4 hits |
| Matching weapon (weaponLevel = mobLevel) | 0.50 | 1.00 | 3 hits (baseline) |
| +4 levels above mob | 0.60 | 1.10 | ~2.7 hits |
| +10 levels above mob (cap) | 0.75 | 1.25 | ~2.4 hits |
Actual bare-fist attacks also use skill level 1 and the unarmed attack-speed factor. The table isolates weapon adjustment while keeping the other sword-reference factors unchanged.
cooldownOrVelocity
For melee weapons, EliteMobs tracks game ticks since the previous primary melee hit and divides by the recharge window 20 / attackSpeed, capped at 1.0. Hits against non-elites also update this clock; empty swings do not. The first tracked hit is fully charged. The live player attack-speed attribute sets recharge timing, with an item-speed fallback when the attribute is unavailable, invalid, or still reports the unmodified 4.0 for a slower weapon. Bow/crossbow melee uses 4.0.
For ranged/projectile attacks (bows, crossbows, thrown tridents, and skill-spawned arrows), this is the normalized launch velocity. Full-draw bow velocity is approximately 3.0; the value is normalized to min(velocity / 3.0, 1.0), clamped to the [0, 1] range.
Weapon level, skill identity/level and critical-hit outcome are captured at launch for ordinary ranged attacks, including offhand bows/crossbows. Thrown tridents supply their own item level. Launch velocity is preferred; missing velocity metadata falls back to current velocity. Missing weapon/skill metadata falls back to level 0/1 and does not borrow the impact-time weapon skill. Other inputs, including the player's potions and six-slot damage-enchantment sum, are still read at impact.
sweepMultiplier
For ENTITY_SWEEP_ATTACK, the sweep multiplier is 0.25 and charge is treated as full without updating the primary-hit clock. Other inputs are evaluated for each target, including a separate critical roll, so the final result is not guaranteed to equal 25% of the primary target's damage:
sweepMultiplier = 0.25 (secondary sweep targets)
sweepMultiplier = 1.0 (primary target)
potionMultiplier (Offensive)
Strength and Weakness potion effects modify outgoing player damage:
potionMultiplier = 1.0 + strengthBonus - weaknessPenalty
Where strengthBonus = (strengthAmplifier + 1) * strengthDamageMultiplier and weaknessPenalty = (weaknessAmplifier + 1) * weaknessDamageMultiplier. Both config values default to 0.2 (Strength I = +20% damage, Weakness I = -20% damage in this EliteMobs formula). Equal levels of Strength and Weakness cancel exactly. The multiplier is floored at 0.
The config keys in MobCombatSettings.yml are:
| Key | Default | Description |
|---|---|---|
strengthDamageMultiplierV2 | 0.2 | Bonus damage per Strength level |
weaknessDamageMultiplierV2 | 0.2 | Damage penalty per Weakness level |
equipmentEnchantmentMultiplier
Sharpness and Power levels on the player's equipped items contribute a percentage damage bonus. Each level is worth 2.5%, and both enchantments are counted on every item:
perItemBonus = (Sharpness level + Power level) * 0.025
equipmentEnchantmentMultiplier = 1.0 + sum of perItemBonus across all six slots
The sum covers all six slots (4 armor + mainhand + offhand), so Sharpness on a shield or on armor also contributes. This is a separate layer from enchantmentMultiplier below, which only covers the mob-type enchantments (Smite, Bane of Arthropods).
enchantmentMultiplier
Smite and Bane of Arthropods enchantments provide a small damage bonus against their respective mob types, but only when useEliteEnchantments is disabled in ItemSettings.yml. When elite enchantments are enabled, this multiplier is always 1.0.
Only enchantment levels above vanilla maximum are counted (elite-only levels):
enchantmentMultiplier = 1.0 + eliteLevelsAboveVanillaMax * 0.025
Each elite-only enchantment level provides a 2.5% damage bonus. For example, Smite VIII (vanilla max is V) contributes 3 elite levels: 1.0 + 3 * 0.025 = 1.075. This branch reads the current mainhand, including on projectile impact. Its target checks cover Spider/Silverfish for Bane, and Zombie/Skeleton/Wither/SkeletonHorse/ZombieHorse/Zombified Piglin for Smite, including subtypes of those Java classes; it does not use a complete Minecraft mob-category tag.
arrowDamageMultiplier
Arrows spawned by weapon skill abilities (such as Multishot, Arrow Rain, etc.) carry a damage multiplier stored in the projectile's data container. This allows skill-generated arrows to deal reduced damage compared to a standard arrow hit. For normal player-fired arrows, this multiplier is 1.0.
Thorns Damage
When useEliteEnchantments is enabled, the THORNS damage-event branch uses the player-to-elite base damage rather than the full weapon formula. Only elite-only thorns levels above vanilla III count. This calculation does not itself schedule or guarantee a thorns proc.
eliteThornsLevel = totalThornsLevel - vanillaMaxThornsLevel (per armor piece, summed across all 4 pieces)
thornsDamage = baseDamage * eliteThornsLevel * 0.02
Each elite thorns level above vanilla max contributes 2% of the base damage. Vanilla Thorns III does not trigger elite thorns damage. For example, if all 4 armor pieces have Thorns V (2 elite levels each), the total elite thorns level is 8: baseDamage * 8 * 0.02 = 16% of the player-to-elite base damage per proc.
Standard/normalized combat uses the mob's actual level. Scaled combat uses the player's current weapon skill level and converts the result to the actual boss HP pool. Boss material modifiers, the combat multiplier and critical handling still follow this base calculation.
damageModifier
Boss-specific weapon-type damage modifier from the Custom Boss file (damageModifiers). This allows bosses to take more or less damage from specific weapon materials (e.g., a boss that is resistant to swords but weak to axes). Defaults to 1.0 for all weapon types not explicitly configured.
Melee looks up the current mainhand material. Projectile hits use a shooter material only when registered in EliteMobs' custom-projectile data; otherwise they use the default lookup. A captured projectile weapon level alone does not supply this material modifier.
combatMultiplier
Global multiplier from MobCombatSettings.yml (scaledDamageToEliteMultiplier, normalizedDamageToEliteMultiplier, or damageToEliteMobMultiplierV2 depending on the combat mode). Defaults to 1.0.
critMultiplier
Critical hits multiply final damage by 1.5x. Critical chance is summed across all six equipment slots (4 armor + mainhand + offhand) from the player's elite gear crit chance stats, then capped:
critChance = min(sum of all six slots, maximumCriticalStrikeChance)
maximumCriticalStrikeChance lives in MobCombatSettings.yml and defaults to 0.40 (40%). Without the cap, stacking crit chance across six slots can reach 100%, at which point every hit is a "critical" hit -- the crit stops reading as an event while still paying out the full 1.5x. Values above 0.5 are not recommended for that reason. The cap is clamped into the [0.0, 1.0] range regardless of what is configured.
Critical strikes are applied before the damage event fires, which keeps them a separate multiplicative step from the additive skill-bonus layer described below, so a large skill bonus can never swallow the crit.
Staff and wand damage
Staff fireballs, staff melee strikes and wand missiles from FMM magic weapons do not use the melee or bow formula above. When one hits an elite, EliteMobs calculates:
formulaLevel = scaled combat ? magicSkillLevel : mobLevel
magicDamage = baseDamage(formulaLevel)
* 2 ^ ((magicSkillLevel - formulaLevel) / 7.5)
* weaponAdjustment(itemLevel, formulaLevel)
* basePower * impactScale
* scaledCombatRescale
* damageModifier
* combatMultiplier
* (1 + 0.025 * (Sharpness + Power levels on the weapon))
magicSkillLevelis the Staves or Wands skill level, captured when the attack is cast (level 1 in skill-excluded worlds).baseDamage, the skill adjustment,weaponAdjustment,damageModifierandcombatMultiplierare the pieces described above.damageModifierlooks up the weapon's carrier material.basePoweris the FMM attack's configured power.impactScaleis 1 for a direct hit; a staff blast scales it from 1 at the center down to 0.35 at the edge.scaledCombatRescaleis 1 outside scaled combat. Under scaled combat it converts the result to the boss's actual HP pool, as in Damage (Player to Boss).- The critical roll is also captured at cast time; a critical hit multiplies the result by 1.5.
This path has no attack-speed, charge, sweep or potion factor. The hit then runs Staves or Wands skill bonuses as described in Skill Bonuses in the Damage Pipeline. Against a non-elite target, the hit deals FMM's standalone damage times the same Sharpness/Power factor.
Modifier Clamping
The offensive and defensive skill adjustments use 2 ^ (levelDifference / 7.5) without a multiplier clamp. The old getLevelModifierFromDifference helper and its 0.125/8.0 bounds are no longer present. Do not apply those limits to current combat calculations.
Boss HP instead follows the max-health ceiling described above. Level 100 is a soft XP cap and does not impose a hard bound on either skill adjustment.
The clamps that do bound skill-driven output are the crit chance cap and the two defensive reduction ceilings, all described in the next section.
Skill Bonuses in the Damage Pipeline
Everything above describes the bonus-free curves. A real player also has up to three active skill bonuses per weapon type, and those sit on top of the formula. If you balance an encounter against the curves alone you will consistently under-estimate how much damage players actually deal.
Skill bonus balance is split. The skillbonuses/*.yml files carry presentation (display name, description, unlock tier, bonus type, menu icon, lore templates) and the balance keys baseValue, scalingPerLevel, procChance, cooldownSeconds, maxStacks and stackBonus. Bonuses that consult their config use those values; the rest use hardcoded constants. A few (Harvester, Legion's Discipline, Depth Charge) clamp the configured value against an approved curve, so editing them can only nerf the bonus.
The shared configurable proc helper uses min(1, procChance + 0.002 * skillLevel). The cooldown helper floors cooldownSeconds * (1 - 0.005 * skillLevel) at half the configured value; callers commonly round to whole seconds with a one-second minimum. Bonuses with their own formulas can differ. See Skill Bonuses for the per-bonus breakdown.
Where the layer runs (offensive)
Ordinary offensive skill bonuses run during the EliteMobs event:
... formula → damageModifier × combatMultiplier → critical hit (×1.5)
→ EliteMobDamagedByPlayerEvent listeners run
→ HIGH-priority skill-bonus listener applies bonuses
→ remaining listeners can modify or cancel
→ final damage set
The critical multiplier is already present when the skill listener runs, so its additive multiplier preserves the crit. Custom/bypass player damage skips this ordinary weapon-skill listener to prevent recursive procs. A staff or wand's own hit is the exception: it is custom damage but still runs its Staves or Wands bonuses. Class abilities have their own rules.
Offensive bonuses stack additively
Each active bonus contributes only its bonus fraction, and those fractions are summed:
totalMultiplier = 1.0 + (m1 - 1.0) + (m2 - 1.0) + (m3 - 1.0) + ...
Three bonuses at 1.2x each therefore produce 1.6x, not the 1.73x that multiplicative compounding would give. This applies uniformly to every weapon type.
This is a change from the previous behaviour, where axes alone used a max-wins rule: only the single largest bonus applied, and any axe hit where a skill beat 1.5x silently discarded the critical strike entirely. Running one weapon family on a different stacking rule also made axe damage impossible to compare against everything else.
The same additive merge covers cross-skill debuffs read off the target rather than the attacker: Hunter's Mark, Death Mark, Judgment, Expose Weakness, Hex Brand and Unravel. A ready Riposte is separate: it directly multiplies the event damage, and the combined additive multiplier then multiplies that result.
Practical consequence: a player with three well-chosen offensive bonuses is realistically doing somewhere around 1.4x-2x the published curve before procs, and more when a cooldown ability lands. The "3 sword hits" design target describes a player with no bonuses selected.
Defensive bonuses have two ceilings
Armor skill bonuses reduce incoming damage, and unlike the offensive side they compose multiplicatively -- each one feeds the already-reduced damage through damage * (1 - reduction). That is why there are two separate limits:
| Limit | Value | Scope |
|---|---|---|
| Per-skill clamp | 80% | Bounds any single skill's reduction |
| Aggregate ceiling | 85% | Bounds every skill source combined, per hit |
The per-skill clamp on its own is not enough: three sources each sitting at 80% would multiply out to 0.2 x 0.2 x 0.2 = 99.2% total reduction -- effective immunity, with every individual clamp still intact.
The aggregate ceiling closes that. It is applied once, at the very end, by comparing the damage that entered the skill pipeline against the damage that came out and refusing to let the ratio fall below 1 - 0.85:
finalDamage = max(damageAfterSkills, incomingDamage * 0.15)
Working on the ratio rather than on a running sum of reductions is what makes it robust. The individual branches are differently shaped -- some multiply, some assign a value outright, some stack, some read config -- and the order and count of contributors are irrelevant to the result. A fully stacked defensive build always eats at least 15% of every incoming hit.
Full negation is deliberately outside the ceiling. Evasion, Last Stand, Spell Mirror, Death's Embrace, Divine Shield and Phoenix Mantle cancel the damage event rather than applying a partial reduction. The 85% floor covers this skill pipeline; it is not a floor on the original hit after potions, blocking, absorption and other event listeners.
Once combined reductions reach the aggregate ceiling, another reduction cannot lower that hit further.
Worked Examples
The examples below deliberately exclude skill bonuses so the underlying curve is visible. Add the additive skill multiplier from the previous section on top to get real-world numbers.
Example 1: Lv25 matched sword vs Lv25 elite (melee)
Player: weaponSkillLevel=25, weapon=elite sword (itemLevel=25)
Mob: level=25, healthMultiplier=1.0
Step 1 -- Base damage: mobHP(25) = 2.1875 * 2^5 = 70.0, baseDamage = 70.0/3 = 23.33
Step 2 -- Attack speed factor: sword speed=1.6, factor = 1.6/1.6 = 1.0
Step 3 -- Skill adjustment: 2^((25-25)/7.5) = 2^0 = 1.0
Step 4 -- Weapon adjustment: weaponLevel(25) == mobLevel(25), bonus=0.50, adj = 1.0
Step 5 -- Cooldown: full charge = 1.0
Step 6 -- Sweep: primary target = 1.0
formulaDamage = 23.33 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 = 23.33
Mob HP = 70.0 -> hits to kill = 70.0 / 23.33 = 3.0
Example 2: Lv25 axe vs Lv25 elite (damped burst compensation)
Player: weaponSkillLevel=25, weapon=elite axe (itemLevel=25)
Mob: level=25, healthMultiplier=1.0
Step 1 -- Base damage: 23.33 (same as above)
Step 2 -- Legacy attack speed factor: 1.6/1.0 = 1.6
Step 3 -- Axe burst damping: sqrt(1.6) = 1.265
Step 4 -- Skill adjustment: 1.0 (matched)
Step 5 -- Weapon adjustment: 1.0 (matched)
Step 6 -- Cooldown: full charge = 1.0
formulaDamage = 23.33 * 1.265 * 1.0 * 1.0 * 1.0 = 29.52
Hits to kill = 70.0 / 29.52 = 2.37
Example 3: Lv25 hoe vs Lv25 elite (legacy fast-weapon factor)
Player: weaponSkillLevel=25, weapon=elite hoe (itemLevel=25)
Mob: level=25, healthMultiplier=1.0
Step 1 -- Base damage: 23.33 (same as above)
Step 2 -- Attack speed factor: hoe speed=4.0, factor = 1.6/4.0 = 0.4
Step 3 -- Skill adjustment: 1.0 (matched)
Step 4 -- Weapon adjustment: 1.0 (matched)
Step 5 -- Cooldown: full charge = 1.0
formulaDamage = 23.33 * 0.4 * 1.0 * 1.0 * 1.0 = 9.33
Hits to kill = 70.0 / 9.33 = 7.5
Example 4: Lv20 bow vs Lv25 elite with healthMultiplier=2.0 (ranged, under-leveled)
Player: weaponSkillLevel=20, weapon=elite bow (itemLevel=20)
Mob: level=25, healthMultiplier=2.0, actual HP = 70.0 * 2 = 140.0
Step 1 -- Base damage: 23.33 (from normalized HP, NOT actual HP)
Step 2 -- Attack speed factor: ranged, N/A = 1.0
Step 3 -- Skill adjustment: 2^((20-25)/7.5) = 2^(-0.667) = 0.63
Step 4 -- Weapon adjustment: weaponLevel(20) < mobLevel(25), bonus = 0.5*(20/25) = 0.4, adj = 0.9
Step 5 -- Arrow velocity: full draw = 1.0
formulaDamage = 23.33 * 1.0 * 0.63 * 0.9 * 1.0 = 13.23
Hits to kill = 140.0 / 13.23 = 10.6 hits
(Under-leveled skill AND weapon, fighting a healthMultiplier=2.0 mob)
DamageBreakdown Debug Tool
Run /em debug as a player with elitemobs.debug to toggle combat diagnostics. Reproduce the hit and run the command again to stop. The formula, selected combat mode/config multiplier, blocking/bypass path and event result appear in chat and the server log. Search the log for [EM-Debug: and [EM-Damage:.
The separate internal DamageBreakdown helper used by development tools can output:
- A full formatted breakdown showing all levels, formula components, multipliers, and the final computed damage.
- A compact one-line summary for quick in-game reference.
- An expected vs actual comparison that flags discrepancies larger than 10%, useful for diagnosing plugin conflicts or misconfigured boss files.
Its reconstructed result is not an authoritative measurement of final applied damage: it floors formula damage at 1, omits the later skill multiplier from its calculation, and does not reproduce every scaled-combat rescale or listener change. A discrepancy alone does not prove a plugin conflict. Use the live diagnostic path and observed health change when investigating a real encounter.
Skill XP Progression
Weapon and armor skills level up by earning XP from killing elite mobs. The XP system uses cubic level requirements to create smooth progression with a soft cap beyond level 100.
XP from kills: mobLevel^2 is the starting value before boss multipliers, contribution shares, reward-level limits and perks. See Skill System.
XP to next level:
For levels 1 through 100:
xpToNextLevel = floor(8.5 * L^3)
For levels above 100 (soft cap):
xpToNextLevel = floor(floor(8.5 * L^3) * (1 + ((L - 100)^2 / 100)))
The soft cap multiplier is continuous at level 100 (multiplier = 1.0) and grows quadratically beyond it. At level 150, the multiplier is approximately 26x, making further progression nearly impossible. There is no hard level-100 maximum. Above it, the cubic requirement is multiplied by the quadratic soft-cap factor shown here.
Additional Combat Mechanics
One-Shot Kill Prevention
The ordinary boss-damage formula is capped at actual maximum health minus 1. With [Alpha] Advanced Combat System active, the cap is max(1, actualMaxHealth - 30) - 1, excluding only that mode's flat 30 HP increase. Other maximum-health modifiers still count. The cap uses maximum health rather than current HP, so an injured player can still die from one hit. Raw damage can bypass it, and event listeners can change the amount afterward.
Shield Blocking
For a non-projectile hit that reaches this handler while the player is blocking, EliteMobs reduces formula damage by 80% by default (blockingDamageReduction in MobCombatSettings.yml). Raw bypass damage replaces that reduced value. A blocked projectile is removed and the handler returns before applying the formula, but this branch does not itself cancel or zero the Bukkit damage event. Do not assume it guarantees immunity to every projectile or plugin-created hit.
Each handled block attempts 5 shield durability damage, with native Unbreaking reducing how often it applies. A shield in the mainhand is selected before one in the offhand.
Custom damage and absorption
Some boss powers submit raw damage. That replaces the ordinary formula result, including its one-shot cap and shield reduction, before the EliteMobs damage event runs. Defensive skill listeners can still reduce or cancel it. Conversely, player custom/bypass damage skips the ordinary weapon formula, boss material/global multipliers and weapon-skill procs. A captured magic-weapon crit or explicitly guaranteed class crit may still apply, and a staff or wand's own hit still runs its weapon bonuses (see Staff and wand damage).
After an ordinary elite-to-player event finishes, absorption is allocated against the final damage using the player's current absorption amount. Vanilla armor and resistance modifiers are cleared because the EliteMobs formula handles those reductions itself. The player-to-elite formula similarly clears native reductions, so boss armor is cosmetic for that path.
Rapid melee hits
The separate autoclicker throttle is enabled by default. More than 5 primary melee hits on elites in a sliding one-second window triggers a 5-second penalty on that path. These defaults are autoclickerThrottleMaxHitsPerSecond and autoclickerThrottlePenaltySeconds in MobCombatSettings.yml; autoclickerThrottleEnabled controls it. Empty clicks, sweeps, projectiles, thorns and custom/bypass hits do not count and do not pass through this penalty check. Reconnecting does not clear an active penalty.
Armor Skill Health Bonus
Players gain bonus maximum health based on their Armor Skill level. Each level above 1 grants +2 HP (+1 heart). This attribute modifier follows the skills.yml enable settings, excluded worlds and managed combat-world eligibility described above.
Level Scaling Summary
The following table summarizes level modifiers before health caps and other combat modifiers apply. The boss HP ratios stop holding once either health clamp is reached.
| Level Difference | Boss HP Modifier | Boss Damage Modifier | Difficulty |
|---|---|---|---|
| -10 (player overlevel) | 0.25x HP | ~0.4x damage | Trivial |
| -5 (player overlevel) | 0.5x HP | ~0.6x damage | Very Easy |
| 0 (same level) | 1.0x HP | 1.0x damage | Balanced |
| +5 (player underlevel) | 2.0x HP | ~1.6x damage | Challenging |
| +10 (player underlevel) | 4.0x HP | ~2.5x damage | Very Hard |
Scaled Combat
Scaled combat simulates the boss at the attacking player's weapon skill level or the defending player's armor skill level. This removes the boss's stored level from ordinary damage scaling. Gear, weapon family, bonuses, powers and health modifiers still make fights differ between players. It is useful for natural elites and selected event bosses; an event boss needs its own scaledCombat: true setting.
How Scaled Combat Differs from Normalized Combat
EliteMobs has three combat modes:
| Mode | Used For | Level Matters? | Config Key |
|---|---|---|---|
| Standard | Basic mobs without special flags | Yes -- damage and health scale with the mob's actual level | damageToEliteMobMultiplierV2 / damageToPlayerMultiplierV2 |
| Normalized | Dungeon and regional bosses (normalizedCombat: true) | Yes; the same core curves, with separate config multipliers | normalizedDamageToEliteMultiplier / normalizedDamageToPlayerMultiplier |
| Scaled | Natural overworld elites and event bosses (scaledCombat: true or global config) | No -- the boss is simulated at the player's level | scaledDamageToEliteMultiplier / scaledDamageToPlayerMultiplier |
Standard and normalized attacks both use the mob's actual level. Their current exponential health formula ignores the legacy normalizedBaselineDamageV3 and normalizedRegionalBossBaselineHealthV3 tuning values. Scaled attacks substitute a player skill level instead; the stored level still exists for other systems.
How It Works
Damage (Boss to Player)
When a scaled-combat boss damages a player, the damage formula sets the boss's level equal to the player's armor skill level:
mobLevel = armorSkillLevel (instead of the boss's actual level)
This means the skill adjustment becomes 1.0 (since bossLevel - armorSkillLevel = 0), and damage depends entirely on the player's gear and armor skill -- not on the mob's stored level. The remaining formula (base damage, gear adjustment, potions, etc.) works exactly the same as described in the sections above.
Damage (Player to Boss)
When a player attacks a scaled-combat boss, the formula:
- Simulates the boss at the player's weapon skill level -- temporarily treats the mob as if it were the same level as the player's weapon skill.
- Runs the standard damage formula against that simulated level, producing a "damage against a same-level mob" result.
- Rescales to the boss's actual HP -- converts the formula damage from a percentage of the simulated mob's HP to the same percentage of the boss's actual HP pool.
simulatedMobLevel = playerWeaponSkillLevel
formulaDamage = playerToEliteDamageFormula(player, eliteEntity at simulatedMobLevel)
simulatedMobHP = baseHPAtSimulatedLevel * bossHealthMultiplier
damagePercentage = formulaDamage / simulatedMobHP
actualDamage = damagePercentage * actualBossMaxHP
This removes the stored boss level from the percentage calculation. Boss health multipliers, weapon and skill modifiers, health caps and rounding still affect the resulting hit count. For healthMultiplier: 1.0, the reference is roughly 3 sword hits; other weapon families follow the attack-speed factor described above.
Loot and Rewards
The scaled reward resolver uses the player's combat level, not the mob's stored level. Normal loot, class loot, skill XP and bonus-coin paths use this level, then apply their own rules. Fixed custom items, explicitly authored rewards, chances, eligibility and level caps do not automatically disappear; see Loot tables and Skill System.
Level Display
Scaled-combat entities display a symbol instead of a numeric level in their nameplate, since their actual level is irrelevant to the player:
- Standard scaled entities (healthMultiplier 1.0 or less): displays a sword symbol (default:
「⚔」) - High-threat scaled entities (healthMultiplier above 1.0): displays a skull symbol (default:
☠)
These symbols can be customized in MobCombatSettings.yml via scaledStandardLevelSymbol and scaledHighThreatLevelSymbol.
Enabling Scaled Combat
For All Natural Elites (Global Config)
In MobCombatSettings.yml:
useScaledCombatForNaturalElites: true
This is enabled by default and applies to natural elites in eligible worlds, not only the Overworld dimension. Natural elites in worlds using useDistanceBasedNaturalEliteLevels instead use their actual level, even when this toggle is true. Dungeon bosses using normalizedCombat are unaffected, and custom/event bosses do not inherit it merely because they spawn outdoors.
For Individual Custom Bosses
In a Custom Boss configuration file:
scaledCombat: true
This forces a specific custom boss to use scaled combat regardless of the global setting. Useful for event bosses or custom overworld encounters that should feel equally fair for all players.
Note: If a boss has normalizedCombat: true (or is a regional/instanced boss with normalization enabled globally), normalized combat takes priority and the boss will not use scaled combat -- unless scaledCombat: true is explicitly set in the boss file, in which case scaled combat wins.
Config Keys
The following MobCombatSettings.yml keys control scaled combat behavior:
| Key | Default | Description |
|---|---|---|
useScaledCombatForNaturalElites | true | Enable scaled combat for natural elites except those using distance-based levels |
scaledDamageToEliteMultiplier | 1.0 | Global multiplier for player damage to scaled-combat bosses |
scaledDamageToPlayerMultiplier | 1.0 | Global multiplier for scaled-combat boss damage to players |
scaledStandardLevelSymbol | 「⚔」 | Symbol shown in nameplate for standard scaled entities |
scaledHighThreatLevelSymbol | ☠ | Symbol shown for scaled entities with healthMultiplier above 1.0 |
useRecommendedHealthScaling | true | Use EliteMobs 10 exponential health scaling for natural elites (false = legacy linear values, see below) |
When to Use Each Combat Mode
- Normalized combat (
normalizedCombat: true): For dungeons, instances, and regional bosses where you want precise control over difficulty and the boss has a fixed level that players are expected to match. - Scaled combat (
scaledCombat: trueor global setting): For content where ordinary attacks should simulate matched skill levels. Gear and abilities still affect difficulty. - Standard combat (neither flag): For mobs where the raw level should directly determine difficulty, such as distance-scaled elites near spawn.
Legacy Health Scaling (useRecommendedHealthScaling: false)
When useRecommendedHealthScaling is set to false in MobCombatSettings.yml, natural elite mobs (not dungeon or regional bosses) use a simplified legacy formula instead of the exponential scaling:
baseDamage = level * 2
mobHealth = baseDamage * 3 (TARGET_HITS_TO_KILL_MOB)
Here level is at least 1. The formula replaces natural-elite health and the base player damage against those elites; it does not replace the armor-skill formula for damage to players. It produces linear values closer to EliteMobs 9, which are larger than the exponential values at some low levels and much smaller at high levels. Final entity health still has its health multiplier and server ceiling. Custom regional bosses are unaffected.
Using this data for dungeons
NOTE: THIS ASSUMES YOU'RE USING THE normalizedCombat VALUES! Those values were specifically made for balancing dungeons more easily.
Part of a boss' difficulty is making it have the appropriate health and damage for the encounter. However, keep in mind that this is only a part of it, and that powers are just as important.
The following is presented in the correct format for the Custom Boss file.
The easy quick maths
With the exponential scaling system, healthMultiplier and damageMultiplier directly scale the base values:
-
A
healthMultiplierof 1.0 means the boss takes roughly 3 sword hits to kill by a same-level player. Other melee weapons vary by attack-speed factor: damped burst weapons such as axes, maces, and melee tridents take fewer hits than swords, while hoes take more hits because they keep the legacy fast-weapon factor. A multiplier of 2.0 doubles the health, 0.5 halves it, and so on. -
A
damageMultiplierof 1.0 means the boss kills a properly geared same-level player in roughly 5 hits. Higher multipliers make the boss deadlier, lower multipliers make it safer.
These hit-count estimates assume matched gear and skills and enough room below the final health cap. For example, healthMultiplier: 2.0 gives twice the base health only while the multiplied result fits below the cap; it does not guarantee six sword hits at every level.
Keep in mind that players tend to prioritize weapons, and often end up with much worse armor than weapons. Unless you design very specific types of arenas with range combat, you probably don't want to deal a lot of damage per hit. Playtest your content!
These hit counts also exclude:
- Skill bonuses. Every count above assumes zero active bonuses. A player running three offensive bonuses kills noticeably faster, and a player running three defensive ones survives noticeably longer (up to the 85% aggregate ceiling). Treat the numbers as a floor for player power, not a prediction.
- Advanced Combat health. Its extra 30 HP increases player survival without increasing incoming base damage.
- The max-health ceiling. Above the levels listed in The Minecraft Max-Health Ceiling,
healthMultiplierstops increasing HP at all. The world-boss preset in particular clamps from level 23 on a default server.
Creating an average dungeon mob
With the scaling of normalizedCombat, you can apply a very minimalistic configuration:
normalizedCombat: true
healthMultiplier: 1.0 #~3 sword hits to slay
damageMultiplier: 1.0 #survives ~5 hits
The two multipliers default to 1.0 and can be omitted. Keep normalizedCombat: true unless the boss is already normalized by its regional, instanced or arena setup.
Creating trash packs
Trash packs are numerous but not very dangerous:
normalizedCombat: true
healthMultiplier: 0.7 #~2 sword hits to slay
damageMultiplier: 0.5 #survives ~10 hits
Creating reinforcements
Reinforcements should die very easily, but pose a danger damage-wise (these values recommended for 4+ melee entities, actual use may vary):
normalizedCombat: true
healthMultiplier: 0.25 #~1 sword hit to slay
damageMultiplier: 0.6 #survives ~8 hits
Creating minibosses
Minibosses should hold their ground, and pose a mechanic challenge to players. It should be a test of skill that lasts for a little while, but not something extremely deadly:
normalizedCombat: true
healthMultiplier: 3.0 #~9 sword hits to slay
damageMultiplier: 1.2 #survives ~4 hits
Creating bosses
Bosses are a real challenge, the conclusion of a buildup in a dungeon and a real test of skill with everything on the line. Encounters should be long and death should be a present threat.
normalizedCombat: true
healthMultiplier: 7.0 #~21 sword hits to slay
damageMultiplier: 1.4 #survives ~3.5 hits
Creating World Bosses
World bosses are dangerous, but most of all they have a lot of health and summon a lot of reinforcements / have a lot of area of effect attacks. These are meant to be fought by large groups of players over the longest amount of time an elite encounter should last. They aren't very deadly, but have a lot of mechanics that can overwhelm under prepared players.
normalizedCombat: true
healthMultiplier: 40.0 #~120 sword hits to slay
damageMultiplier: 1.5 #survives ~3 hits
These are just rough recommended values and any final values should be adjusted around the encounters themselves.