Skip to content
OrePlugins

VaultKeeper

Available

The lock lives in the database and is taken in the same breath as the contents are read, so there is no instant at which two windows onto one vault can both believe it is free. And when a player’s vault allowance drops, the vaults above it do not disappear — they stay open to take things out of until the player has emptied them.

What it does

  • A vault cannot be open twice

    The lock is taken in the database, in the same transaction that reads the contents — so there is no moment at which two openers can both decide a vault is free. It does not take a network for that to matter: reopening a vault while its previous save is still being written is enough, and the second close then overwrites the first. Every item moved in that session ends up existing twice.

  • Losing a rank does not lose items

    A donor rank expires and the player still has things in vault twelve. Hiding it is the usual answer and it is the wrong one — from where the player is standing their items were taken, and the support ticket is unanswerable because the items really are still there. Here those vaults stay open in withdraw-only mode: nothing new goes in, everything comes out, and the vault tidies itself away once it is empty.

  • Vaults that follow players across a network

    Point every backend at one MySQL database and a player’s vaults are the same on all of them. Open one on survival, walk to skyblock, and you are told “Vault 3 is open on survival, close it there first” — naming the server, because “busy” leaves somebody with nothing to do. SQLite is the default and needs no setup at all.

  • A list you can read without opening anything

    Every icon in the vault list carries its used-slot count as the stack size, so twenty vaults can be scanned at a glance for the one holding the building blocks. Players can name them too. It is drawn from a single stored number rather than by decoding every item, so opening the list never costs a thousand deserialised stacks.

  • It tells you who actually owns /vault

    /vault, /vaults and /pv are wanted by other storage plugins — /pv is PlayerVaults’. Bukkit is first-come-first-served and the loser silently gets only its namespaced form, so every item a player “puts in their vault” can be going into storage this plugin cannot see. The symptom is somebody insisting their items vanished. /vaultkeeper commands answers it for your server.

  • A database blip never eats items

    A save that cannot reach storage is retried, then written to disk and replayed automatically at the next start. A vault whose contents cannot be decoded is refused rather than opened, so a damaged blob is never replaced with an empty inventory. And if the database cannot be opened at all the plugin refuses to enable — because a vault plugin that starts with no storage shows every player an empty vault, and the first thing they do with one is put things in it.

Compatibility

Storage
SQLite by default, or MySQL for cross-server — driver fetched by Paper
Vaults
Up to 54 per player, 9 to 54 slots each
Allowance
Permission nodes: vaultkeeper.vaults.10
Concurrency
One database-held lock per vault, with crash recovery
Dependencies
None. Floodgate optional, for Bedrock name resolution

Commands

Permissions default to true for player commands and op for admin ones.

VaultKeeper commands and permissions
CommandWhat it doesPermission
/vaultThe list. Each icon shows how full that vault is, as its stack size.vaultkeeper.use (everyone)
/vault (number)Straight into that vault, skipping the list.vaultkeeper.use (everyone)
/vault name (number) [text]Name a vault, or clear its name. The number a player remembers is never the one the vault has.vaultkeeper.name (everyone)
/vaultkeeperStorage, server id, how many vaults hold anything, how many locks are held right now.vaultkeeper.admin
/vaultkeeper open (player) (number)Look inside a vault, read-only. Takes no lock, so it cannot strand one.vaultkeeper.admin.open
/vaultkeeper locks · /vaultkeeper unlock (player) [number]See every lock currently held and how old it is, and clear one left behind by a crash.vaultkeeper.admin.unlock
/vaultkeeper commandsWhich command names actually reach this plugin on your server.vaultkeeper.admin

Before you buy

  • What actually stops items being duplicated?

    The lock is a row in the database, not a set in memory, and it is taken inside the same transaction that reads the vault’s contents. An in-memory guard only knows about its own server, and it does not survive the crash that stranded the vault in the first place. On top of that, a vault is never re-read while a save of it is still in flight — that fast-reopen race duplicates items on a single server with no network involved at all.

  • A player’s rank expired and they had items in vaults they no longer get. What happens?

    Those vaults stay in their list with a hopper icon and open in withdraw-only mode. They can take everything out; they cannot put anything in; and once a vault is empty it disappears by itself. Nothing needs configuring and nothing is deleted — the player closes it down rather than the server doing it for them.

  • Do I need MySQL?

    No. SQLite is the default and needs no setup — one file in the plugin folder. MySQL is only for making vaults follow players between servers on a network. Both drivers are declared, so switching storage.type later cannot fail on a missing driver in the middle of a migration.

  • I run a network. What is the one thing to get right?

    server-id must be different on every backend. Two servers sharing one both believe they already hold every lock the other takes, which switches the duplication protection off completely while appearing to work perfectly. Match the names in your proxy config and it takes care of itself.

  • How do I give a donor rank more vaults?

    Grant vaultkeeper.vaults.15, and the highest node a player holds wins. Note that a wildcard grants nothing: VaultKeeper reads the numbers out of the nodes actually granted rather than testing downwards from the maximum, because that test answers true on the first try for anyone holding vaultkeeper.* — every operator — and would silently hand every op the ceiling.

  • What if the database goes down while somebody is using a vault?

    The save is retried, and if it still cannot land the contents are written to plugins/VaultKeeper/recovery/ and restored automatically at the next start. The log says so loudly. Nothing is dropped quietly — the one path that could actually lose items is logged as an error naming the player and the vault.

  • Does it work for Bedrock players?

    Yes, without needing Geyser at all. The list is a chest menu built to Bedrock’s constraints: plain left-click only, and the fill level drawn as the stack size rather than hidden in hover text, because Bedrock has neither reliable shift-click nor hover. With Floodgate installed, staff can also type a Bedrock player’s name without its prefix.