Skip to Content
PluginsAquaVirtualConfiguration

Configuration

Most options apply with /aquavirtual reload. Storage and the WorldGuard flag need a restart.

Slots

config.yml
spawners: default-slots: 5 max-slots: 256 permission-slots: true max-per-chunk: 4 count-expired: false
KeyDefaultWhat it does
default-slots5Slots every player gets before bonuses
max-slots256Hard ceiling nothing can go over
permission-slotstrueRead aquavirtual.slots.<number> and take the highest
max-per-chunk4Placed spawners allowed in one chunk. 0 disables it
count-expiredfalseWhether expired records still take a slot

A stored spawner takes a slot just like a placed one. max-per-chunk is bypassed with aquavirtual.bypass.limit.

Time

config.yml
time: tick-seconds: 1 default-duration: 30d default-mode: REAL_TIME warn-thresholds: - 86400 - 3600 - 600 - 60
KeyDefaultWhat it does
tick-seconds1How often the countdown is recalculated
default-duration30dUsed by give when you type no duration
default-modeREAL_TIMEUsed by give when you type no mode
warn-thresholds4 stepsSeconds left at which the owner is warned, once per step

The defaults warn at one day, one hour, ten minutes and one minute.

Expiry

config.yml
expiry: remove-block: true notify-owner: true delete-record: false broadcast: false grace-seconds: 0
KeyDefaultWhat it does
remove-blocktrueTakes the block out of the world when time runs out
notify-ownertrueOffline owners get a summary on their next join
delete-recordfalseDeletes the row instead of keeping it as expired history
broadcastfalseAnnounces every expiry to the server
grace-seconds0Extra seconds the block survives past zero

Placement

config.yml
placement: mode: ADJACENT max-distance: 6 cooldown-seconds: 3 min-y: auto max-y: auto min-distance-between: 0 min-distance-from-spawn: 0 require-solid-ground: false rebind-on-pickup: true world-mode: BLACKLIST
KeyDefaultWhat it does
modeADJACENTADJACENT places against the face you look at, REPLACE turns that block into the spawner
max-distance6How far you can be looking
cooldown-seconds3Wait between two placements from the same player
min-y / max-yautoHeight limits. auto uses the world limits
min-distance-between0Blocks between two placed spawners. 0 disables it
min-distance-from-spawn0Blocks from the world spawn. 0 disables it
require-solid-groundfalseDemand a solid block underneath
rebind-on-pickuptrueAn undecided spawner becomes choosable again when picked up
world-modeBLACKLISTWhether blacklist.yml worlds are the denied ones or the only allowed ones

/aquavirtual check names the exact rule stopping a placement where you are looking, which is faster than reading this page twice.

Protection

config.yml
protection: only-owner-break: true deny-untracked-break: false deny-vanilla-placement: false deny-explosions: true deny-pistons: true deny-spawn-eggs: true deny-fire: true drop-on-break: false
KeyDefaultWhat it does
only-owner-breaktrueOnly the owner can break their spawner
deny-untracked-breakfalseDeny breaking spawner blocks this plugin does not own
deny-vanilla-placementfalseDeny placing spawner items by hand, so every spawner is virtual
deny-explosionstrueProtect from every explosion
deny-pistonstrueCancel piston moves that would push one
deny-spawn-eggstrueDeny changing one with a spawn egg
deny-firetrueProtect from fire, burning and fading
drop-on-breakfalseDrop a physical spawner item on pickup

Leave drop-on-break off. With it on a player gets both the record back and an item, which duplicates spawners.

only-owner-break is bypassed with aquavirtual.bypass.protection.

Spawn rates

config.yml
spawning: require-owner-online: false stop-when-frozen: true max-level: 5 level-delay-multiplier: 0.85 level-count-bonus: 1 level-nearby-bonus: 2 chunk-entity-cap: 40 count-statistics: true
KeyDefaultWhat it does
require-owner-onlinefalseStop producing while the owner is offline
stop-when-frozentrueFrozen spawners produce nothing
max-level5Highest level setlevel accepts
level-delay-multiplier0.85Delay multiplier per level above one. Lower is faster
level-count-bonus1Extra mobs per cycle per level above one
level-nearby-bonus2Extra nearby entity allowance per level
chunk-entity-cap40Cancel spawns when the chunk holds this many living entities. 0 disables it
count-statisticstrueCount produced mobs for the placeholders and /aquavirtual stats

Levels multiply against the per mob values in mobs.yml. A level 3 zombie spawner with a 400 tick delay runs at 400 × 0.85², produces count + 2 mobs and tolerates max-nearby + 4 nearby.

Sounds and particles

config.yml
sounds: place: "block.beacon.activate" pickup: "block.beacon.deactivate" error: "entity.villager.no" success: "entity.player.levelup" expire: "block.conduit.deactivate" volume: 1.0 pitch: 1.0 particles: enabled: true type: FLAME amount: 24

Sounds are namespaced keys, not the old enum names. "" disables one.

General

config.yml
general: debug: false date-format: "yyyy-MM-dd HH:mm:ss" command-cooldown-seconds: 0 log-actions: true log-to-console: true
KeyDefaultWhat it does
debugfalseVerbose diagnostics in the console
date-formatyyyy-MM-dd HH:mm:ssHow absolute dates are rendered
command-cooldown-seconds0Wait between two AquaVirtual commands from one player
log-actionstrueWrite every action into the history table
log-to-consoletrueAlso print administrative actions
Last updated: September 10, 2026 bySenkexin6fa6972