Skip to Content
PluginsAquaShulkConfiguration

Configuration

Most keys apply with /aquashulk reload. The ones that do not are marked restart.

Storage

config.yml
storage: type: SQLITE cleanup-after-days: 0 cleanup-interval-hours: 24
KeyDefaultWhat it does
typeSQLITESQLITE or H2. The driver downloads on startup. Restart, and existing data is not migrated
cleanup-after-days0Auto deletes shulkers nobody has touched in that many days. 0 never deletes
cleanup-interval-hours24How often that cleanup runs

Touched means opened, saved, or carried by a player who logs in. A shulker sitting in a base chest that nobody opens counts as untouched, so use a long value. Rows with no recorded timestamp are never deleted.

Root Keys

config.yml
nbt-tag: "AquaShulk-UUID" save-interval-minutes: 5 cache-expire-minutes: 30 preload-on-join: true purge-orphan-contents: true update-notify: true
KeyDefaultWhat it does
nbt-tagAquaShulk-UUIDId tag written on shulkers. Never change it while the server is running
save-interval-minutes5How often cached shulkers are flushed to the database. Also saved on every close. Restart
cache-expire-minutes30How long an unused shulker stays in RAM
preload-on-jointrueLoads the shulkers a player carries on join, so opening never hits the database on the main thread
purge-orphan-contentstrueWipes contents of a shulker whose database row is gone. Keep this on
update-notifytrueChecks SpigotMC on startup and tells staff with aquashulk.update on join

Restrictions

config.yml
restrictions: allow-placing: true allow-dispensing: true allow-commands-while-open: false allowed-commands: - msg - r - reply allow-movement-while-open: true fireproof-drops: false
KeyDefaultWhat it does
allow-placingtruePlace shulkers as blocks
allow-dispensingtrueDispensers and droppers can place or shoot them
allow-commands-while-openfalseRun commands with a shulker open
allowed-commandsmsg, r, replyStill allowed when the option above is off. No slash
allow-movement-while-opentruefalse closes the GUI when the player moves
fireproof-dropsfalseDropped shulkers survive lava, fire, cactus and explosions

Keep allow-commands-while-open off. With it on, the item looks empty while the GUI is open and players can be scammed in a trade.

Access

config.yml
access: open-from-hand: true open-from-inventory: true open-from-enderchest: true require-sneak: false click-type: RIGHT cooldown-millis: 500 open-from-containers: - PLAYER - CHEST - ENDER_CHEST world-mode: BLACKLIST worlds: - example_world
KeyDefaultWhat it does
open-from-handtrueRight click while holding it
open-from-inventorytrueClick it inside an inventory
open-from-enderchesttrueSame, inside the ender chest
require-sneakfalseSneak to open from the hand, stops accidental opens
click-typeRIGHTLEFT, RIGHT, SHIFT_LEFT, SHIFT_RIGHT, MIDDLE
cooldown-millis500Minimum time between opens. 0 disables it
open-from-containerslistWhich containers a shulker opens from. Unknown types are ignored
world-modeBLACKLISTBLACKLIST works everywhere except worlds, WHITELIST only in worlds

Behaviour

config.yml
behaviour: hide-contents-on-item: false release-on-close: false release-in-creative: true
KeyDefaultWhat it does
hide-contents-on-itemfalseDoes not write contents into the item so nobody can peek. Breaks previews in other plugins
release-on-closefalseDrops the id on close, turning it back into a normal shareable shulker
release-in-creativetrueSame, but only in creative mode

release-on-close is the fix for kits and crates: every shulker handed out becomes a plain one again as soon as it is closed.

Sounds

config.yml
sounds: open: "block.shulker_box.open" close: "block.shulker_box.close" volume: 1.0 pitch: 1.0

Use "" to disable one. These are namespaced keys, not the old enum names.

Denied Items

Items that cannot be put inside a shulker. Bypass with aquashulk.bypass.denied-items.

config.yml
denied-section: names: - "&6Gapple" - "&aExample" items: - BEDROCK - BARRIER

names matches if the display name contains the text. Colors are optional and every format works: &6, §6, &#FFAA00, <gold>.

Do not touch the version key at the bottom of config.yml and messages.yml. It is how AquaShulk knows whether it has to migrate your file.

Last updated: September 2, 2026 bySenkexinc637be3