Skip to content

Mob Overrides

DepthDrako edited this page Jun 25, 2026 · 2 revisions

Mob Overrides

Mob overrides allow you to customize leveling behavior for specific mob types within structure or biome rules. This gives you fine-grained control over individual mobs.

Location

Mob overrides are nested inside structure or biome rule files:

{
  "structure": "minecraft:stronghold",
  "mob_overrides": {
    "minecraft:zombie": {
      // Override settings for zombies
    },
    "minecraft:skeleton": {
      // Override settings for skeletons
    }
  }
}

Field Reference

Field Type Default Description
fixed_level Integer null Exact level for this mob type
level_bonus Integer null Add to calculated level
min_level Integer null Minimum level for this mob
max_level Integer null Maximum level for this mob
level_range Object null Alternative way to set min/max
ignore_level_cap Boolean false Bypass global level cap
can_attack Boolean null Enable combat for passive mobs
attribute_multipliers Object {} Multiply attribute bonuses
attribute_scaling Object {} Custom attribute scaling

Basic Usage

Fixed Level Override

Give zombies in strongholds a fixed level of 200:

{
  "structure": "minecraft:stronghold",
  "mob_overrides": {
    "minecraft:zombie": {
      "fixed_level": 200
    }
  }
}

Level Bonus

level_bonus adds levels on top of whatever the rule calculates (distance, random, or fixed). The base level is worked out and clamped to the rule's level_range first, then the bonus is added — so the bonus genuinely stacks instead of being swallowed by max_level.

{
  "structure": "minecraft:stronghold",
  "level_mode": "random",
  "level_range": {
    "min": 50,
    "max": 100
  },
  "mob_overrides": {
    "minecraft:skeleton": {
      "level_bonus": 50,
      "ignore_level_cap": true
    }
  }
}

A skeleton that would be level 75 becomes level 125.

⚠️ The global level cap still applies. The result of level_bonus is clamped to globalLevelCap (config, default 100) unless you set "ignore_level_cap": true on the override (as above) or raise globalLevelCap. Without one of those, 75 + 50 is capped back down to 100. This is the most common reason a level_bonus "doesn't seem to do anything."

Custom Level Range

Restrict specific mobs to a different level range:

{
  "biome": "minecraft:desert",
  "level_range": {
    "min": 10,
    "max": 50
  },
  "mob_overrides": {
    "minecraft:husk": {
      "level_range": {
        "min": 80,
        "max": 120
      }
    }
  }
}

Or use individual fields:

{
  "mob_overrides": {
    "minecraft:husk": {
      "min_level": 80,
      "max_level": 120
    }
  }
}

Bypassing Level Cap

By default, all levels are capped by globalLevelCap in the config. Override this per-mob:

{
  "mob_overrides": {
    "minecraft:warden": {
      "fixed_level": 9999,
      "ignore_level_cap": true
    }
  }
}

Scaling Specific Mobs Harder Than the Rest

A very common goal: "keep normal distance scaling for everything, but make certain modded mobs/bosses much stronger — without buffing weak mobs too."

Don't crank the shared rule's numbers (that buffs everything). Instead attach a per-mob override to a catch-all base rule (or a biome/dimension rule) and give just those mobs a level_bonus plus a steeper attribute_scaling. The override can also widen its own max_level so the bonus isn't clamped by the parent rule's range — only the listed mob is affected.

// data/<your_pack>/data/botzmobleveling/mob_levels/base/cata_bosses.json
{
  "priority": 50,
  "enabled": true,
  "level_mode": "distance",
  "level_range": { "min": 1, "max": 100 },

  "mob_overrides": {
    "cataclysm:ignis": {
      "level_bonus": 50,
      "max_level": 300,
      "ignore_level_cap": true,
      "attribute_scaling": {
        "minecraft:generic.max_health": {
          "base_bonus": 0.0,
          "per_level": 0.06,
          "operation": "multiply_base"
        },
        "minecraft:generic.attack_damage": {
          "base_bonus": 0.0,
          "per_level": 0.04,
          "operation": "multiply_base"
        }
      }
    }
  }
}

What this does:

  • Every overworld mob still levels by distance, 1–100, with the normal scaling.
  • Only cataclysm:ignis gets its level pushed +50 above the surrounding mobs, can climb past 100 (its own max_level is 300, and ignore_level_cap lets it bypass the global cap), and uses a stronger percentage-based health/damage curve.
  • No other mob is touched.

Note for altar-/ritual-summoned mobs (e.g. Cataclysm bosses): these don't spawn as part of a structure, so a structures filter (in either a structure rule or a boss rule) will never match them — the mob isn't standing inside a registered structure piece when it appears. Use a base/biome/dimension rule with a mob_overrides entry (like above) for guaranteed, location-independent scaling, rather than a structure rule.

Passive Mob Combat

Enable passive mobs to fight back when attacked:

{
  "structure": "minecraft:stronghold",
  "mob_overrides": {
    "minecraft:chicken": {
      "fixed_level": 500,
      "can_attack": true
    }
  }
}

Combat Behavior

When can_attack is enabled:

  1. The passive mob gains melee attack AI
  2. When attacked, it will target the attacker
  3. Attack damage scales with level
  4. The mob remembers who hurt it

Combat Values

Value Behavior
true Mob can attack when provoked
false Mob cannot attack (even if config enables it)
null (default) Use global config setting

Global config setting: leveledPassivesCanAttack

Attribute Overrides

Attribute Multipliers

Multiply the base attribute bonuses for specific mobs:

{
  "mob_overrides": {
    "minecraft:zombie": {
      "attribute_multipliers": {
        "minecraft:generic.max_health": 2.0,
        "minecraft:generic.attack_damage": 1.5
      }
    }
  }
}

This multiplies the bonuses from the parent rule's attribute_scaling.

Custom Attribute Scaling

Completely override attribute scaling for specific mobs:

{
  "mob_overrides": {
    "minecraft:skeleton": {
      "attribute_scaling": {
        "minecraft:generic.max_health": {
          "base_bonus": 100.0,
          "per_level": 2.0,
          "operation": "addition",
          "max_bonus": 1000.0
        },
        "minecraft:generic.attack_damage": {
          "base_bonus": 5.0,
          "per_level": 0.1,
          "operation": "addition"
        }
      }
    }
  }
}

Complete Examples

Dungeon Elite Zombies

{
  "structure": "minecraft:stronghold",
  "priority": 100,
  "level_mode": "random",
  "level_range": {
    "min": 50,
    "max": 100
  },
  "mob_overrides": {
    "minecraft:zombie": {
      "fixed_level": 200,
      "ignore_level_cap": true,
      "attribute_scaling": {
        "minecraft:generic.max_health": {
          "base_bonus": 200.0,
          "per_level": 1.0,
          "operation": "addition"
        },
        "minecraft:generic.attack_damage": {
          "base_bonus": 10.0,
          "per_level": 0.2,
          "operation": "addition"
        },
        "minecraft:generic.armor": {
          "base_bonus": 10.0,
          "per_level": 0.1,
          "operation": "addition"
        }
      }
    }
  }
}

Aggressive Farm Animals

{
  "structure": "minecraft:village_plains",
  "priority": 80,
  "mob_overrides": {
    "minecraft:chicken": {
      "fixed_level": 50,
      "can_attack": true,
      "attribute_scaling": {
        "minecraft:generic.attack_damage": {
          "base_bonus": 2.0,
          "per_level": 0.1,
          "operation": "addition"
        }
      }
    },
    "minecraft:cow": {
      "fixed_level": 75,
      "can_attack": true,
      "attribute_scaling": {
        "minecraft:generic.attack_damage": {
          "base_bonus": 4.0,
          "per_level": 0.2,
          "operation": "addition"
        }
      }
    },
    "minecraft:pig": {
      "fixed_level": 60,
      "can_attack": true
    }
  }
}

Tiered Nether Difficulty

{
  "biome_tags": ["minecraft:is_nether"],
  "priority": 60,
  "level_mode": "distance",
  "level_range": {
    "min": 30,
    "max": 100
  },
  "mob_overrides": {
    "minecraft:blaze": {
      "level_bonus": 20,
      "attribute_multipliers": {
        "minecraft:generic.max_health": 1.5
      }
    },
    "minecraft:wither_skeleton": {
      "level_bonus": 30,
      "attribute_multipliers": {
        "minecraft:generic.max_health": 2.0,
        "minecraft:generic.attack_damage": 1.5
      }
    },
    "minecraft:ghast": {
      "fixed_level": 150,
      "ignore_level_cap": true
    }
  }
}

Special Considerations

Passive Mobs in Structures

By default, passive mobs don't receive levels. To level passive mobs:

  1. Add them to mob_overrides
  2. The presence in mob_overrides allows them to be leveled
  3. Only mobs explicitly listed will be affected
{
  "structure": "minecraft:stronghold",
  "mob_overrides": {
    "minecraft:chicken": {
      "fixed_level": 100
    }
  }
}

Important: Without an explicit mob_overrides entry, passive mobs remain level 0.

Override Priority

  1. Mob override fixed_level takes absolute priority (skips range + bonus)
  2. Mob override level range overrides the parent range
  3. The base level is calculated and clamped to the range
  4. level_bonus is then added on top of the clamped level
  5. The global level cap is applied last (unless ignore_level_cap is set)
  6. attribute_scaling replaces parent scaling; attribute_multipliers multiply it

Tips

  1. Use fixed levels for signature mobs in dungeons
  2. Use level_bonus for slight variations
  3. Enable can_attack sparingly for surprise difficulty
  4. Attribute multipliers are simpler than full scaling
  5. Test with debug mode to verify correct application

Clone this wiki locally