spawners.yml
spawners.yml is the catalogue of spawner types: what each one drops, how
much experience it gives, its five upgrade axes and their prices, its
spawn-egg rule, and what it costs to place, mine or stack. It carries no
config-version and is not merged with the shipped copy on update — a
type you delete stays deleted, and anything your copy does not name still
answers from the jar’s own copy.
A spawner is a type, not a mob. In DROPS mode nothing is ever spawned —
the entity named is only the drop-table key and the figure turning in the
cage. Every vanilla mob is already a type before this file is read; an
entry in the file overrides one of those by id, or adds an id no mob owns (a
diamond or coal spawner) for a type with no mob behind it.
The items: map
Section titled “The items: map”items: ruby: { material: EMERALD, name: '<red>Ruby', model: 1001 }Only needed for a drop that wants a name, a CustomModelData, or another
plugin’s item instead of a plain material. A plain material is named where it
is used and its own name is its store id; two types dropping BONE bank into
the same count.
DEFAULT and inheritance
Section titled “DEFAULT and inheritance”Every type starts from DEFAULT and only names what it changes. A field not
named in a type falls back to DEFAULT’s value for that field, except
drops, which always replaces the inherited list rather than merging
into it.
spawners: DEFAULT: mode: DROPS # DROPS | MOBS entity: <mob or NONE> # the figure in the cage / what MOBS mode spawns experience: 5 # a number, or a range like 1-3 drops: - { material: ROTTEN_FLESH, amount: 0-2, chance: 100 } upgrades: # axes: range, delay, amount, capacity, xp range: { enabled: true, base: 16, increase: 4, max-level: 5, price: { formula: '2500 * <level>' } } delay: { enabled: true, base: 400, increase: -40, max-level: 5, price: { formula: '2500 * <level>' } } amount: { enabled: true, base: 4, increase: 2, max-level: 5, price: { formula: '2500 * <level>' } } capacity: { enabled: true, base: 1728, increase: 1728, max-level: 5, price: { formula: '2500 * <level>' } } xp: { enabled: true, base: 100000, increase: 100000, max-level: 5, price: { formula: '2500 * <level>' } } eggs: enabled: true allowed: [] # type ids an egg may convert to; [] = any price: { mine: 0, place: 0, stack: 0 }mode: DROPSnever spawns a mob — the type produces drops and experience directly, and a hundred spawners stacked into one block produce exactly what a hundred spread over a field produce.mode: MOBSis the vanilla spawner with the upgrade values written onto the block; the server does the work, but vanilla’s own nearby-mob cap applies, so the equal-output promise does not hold forMOBS(see How spawners work). A type with noentityis alwaysDROPS, whatevermodesays.- Each upgrade axis’s value at a level is
base + (level - 1) × increase.priceis either aformulaor a list ofmanualper-level prices; level 1 is always free. eggs.enabled: falsemakes a type untouchable from both ends of an egg change — nothing turns into it and it turns into nothing.eggs.allowedonly ever narrows the list; an egg change that would move a spawner onto a type charging different upgrade prices is refused regardless of this list.
Overriding an axis
Section titled “Overriding an axis”cow: experience: 1-3 drops: - { material: BEEF, amount: 1-3, chance: 100 } - { material: LEATHER, amount: 0-2, chance: 100 } upgrades: amount: price: { formula: '1000 * <level>' } price: place: 10000Only the fields a type names are overridden; everything else — including the
other four upgrade axes — is still inherited from DEFAULT.
Formula placeholders
Section titled “Formula placeholders”A price formula takes + - * / ^, brackets, and exactly three
placeholders:
<level>— the level being bought.<max>— the tier’smax-level.<stack>— how many spawners the block holds.
The shipped prices omit <stack>, so one purchase upgrades every spawner in
the block for one price — this rewards stacking and is cheaper for the server
to run. To charge per spawner in the block instead, multiply by it:
price: { formula: '2500 * <level> * <stack>' }Item spawners (no mob behind them)
Section titled “Item spawners (no mob behind them)”A type with no vanilla mob — coal, iron, diamond, and similar — adds a
few extra fields:
diamond: display: '<aqua>Diamond Spawner' entity: NONE eggs: enabled: false stack-limit: 4 drops: - { material: DIAMOND, amount: 1-2, chance: 100 } upgrades: amount: price: { formula: '250000 * (<level> - 1)' }display— a MiniMessage string that becomes the whole item name, in place of the defaultmessages.ymlname template.stack-limit— caps how many of this type may share one block, on top of (never above) whateverstacking.limitinconfig.ymlallows.mythic-mob— a MythicMobs mob name, spawned by the plugin’s own timer inMOBSmode. Never inherited fromDEFAULT.model— a model id another plugin (ModelEngine, BetterModel) draws in the cage instead of the vanilla figure. Never inherited fromDEFAULT.
Shipped types
Section titled “Shipped types”The jar ships roughly thirty types across five price bands — animals
(10,000), common hostiles (25,000, DEFAULT’s own band), useful hostiles
(75,000), rare mobs (200,000), and resources (25,000 to 600,000, priced
against what the ore is worth). Every vanilla mob not otherwise listed is
still a spawnable type at DEFAULT’s values.