-
-
Notifications
You must be signed in to change notification settings - Fork 0
spawners.yml
Spawner behaviour, anti-ESP, sell prices and drop tables. This is the file you will spend the most time in.
Four top-level sections: SETTINGS, ANTI_ESP, SELL, TYPES.
Everything here is picked up by /spawner reload, with one caveat noted under
GENERATION_INTERVAL_SECONDS.
SETTINGS:
ENABLED: true
ACCESS_MODE: OWNER_ONLY
ALLOW_SPAWNER_STEAL: false
GENERATION_INTERVAL_SECONDS: 5
PROCESS_ONLY_LOADED_CHUNKS: true
REQUIRE_PLAYER_NEARBY: false
PLAYER_NEARBY_RADIUS: 16
MAX_STACK_PER_BLOCK: 100000
STORAGE_CAP_PER_LOOT_KEY: 1000000
DROP_ON_BREAK_IF_INVENTORY_FULL: true
REQUIRE_SILK_TOUCH: true
CANCEL_MOB_SPAWN: true
XP_ENABLED: true
XP_PER_CYCLE: 3.7
HOPPER_EXTRACTION:
ENABLED: false
AMOUNT_PER_CYCLE: 64| Key | Type | Default | Description |
|---|---|---|---|
ENABLED |
boolean | true |
Master switch. false disables the whole spawner system — no generation, no GUIs, no placing. Existing data is untouched. |
ACCESS_MODE |
enum | OWNER_ONLY |
Default access for newly placed spawners. See below. |
ALLOW_SPAWNER_STEAL |
boolean | false |
true lets anyone open, modify and break any managed spawner, overriding ACCESS_MODE. |
GENERATION_INTERVAL_SECONDS |
int | 5 |
Seconds between generation cycles. Minimum 1. |
PROCESS_ONLY_LOADED_CHUNKS |
boolean | true |
Skip spawners in unloaded chunks. Their elapsed time still accrues. |
REQUIRE_PLAYER_NEARBY |
boolean | false |
Only generate when a player is within PLAYER_NEARBY_RADIUS. |
PLAYER_NEARBY_RADIUS |
int | 16 |
Blocks, used by the setting above. Minimum 1. |
MAX_STACK_PER_BLOCK |
long | 100000 |
Ceiling for one spawner block. Minimum 1. |
STORAGE_CAP_PER_LOOT_KEY |
long | 1000000 |
Ceiling per material in a spawner's storage. Minimum 1. |
DROP_ON_BREAK_IF_INVENTORY_FULL |
boolean | true |
Drop spawner items on the ground when the breaker's inventory is full. false retries the inventory instead. |
REQUIRE_SILK_TOUCH |
boolean | true |
Require a Silk Touch pickaxe to break and collect spawners — including vanilla ones. |
CANCEL_MOB_SPAWN |
boolean | true |
Prevent managed spawners from spawning real mobs. |
XP_ENABLED |
boolean | true |
Generate and allow collection of XP. |
XP_PER_CYCLE |
double | 3.7 |
XP per cycle, per spawner in the stack. Overridable per type. |
HOPPER_EXTRACTION.ENABLED |
boolean | false |
Pull stored loot into a hopper directly under the spawner. |
HOPPER_EXTRACTION.AMOUNT_PER_CYCLE |
int | 64 |
Items moved per material, per cycle. Also capped by the material's max stack size. |
Applies to non-owners who do not hold ultimatevirtualspawner.admin.spawner.
| Value | Non-owner can open / modify / break |
|---|---|
OWNER_ONLY |
no |
OWNER_AND_TEAM |
no — there is no team system yet, so this behaves like OWNER_ONLY
|
PUBLIC |
yes |
The mode is stored per spawner, snapshotted at placement time. Changing this setting affects newly placed spawners only; existing ones keep whatever they were placed with.
Opening, modifying and breaking share a single check — there is no read-only tier.
Higher values are cheaper and pay out in larger lumps; the long-run total is identical, because the drop maths multiplies by the number of elapsed cycles.
Reload caveat: the repeating task keeps the period it was created with until the server restarts. After a reload the value is used for the catch-up maths — so output rates change immediately — but the task still fires on the old rhythm.
Applies to all spawners, vanilla ones included: without Silk Touch, breaking any spawner is
cancelled with SPAWNER.SILK_TOUCH_REQUIRED.
Exemptions are Creative mode and ultimatevirtualspawner.spawner.bypass. Being an operator is
not in itself an exemption, although ops hold that node by default.
true (recommended) stops managed spawners producing entities, in three layers — see
How It Works. The third layer writes maxNearbyEntities = 0 into the block itself, so the
spawner stays inert across restarts and even after the plugin is removed. The mob inside the
block still spins visually, as usual.
false lets managed spawners spawn real mobs in addition to generating virtual loot. That is
almost never what you want.
Place a hopper directly beneath a managed spawner and stored loot flows into it automatically, before each generation cycle.
- Filtered-off materials are skipped.
- Per material, per cycle it moves
min(stored, maxStackSize, AMOUNT_PER_CYCLE). - Extraction stops early for the cycle once the hopper is full.
- There is no ownership check on the hopper. Anyone who can place a hopper under a spawner
can drain it. Leave this
falseon a survival server unless your claim plugin protects the block below.
ANTI_ESP:
ENABLED: true
REVEAL_RADIUS: 7
OWNER_SEE_RADIUS: 9
TRACKING_RADIUS: 128
REQUIRE_LINE_OF_SIGHT: true
STAFF_BYPASS_PERMISSION: ultimatevirtualspawner.admin.spawner.seeall
CAMOUFLAGE:
OVERWORLD: DEEPSLATE
NETHER: NETHERRACK
THE_END: END_STONE| Key | Type | Default | Description |
|---|---|---|---|
ENABLED |
boolean | true |
Master switch for spawner concealment. |
REVEAL_RADIUS |
int | 7 |
Distance at which a spawner becomes visible to a non-owner. Minimum 1. |
OWNER_SEE_RADIUS |
int | 9 |
Reveal distance for the owner. Clamped to at least REVEAL_RADIUS. |
TRACKING_RADIUS |
int | 128 |
How far out spawners are considered at all. Clamped to at least REVEAL_RADIUS + 8. |
REQUIRE_LINE_OF_SIGHT |
boolean | true |
Also require an unobstructed view, not just proximity. |
STAFF_BYPASS_PERMISSION |
string | ultimatevirtualspawner.admin.spawner.seeall |
Node that disables concealment for its holder. |
CAMOUFLAGE.OVERWORLD |
material | DEEPSLATE |
Block sent instead of the spawner. |
CAMOUFLAGE.NETHER |
material | NETHERRACK |
|
CAMOUFLAGE.THE_END |
material | END_STONE |
Full explanation and tuning advice: Anti-ESP.
SELL:
ENABLED: true
MULTIPLIER: 1.0
PERMISSION_MULTIPLIERS:
ultimatevirtualspawner.sell.multiplier.vip: 1.25
ultimatevirtualspawner.sell.multiplier.mvp: 1.5
ultimatevirtualspawner.sell.multiplier.elite: 2.0
PRICES:
PORKCHOP: 2.5
BEEF: 2.5
LEATHER: 3.0
ROTTEN_FLESH: 0.75
IRON_INGOT: 12.0
CARROT: 1.5
POTATO: 1.5
STRING: 2.0
SPIDER_EYE: 3.5
BONE: 2.0
ARROW: 1.25
GUNPOWDER: 4.0
GOLD_NUGGET: 1.5
GOLD_INGOT: 13.5
BLAZE_ROD: 18.0
POPPY: 0.5| Key | Type | Default | Description |
|---|---|---|---|
ENABLED |
boolean | true |
Master switch for selling. Also requires a working economy. |
MULTIPLIER |
double | 1.0 |
Applied to every payout. Negative values are clamped to 0. |
PERMISSION_MULTIPLIERS |
map | 3 examples |
<permission>: <multiplier>. Only the highest one a player holds applies, multiplied on top of MULTIPLIER. |
PRICES |
map | 16 materials |
<MATERIAL>: <price per single item>. |
A material with no price cannot be sold. It stays in storage, it is not counted in the sell preview, and Sell All ignores it. That is the intended way to make something collect-only.
Unknown material names are logged as [Worth] Unknown material in SELL.PRICES: … and skipped.
Prices of 0 or less are dropped, which is equivalent to omitting them.
A per-drop SELL_PRICE inside a TYPES entry overrides the value here for that material,
globally. See Selling.
Each key under TYPES is a spawner type, referenced by /spawner give <player> <TYPE>.
TYPES:
ZOMBIE:
DISPLAY_NAME: '&dZombie Spawner'
ENTITY_TYPE: ZOMBIE
HEAD_TEXTURE: ''
ICON_MATERIAL: ROTTEN_FLESH
BASE_ITEMS_PER_CYCLE: 1
DROPS:
ROTTEN_FLESH:
MATERIAL: ROTTEN_FLESH
MIN: 1
MAX: 3
CHANCE: 1.0
IRON_INGOT:
MATERIAL: IRON_INGOT
MIN: 0
MAX: 1
CHANCE: 0.05| Key | Type | Default | Description |
|---|---|---|---|
ENABLED |
boolean | true |
Set false to switch a type off without deleting it. Not present in the default file — add it yourself. |
DISPLAY_NAME |
string | &d<Key> Spawner |
Shown on the item and in menus. Colour codes supported. |
ENTITY_TYPE |
Bukkit EntityType
|
the type key | The mob shown spinning inside the block. An invalid value logs a warning and the type is skipped. |
HEAD_TEXTURE |
string | '' |
Custom head texture URL or Base64 for the menu icon. Empty = default mob head. |
ICON_MATERIAL |
material | SPAWNER |
Fallback icon material. |
BASE_ITEMS_PER_CYCLE |
long | 1 |
Drop-table rolls per cycle, per spawner in the stack. Minimum 1. |
XP_PER_CYCLE |
double | SETTINGS.XP_PER_CYCLE |
Per-type XP override. |
DROPS |
section | — | The drop table. |
Each key under DROPS is a loot key — the identity used for filters and storage.
| Key | Type | Default | Description |
|---|---|---|---|
ENABLED |
boolean | true |
Set false to disable one drop without deleting it. |
MATERIAL |
material | STONE |
What is produced. |
MIN |
long | 0 |
Minimum per roll. Negative values clamp to 0. |
MAX |
long | MIN |
Maximum per roll. Clamped to at least MIN. |
CHANCE |
double | 1.0 |
Probability per roll, 0.0–1.0. Values outside the range are clamped. |
SELL_PRICE |
double | — | Optional. Overrides SELL.PRICES for this material, everywhere. |
Output per cycle for one entry is
cycles x BASE_ITEMS_PER_CYCLE x stackAmount x CHANCE x ((MIN + MAX) / 2) —
see How It Works for the exact rounding rule, and Spawner Types for a full walkthrough of
adding your own.
PIG, COW, ZOMBIE, SPIDER, SKELETON, CREEPER, PIGLIN (entity ZOMBIFIED_PIGLIN),
BLAZE, IRON_GOLEM.
- Spawner Types — adding and balancing your own types
- Selling — prices and multipliers
- Anti-ESP — concealment in detail
- Storage and Filters — storage caps, filters, hopper extraction
- Performance Tuning — which of these settings actually cost you TPS
Repository · Releases · Issues · Discord · MIT License
Getting started
Reference
Configuration
Features
Operations
Development