Skip to main content
A natural spawn rule puts mobs wherever the world suits them, rather than at a placed spawner. It is the equivalent of MythicMobs’ RandomSpawns, built here as an effect type: a rule is an effect triggered by the world looking right. Rules live in Mobs/, anywhere (beside the mob they spawn is a good place), and say so with type: spawn:
Without type: spawn the entry would be read as a skill, so the type: is what makes it a rule.

Fields

Keys are case-insensitive and - and _ are interchangeable.

Caps

max-per-chunk is a clumping limit, not a population limit. A chunk is 16x16, so a rule that suits a whole biome spawns up to that many in every chunk of it — it reads like a ceiling and behaves like a density floor. If you have far too many of something, max-nearby is almost always the knob you want. The loader warns when max-per-chunk is a rule’s only cap.
max-nearby and max-per-chunk are counted off the mobs actually standing there, so they hold exactly, restarts included. max-per-world and max-per-player are counted from what the server has loaded, so they cannot see mobs in chunks nobody has visited this session — treat those two as a brake on runaway spawning rather than exact accounting.

Server-wide defaults

Any cap a rule does not name falls back to config.yml, so you can tune density for a pack of rules somebody else wrote without editing their files:
A rule that names a cap always wins. 0 means no ceiling.

Conditions

cond: is the ordinary condition language, so everything that works in an if{} line works here, including any condition an addon registered.
The place-shaped conditions (isBiome, isBlock, isWorldType, isSpawnable, lightLevel and the rest) are listed under Place. The numbers light, blocklight, skylight, y, daytime, moonphase and spawndistance compare directly: light <= 7.
A rule’s conditions are evaluated about a place, before anything is spawned, so there is no caster. A condition that reaches for one simply never passes here.
A rule whose cond: cannot be parsed loads disabled rather than being skipped, for the same reason a spawner’s does: a gate that quietly disappears is worse than no rule at all.

How the scan works

The scan is anchored to players, not to the world: for each player online it tries a handful of candidate points in a shell around them, walking down from near their Y so caves and surface both get looked at. That means the cost scales with how many people are online, not with world size — an empty server does nothing at all. Chunks are never force-loaded.
attempts-per-player is the whole cost of the system: raise it for denser spawning, lower it on a busy server. Each rule’s own rate and caps still apply on top.

Replacing vanilla spawns

replaces: hooks natural vanilla spawning: whenever the server would have spawned one of those, your mob appears instead. suppress-original: true means the vanilla mob never appears even when your rule declines.
A rule with replaces: is driven by vanilla spawning alone and is skipped by the player scan. The two are alternatives, not additions — a rule doing both would spawn twice over from two unrelated clocks. If you want both, that is a rule each.
Suppressing a whole vanilla mob type leaves room in the server’s own budget for that category, so expect somewhat more of the other mobs in it rather than a quieter world.

Driving them

/le spawnrule: list, info, test, trigger, enable, disable, reset. test tells you, where you are standing, whether each rule would spawn and why not. From code, including shipping rules from a world-generator plugin: Natural Spawns in the API section.