Skip to content

Upgrades and tickets

Every spawner type has five independent upgrade axes, defined in spawners.yml:

Axis What it changes
range How close a player must be for the spawner to run.
delay Ticks between one production cycle and the next.
amount Kills produced each cycle, before the stack multiplies it.
capacity How much of one drop the store holds, before the stack multiplies it.
xp How much experience the store holds, before the stack multiplies it.

Each axis is levelled from 1 up to its own max-level. A level’s value is:

value = base + (level - 1) × increase

increase may be negative — delay’s is, so a higher level means a shorter wait. Level 1 always costs nothing; every level from 2 upward is priced by that axis’s price, either a formula or a fixed list of per-level prices.

A price formula can use + - * / ^, brackets, and three placeholders: <level> (the level being bought), <max> (the axis’s max-level), and <stack> (how many spawners the block holds). The shipped types omit <stack>, so buying a level once raises every spawner in the block for one price — stacking is rewarded, and it is cheaper for the server to run than charging per spawner. See spawners.yml for the full syntax and an example that does charge per spawner.

Buy a level from the spawner’s own menu (right-click it, atlasspawner.mine grants nothing here — opening needs the OPEN right; see Whitelist and ownership), or spend a ticket on it — a permanent upgrade bought as an item instead. Both paths raise the same level in the same way; a ticket does not behave differently from a menu purchase once applied.

config.yml’s upgrades.enabled is the master switch: off, the menu squares are not drawn, and a ticket used on a spawner is refused — but a spawner’s existing levels keep working. Each axis also has its own switch (upgrades.range, upgrades.delay, upgrades.amount, upgrades.capacity, upgrades.xp); turning one off removes just that square, for every type.

A ticket, defined in boosters.yml, names one axis (RANGE, DELAY, AMOUNT, CAPACITY, XP) or ANY, which lets the player choose the axis when they use it, and a number of levels. Right-clicking a spawner with a ticket raises that axis by as many levels as fit under the type’s max-level.

What happens with levels left over is the ticket’s overflow setting:

  • REFUND — raises what fits, and hands back a smaller ticket for the rest. Nothing bought is lost.
  • PARTIAL — raises what fits, and spends the whole ticket regardless.
  • REFUSE — does nothing, and says how many levels are left over.

capacity and xp are upgrade axes like the other three, but they also gate what a spawner’s store holds when they are off. With upgrades.capacity off, every spawner’s item store falls back to the flat output.virtual.capacity from config.yml, whatever level the type’s capacity axis would otherwise give it. upgrades.xp off does the same for experience, against experience.virtual.capacity. Level 1 of each axis is set to match those two config values by default, so turning the axis off changes nothing already placed.