Skip to content

Spawner Types

BeestoXd edited this page Aug 15, 2026 · 1 revision

Spawner Types

A spawner type is one entry under TYPES in spawners.yml. It defines what the block looks like, what it produces, and how fast.

Anatomy of a type

TYPES:
  ZOMBIE:                             # <- the type key, used by /spawner give
    DISPLAY_NAME: '&dZombie Spawner'  # name on the item and in menus
    ENTITY_TYPE: ZOMBIE               # mob spinning inside the block
    HEAD_TEXTURE: ''                  # optional custom head for the menu icon
    ICON_MATERIAL: ROTTEN_FLESH       # fallback icon
    BASE_ITEMS_PER_CYCLE: 1           # drop-table rolls per cycle per spawner
    XP_PER_CYCLE: 3.7                 # optional per-type XP override
    DROPS:
      ROTTEN_FLESH:                   # <- the loot key
        MATERIAL: ROTTEN_FLESH
        MIN: 1
        MAX: 3
        CHANCE: 1.0

The type key is what players and admins actually type. Keep it short, uppercase and memorable. It is matched case-insensitively.

The loot key identifies a drop for filters and storage. It is normally the same as the material, and there is no reason to differ unless you want two entries producing the same material at different rates.

Adding a new type

Say you want an Enderman spawner.

1. Add the type

TYPES:
  ENDERMAN:
    DISPLAY_NAME: '&5Enderman Spawner'
    ENTITY_TYPE: ENDERMAN
    HEAD_TEXTURE: ''
    ICON_MATERIAL: ENDER_PEARL
    BASE_ITEMS_PER_CYCLE: 1
    DROPS:
      ENDER_PEARL:
        MATERIAL: ENDER_PEARL
        MIN: 0
        MAX: 1
        CHANCE: 0.5

2. Price the drop so it can be sold:

SELL:
  PRICES:
    ENDER_PEARL: 22.0

3. Reload

/spawner reload

4. Verify

/spawner types
/spawner give <you> ENDERMAN 1

If ENDERMAN does not appear in /spawner types, check the console — an invalid ENTITY_TYPE or a YAML indentation error is logged there, not in chat.

Balancing a type

Work out what a type produces before it reaches players. Per minute, with the default 5-second interval (12 cycles):

items/min = 12 x BASE_ITEMS_PER_CYCLE x stack x CHANCE x ((MIN + MAX) / 2)
money/min = items/min x SELL_PRICE x multiplier

For the Enderman example above, at a 100-stack:

items/min = 12 x 1 x 100 x 0.5 x 0.5 = 300 pearls
money/min = 300 x 22.0 = $6,600

That is $396,000 per hour from one block. Probably too much — either drop the price, drop the chance, or lower MAX_STACK_PER_BLOCK.

A quick sanity rule: decide what one maxed spawner should earn per hour on your server, then work backwards. It is far easier to loosen a tight economy later than to claw money back.

The four levers

Lever Effect Good for
CHANCE Linear on output Rare bonus drops
MIN / MAX Linear on output, via the average Bulk staples
BASE_ITEMS_PER_CYCLE Linear on the whole table Making one mob type strictly better
SELL_PRICE Linear on money only Tuning value without touching output

Prefer tuning price over output when you can — output is what players see and feel, and cutting it reads as a nerf far more loudly than a price change.

Multiple drops

List as many as you like. Each is rolled independently.

  PIGLIN:
    DISPLAY_NAME: '&dPiglin Spawner'
    ENTITY_TYPE: ZOMBIFIED_PIGLIN
    ICON_MATERIAL: GOLD_NUGGET
    BASE_ITEMS_PER_CYCLE: 1
    DROPS:
      ROTTEN_FLESH:
        MATERIAL: ROTTEN_FLESH
        MIN: 1
        MAX: 2
        CHANCE: 1.0
      GOLD_NUGGET:
        MATERIAL: GOLD_NUGGET
        MIN: 1
        MAX: 4
        CHANCE: 0.85
      GOLD_INGOT:
        MATERIAL: GOLD_INGOT
        MIN: 0
        MAX: 1
        CHANCE: 0.06

Note that ENTITY_TYPE need not match the type key — the key is PIGLIN but the mob is ZOMBIFIED_PIGLIN.

Per-drop sell price

Set a price on the drop itself to override SELL.PRICES:

      BLAZE_ROD:
        MATERIAL: BLAZE_ROD
        MIN: 1
        MAX: 2
        CHANCE: 1.0
        SELL_PRICE: 25.0

This is a global override, not a per-type one. Prices are resolved by material, so a SELL_PRICE on any drop entry sets the price for that material everywhere. Two types cannot sell the same material at different prices.

Disabling without deleting

Both types and individual drops honour an ENABLED flag. It is not in the packaged file — add it yourself:

  BLAZE:
    ENABLED: false        # the whole type disappears from /spawner types
    ...
    DROPS:
      BLAZE_ROD:
        ENABLED: false    # this one drop stops generating
        MATERIAL: BLAZE_ROD

A disabled type still has its already-placed spawners in the database, but they stop generating, because their definition can no longer be resolved. Re-enable the type and they resume, catching up on all the elapsed time at once. Prefer this over deleting a type outright.

Custom head textures

HEAD_TEXTURE accepts a texture URL or a Base64 texture value, and controls the icon shown in the main menu:

    HEAD_TEXTURE: 'https://textures.minecraft.net/texture/d875eb45aca34a4d24c3dc1395fc020ccf37f825a17b054a22fd24b189c24c'

Leave it empty to use the default mob head for ENTITY_TYPE. Sources like minecraft-heads.com provide both formats. ICON_MATERIAL is used when no head can be built.

Common mistakes

Symptom Cause
Type missing from /spawner types Invalid ENTITY_TYPE, ENABLED: false, or a YAML error — check the console
Spawner generates nothing Every drop has CHANCE: 0, or MAX: 0, or the filters are off, or the material hit STORAGE_CAP_PER_LOOT_KEY
Item drops but cannot be sold No price in SELL.PRICES and no SELL_PRICE on the drop
Wrong mob spins in the block ENTITY_TYPE does not match the type key — check whether that was deliberate
Way more loot than expected BASE_ITEMS_PER_CYCLE multiplies the entire table, and stack size multiplies it again

See also

Clone this wiki locally