Skip to Content
PluginsAquaGravesConfiguration

Configuration

Everything lives in config.yml and applies with /aquagraves reload, except the options marked as needing a restart.

Graves

config.yml
grave: despawn-time-seconds: 300 despawn-when-empty: true drop-items-on-despawn: true dropped-item-velocity: true limit: 3 limit-reached: REMOVE_OLDEST max-interact-distance: 6.0 allow-deposits: true close-gui-when-far: true
KeyDefaultWhat it does
despawn-time-seconds300How long a grave stays. -1 never despawns
despawn-when-emptytrueRemoves it once the last item and the last xp point are taken
drop-items-on-despawntrueDrops what is left when it despawns. Off deletes it
dropped-item-velocitytrueOff keeps dropped items on the grave block instead of flying around
limit3Graves one player can own at once. -1 disables it
limit-reachedREMOVE_OLDESTWhat happens when a player at the limit dies
max-interact-distance6.0Blocks a player can be from a grave to open or loot it
allow-depositstrueOff makes graves take only
close-gui-when-fartrueCloses the grave GUI when the player walks out of range
limit-reachedDoes
REMOVE_OLDESTRemoves the oldest grave, its contents drop, and the new one spawns
DENYNo new grave, the items drop on the ground like vanilla

aquagraves.limit.<amount> and aquagraves.limit.unlimited override limit per rank.

Protection

Graves behave like a locked chest for a while, so nobody can camp a corpse the second someone dies.

config.yml
protection: enabled: true duration-seconds: 120 on-expire: UNLOCK notify-owner: true always-owner-only: false
KeyDefaultWhat it does
enabledtrueOff makes every grave public from the start
duration-seconds120How long it stays locked to its owner. 0 locks it for its whole life
on-expireUNLOCKWhat happens when the lock runs out
notify-ownertrueTells the owner when their grave unlocks
always-owner-onlyfalseKeeps the grave owner only even after it unlocks
on-expireDoes
UNLOCKAnyone can open and loot it for the rest of its life
REMOVEIt despawns instead, following drop-items-on-despawn

aquagraves.protection.<seconds> extends the lock per rank, and aquagraves.bypass.protection ignores it.

Death

config.yml
death: store-items: true store-xp: true xp-keep-percentage: 1.0 override-keep-inventory: false override-keep-level: false listener-priority: HIGHEST disabled-worlds: - example_world blacklisted-death-causes: - VOID item-order: - ARMOR - HAND - OFFHAND send-coordinates: true
KeyDefaultWhat it does
store-itemstrueKeeps the drops inside the grave
store-xptrueKeeps the dropped experience inside the grave
xp-keep-percentage1.0Share of that experience the player gets back. 0.5 is half
override-keep-inventoryfalseTakes the items even when another plugin or keepInventory wants to keep them
override-keep-levelfalseSame for experience levels
listener-priorityHIGHESTWhen the death listener runs. Needs a restart
disabled-worldsexample_worldWorlds with no graves, case sensitive
blacklisted-death-causesVOIDDeath causes  that never leave a grave
item-orderarmor, hand, offhandWhich items go first in the grave. ARMOR, HAND, OFFHAND
send-coordinatestrueSends the death coordinates to the player

If graves spawn empty, another plugin is taking the drops first. Lower listener-priority to HIGH, NORMAL, LOW or LOWEST and restart.

Pickup

config.yml
pickup: instant-pickup: true instant-pickup-only-own: false auto-equip-armor: true xp-on-interact: true
KeyDefaultWhat it does
instant-pickuptrueShift + right click takes everything, no GUI
instant-pickup-only-ownfalseOnly the owner may do that, the rest use the GUI
auto-equip-armortruePuts armor and the elytra straight back on empty armor slots
xp-on-interacttrueGives the stored experience back the moment the grave is touched

Whatever does not fit in the inventory stays in the grave.

Teleport

config.yml
teleport: enabled: true only-own: true cooldown-seconds: 30 warmup-seconds: 3 cancel-on-move: true cancel-on-damage: true
KeyDefaultWhat it does
enabledtrueOff disables /aquagraves tp
only-owntruePlayers can only travel to their own graves. aquagraves.teleport.others ignores it
cooldown-seconds30Wait between teleports. 0 disables it, aquagraves.bypass.cooldown ignores it
warmup-seconds3Seconds standing still before the teleport. 0 is instant
cancel-on-move / cancel-on-damagetrueWhat interrupts the warmup

Storage

config.yml
storage: save-interval-seconds: 60 save-on-change: true save-coalesce-ticks: 100 backups: enabled: true keep-per-player: 5
KeyDefaultWhat it does
save-on-changetrueWrites shortly after a grave is opened, looted or closed
save-coalesce-ticks100How long changes pile up before one write. 100 is 5 seconds
save-interval-seconds60Only used with save-on-change off. -1 saves on shutdown only
backups.enabledtrueKeeps the contents of removed graves for /aquagraves restore
backups.keep-per-player5Removed graves remembered per player, the oldest is dropped

Keep save-on-change on. It is what stops a crash from duplicating items. Every change inside the window rides along with the same write, so a hundred players looting at once still cost one write.

Graves are stored in graves.dat and backups in backups.dat, both inside the plugin folder.

Worlds

config.yml
spawn-height-limits: world: min: -64 max: 319 world_nether: min: 0 max: 255 world_the_end: min: 0 max: 255 world-name: world: "Overworld" world_nether: "The Nether" world_the_end: "The End"

spawn-height-limits keeps graves out of the void and under the build limit. Worlds not listed use the limits of their dimension.

world-name is what %world% prints. Worlds not listed keep their real name, case sensitive.

Denied items

Items destroyed on death that never show up in a grave.

config.yml
denied-section: items: - BARRIER - BEDROCK names: - "&cSoulbound"

items matches materials, names matches any item whose name contains that text.

Sounds

config.yml
sounds: spawn: "entity.wither.spawn" open: "block.chest.open" pickup: "entity.item.pickup" unlock: "block.chest.locked" despawn: "block.fire.extinguish" volume: 0.6 pitch: 1.4

Namespaced keys, not the old enum names. "" disables one.

Commands

config.yml
command-aliases: - aquagraves - agraves - graves - grave update-notify: true debug: false
KeyDefaultWhat it does
command-aliases4 labelsLabels registered, the first is the main one. Needs a restart
update-notifytrueChecks SpigotMC on startup and tells staff with aquagraves.update on join
debugfalseExtra console output, only when asked to

Config updates

config.yml and messages.yml carry a version at the bottom. When a release adds options they are added on startup, keeping your values. Leave version alone.

Last updated: October 16, 2026 bySenkexin69046c7