Skip to content

Attribute Scaling

DepthDrako edited this page Jun 25, 2026 · 2 revisions

Attribute Scaling

Attribute scaling determines how mob stats increase with level. This system allows precise control over health, damage, speed, and other attributes.

Location

Attribute scaling is defined inside structure, biome, or mob override blocks:

{
  "structure": "minecraft:stronghold",
  "attribute_scaling": {
    "minecraft:generic.max_health": {
      "base_bonus": 10.0,
      "per_level": 0.5,
      "operation": "addition"
    }
  }
}

Field Reference

Field Type Default Description
base_bonus Double 0.0 Flat bonus applied at level 1
per_level Double 0.0 Bonus added per level
operation String "addition" How the bonus is applied
max_bonus Double null Maximum total bonus (optional)

Operations

Addition

Adds the calculated bonus directly to the attribute:

final_value = base_value + bonus

Example: A zombie with 20 HP at level 50:

{
  "minecraft:generic.max_health": {
    "base_bonus": 10.0,
    "per_level": 0.5,
    "operation": "addition"
  }
}

Bonus = 10 + (0.5 × 50) = 35 Final HP = 20 + 35 = 55 HP

Multiply Base

Multiplies the base attribute value:

final_value = base_value × (1 + bonus)

Example: A zombie with 3 attack damage at level 50:

{
  "minecraft:generic.attack_damage": {
    "base_bonus": 0.0,
    "per_level": 0.02,
    "operation": "multiply_base"
  }
}

Bonus = 0 + (0.02 × 50) = 1.0 Final damage = 3 × (1 + 1.0) = 6 damage

Multiply Total

Multiplies after all other modifiers:

final_value = (base_value + additions) × (1 + bonus)

Useful for percentage-based scaling that stacks with other effects.

Additive vs Percentage: Picking the Right Operation

This is the single most important decision when tuning scaling, especially in modpacks with high-HP modded mobs and bosses.

addition adds a flat amount that ignores the mob's base stat. A rule of +2 HP per level gives every mob the same bonus:

Mob Base HP At level 68 (+136 HP) Result
Zombie 20 +136 156 HP (×7.8 — brutal)
Modded boss 350 +136 486 HP (×1.4 — barely noticeable)

The same number is overpowering for weak mobs and trivial for tanky ones. You cannot tune a flat health bonus that feels right for both vanilla mobs and modded bosses at once — this is the classic "my big boss barely scaled" problem.

multiply_base scales relative to each mob's own base stat, so every mob gets proportionally stronger:

Mob Base HP At level 68 (+4%/level = ×3.72 bonus) Result
Zombie 20 ×4.72 total ~94 HP
Modded boss 350 ×4.72 total ~1652 HP

Both stay threatening at their own scale. For max_health and attack_damage, prefer multiply_base — this is what the bundled example datapack now uses (+4%/level health, +3%/level damage).

Keep addition for stats whose base value is often 0armor, armor_toughness, knockback_resistance, attack_knockback. multiply_base of 0 is always 0, so a percentage does nothing for these. Movement speed is also usually left additive (small steps) to avoid runaway speeds.

Want one mob to scale harder than the rest? Don't crank the shared rule — that buffs everything. Put a stronger attribute_scaling block (or attribute_multipliers) inside a per-mob mob_overrides entry. See "Scaling specific mobs harder than the rest" on that page.

Supported Attributes

Vanilla Attributes

Attribute ID Description Base Value (Zombie)
minecraft:generic.max_health Maximum HP 20.0
minecraft:generic.attack_damage Melee damage 3.0
minecraft:generic.armor Damage reduction 0.0
minecraft:generic.armor_toughness Armor effectiveness 0.0
minecraft:generic.knockback_resistance Knockback reduction (0-1) 0.0
minecraft:generic.movement_speed Movement speed 0.23
minecraft:generic.follow_range Detection range 35.0
minecraft:generic.attack_knockback Knockback dealt 0.0
minecraft:generic.attack_speed Attack cooldown 4.0

Modded Attributes

You can use any modded attribute if it's registered properly:

{
  "some_mod:custom_attribute": {
    "base_bonus": 10.0,
    "per_level": 1.0,
    "operation": "addition"
  }
}

Calculation Examples

Health Scaling

Goal: Double health every 100 levels

{
  "minecraft:generic.max_health": {
    "base_bonus": 0.0,
    "per_level": 0.01,
    "operation": "multiply_base"
  }
}
Level Multiplier Zombie HP
1 1.01 20.2
50 1.50 30.0
100 2.00 40.0
200 3.00 60.0

Flat Health Bonus

Goal: +5 HP per level

{
  "minecraft:generic.max_health": {
    "base_bonus": 0.0,
    "per_level": 5.0,
    "operation": "addition"
  }
}
Level Bonus Zombie HP
1 5 25
10 50 70
50 250 270
100 500 520

Capped Scaling

Goal: Scale damage but cap at +20

{
  "minecraft:generic.attack_damage": {
    "base_bonus": 2.0,
    "per_level": 0.5,
    "operation": "addition",
    "max_bonus": 20.0
  }
}
Level Calculated Capped Zombie Damage
1 2.5 2.5 5.5
20 12.0 12.0 15.0
36 20.0 20.0 23.0
100 52.0 20.0 23.0

Complete Examples

Balanced Dungeon Scaling

Moderate scaling across all stats:

{
  "attribute_scaling": {
    "minecraft:generic.max_health": {
      "base_bonus": 20.0,
      "per_level": 1.0,
      "operation": "addition",
      "max_bonus": 500.0
    },
    "minecraft:generic.attack_damage": {
      "base_bonus": 0.0,
      "per_level": 0.02,
      "operation": "multiply_base",
      "max_bonus": 5.0
    },
    "minecraft:generic.armor": {
      "base_bonus": 2.0,
      "per_level": 0.1,
      "operation": "addition",
      "max_bonus": 20.0
    },
    "minecraft:generic.movement_speed": {
      "base_bonus": 0.0,
      "per_level": 0.001,
      "operation": "multiply_base",
      "max_bonus": 0.5
    }
  }
}

Tank Mobs

High health, low damage, slow movement:

{
  "attribute_scaling": {
    "minecraft:generic.max_health": {
      "base_bonus": 100.0,
      "per_level": 5.0,
      "operation": "addition"
    },
    "minecraft:generic.attack_damage": {
      "base_bonus": 0.0,
      "per_level": 0.01,
      "operation": "multiply_base"
    },
    "minecraft:generic.armor": {
      "base_bonus": 10.0,
      "per_level": 0.5,
      "operation": "addition"
    },
    "minecraft:generic.knockback_resistance": {
      "base_bonus": 0.5,
      "per_level": 0.005,
      "operation": "addition",
      "max_bonus": 1.0
    },
    "minecraft:generic.movement_speed": {
      "base_bonus": -0.05,
      "per_level": 0.0,
      "operation": "addition"
    }
  }
}

Glass Cannon Mobs

High damage, low health:

{
  "attribute_scaling": {
    "minecraft:generic.max_health": {
      "base_bonus": 0.0,
      "per_level": 0.1,
      "operation": "addition"
    },
    "minecraft:generic.attack_damage": {
      "base_bonus": 5.0,
      "per_level": 0.1,
      "operation": "multiply_base"
    },
    "minecraft:generic.movement_speed": {
      "base_bonus": 0.0,
      "per_level": 0.005,
      "operation": "multiply_base",
      "max_bonus": 1.0
    },
    "minecraft:generic.attack_speed": {
      "base_bonus": 0.0,
      "per_level": 0.02,
      "operation": "multiply_base"
    }
  }
}

Speedster Mobs

Very fast, moderate stats:

{
  "attribute_scaling": {
    "minecraft:generic.max_health": {
      "base_bonus": 0.0,
      "per_level": 0.5,
      "operation": "addition"
    },
    "minecraft:generic.attack_damage": {
      "base_bonus": 0.0,
      "per_level": 0.03,
      "operation": "multiply_base"
    },
    "minecraft:generic.movement_speed": {
      "base_bonus": 0.1,
      "per_level": 0.01,
      "operation": "multiply_base",
      "max_bonus": 2.0
    },
    "minecraft:generic.follow_range": {
      "base_bonus": 10.0,
      "per_level": 0.5,
      "operation": "addition",
      "max_bonus": 100.0
    }
  }
}

Config Whitelist

The mod only modifies attributes listed in the config whitelist:

[attributes]
allowedAttributes = [
    "minecraft:generic.max_health",
    "minecraft:generic.attack_damage",
    "minecraft:generic.armor",
    "minecraft:generic.armor_toughness",
    "minecraft:generic.knockback_resistance",
    "minecraft:generic.movement_speed",
    "minecraft:generic.follow_range",
    "minecraft:generic.attack_knockback",
    "minecraft:generic.attack_speed"
]

Add modded attributes here to enable scaling.

Tips

  1. Use max_bonus to prevent scaling from getting out of control
  2. Test at different levels - what works at level 10 may break at level 500
  3. Balance health and damage - too much of either makes combat unfun
  4. Consider knockback resistance - high-level mobs should be harder to cheese
  5. Movement speed caps - values above 2.0 can cause issues
  6. Start conservative - it's easier to buff than to nerf

Clone this wiki locally