🗄️ New: H2 Database
• Embedded H2 Database - Set Storage-Mode: H2 and every vault lives in one local database file (storage/data.mv.db, H2-Name in Settings.yml). Nothing to install and no database server to run: H2 comes inside the plugin, and the file is a standard H2 database that H2's own tools can open
• Strictly Local - The H2 file belongs to this server alone: H2 locks it while the server runs, its network modes are never used, and it does not work with Cross-Server (networks use MySQL, MariaDB or Redis)
• Crash-Safe Writes - Every save is on disk before it counts as done, so a server that is killed right after a save keeps it. Big vaults have no size limit
• Same File on Every Version - CocoVaults 5 (Premium) opens this H2 database as it is (both editions write the same format), so it moves with the server across 26.2 and 26.3
🔒 Duplication & Data-Loss Fixes
• One Shared Live Inventory - The owner and staff now look at the very same live inventory. CocoVaults 4 gave every viewer a copy and merged them back, which duplicated items
• Unreadable Vaults Stay Closed - A vault whose data cannot be read is never opened or overwritten. CocoVaults 4 opened it empty and saved over the real items
• Safe Serialization Changes - The item format is detected when reading, so changing Serialization-Type no longer makes existing vaults unreadable
• Ordered, Crash-Safe Saves - Each player's saves run in order on dedicated threads from deep-copied snapshots; files go to a temporary file, are flushed and moved into place, always in UTF-8
• No Silent Failures - Failed saves are reported and retried instead of being ignored, and empty vaults are saved too
• Shutdown & World Saves - Vaults still open when the server stops are written before it closes, and every world save writes the pending vaults
• Vault Size Fixes - The selector no longer loads vaults at 54 slots (a permission bypass); shrinking a vault moves the items into the free slots and keeps extra rows until they are emptied
• No Main-Thread Stalls - Players leaving the server no longer freeze it while their vaults are saved
• Blacklist Can't Be Bypassed - Shift-clicks, number keys, off-hand swaps and drags are all checked, including items hidden inside shulker boxes and bundles; blocked items are only handed back after a successful save
• Safe Vault Names - Vault names can use colors and styles but never click, hover or insertion tags
🌐 Cross-Server Rework
• Per-Player Leases - A server only loads a player's vaults while holding their lease (MySQL/MariaDB table or Redis key with expiry), and releases it after every pending save
• Version-Checked Writes - A server never overwrites changes made by another one; the conflicting copy is kept in conflicts/
• Crash Recovery - Leases left by a crashed server are cleared when it starts again, or taken over by another server after Heartbeat-Timeout
• Redis Locking - Redis now has real locks (CocoVaults 4 had none)
• Server Identity - Server-Name "auto" keeps a stable id in server-id.txt, and Lock-Wait-Seconds lets players switch servers smoothly
✨ New Features
• Backups & Restore - Automatic backups (interval and how many to keep), /cv admin backup, and /cv admin restore <file> [player] into any storage. A backup is taken before every destructive action
• Audit Log - Daily files with every staff action and, optionally, what players move in and out of their vaults
• Admin Toolkit - /cv admin list, inspect (read-only), delete, clear, purge empty|inactive and info; admin commands also run from the console; /cv <player> <vault> shortcut; one permission per admin command and cocovaults.admin.edit
• /cv sort - Merges stacks and sorts a vault by item
• Smart Blacklist - Rules by material, regex:, name:, lore:, model: and enchant:, plus a WHITELIST mode
• Restrictions - Disabled worlds, blocked game modes and an open cooldown, with a bypass permission
• Ender Chest Access - Right-clicking an ender chest can open the vault selector
• Better Selector - Filler items, locked-vault previews, date format, configurable navigation slots and lore placeholders ({items}, {free}, {size}, {last_access})
• PlaceholderAPI - %cocovaults_max_vaults%, _available_vaults, _used_vaults, _size_<n>, _items_<n>, _free_<n> and _name_<n>, and PlaceholderAPI placeholders inside every message
• Sounds & Update Checker - Open, close, denied and page sounds, and a notice to the console and admins when a new version is out
• MiniMessage Everywhere - MiniMessage, & codes and &#RRGGBB in every message
• Importers - PlayerVaultsX (even when it is no longer installed), AxVaults, EnderVaults, FairyVaults, CocoVaults 3 (files, SQLite, MySQL and MariaDB) and CocoVaults Lite
• Migrations - Move vaults between YAML, JSON, SQLite, H2, MySQL, MariaDB and Redis with three confirmations, a progress bar and a backup of the destination first; switch storage live with /cv admin reload
• Database Options - Table-Prefix, extra JDBC properties, and Redis user, SSL and key prefix
🕹️ Built for 1.8.8 - 26.2
• Java 8 Ready - One jar for Spigot and Paper 1.8.8 up to 26.2, running on Java 8 and every newer Java
• Modern Names Everywhere - Materials and sounds use their modern names on every version (BLACK_STAINED_GLASS_PANE, block.chest.open) and are translated for old servers; old names work too
• Items Survive Minecraft Upgrades - Vaults remember the data version they were saved with, and items are upgraded with Mojang's own converters when the server is updated: 1.8 potions and spawn eggs, the 1.13 flattening and every later rename
• Exact Item Copies - Items are stored as binary NBT, which keeps names, lore and books exactly (quotes and brackets included) on every version
• MySQL 8.4 on Old Servers - MySQL and MariaDB go through the bundled MariaDB driver, which also logs into MySQL 8.4+ (the MySQL driver shipped with 1.8 - 1.16 servers cannot)
• Old-Version Details - The 32-character title limit of 1.8 is handled, hex colors are used from 1.16 (the nearest classic color before), and off-hand and bundle checks apply where they exist
• Every Command Works on 1.8 - Commands such as /cv icon work on 1.8 (CocoVaults 4 answered with an internal error there), and the server's own SQLite driver of 1.8 is supported
• Easy Move to 26.3+ - CocoVaults 5 (Premium) shares the folder and the data format, and reads these vaults as they are
⚠️ Important Changes
• Minecraft Version - This edition targets Minecraft 1.8.8 - 26.2 on Paper and Spigot. On 26.3+ use CocoVaults 5 (Premium) (a warning is shown at startup)
• Settings.yml Updated Automatically - Every value you set is kept and the previous file is saved in old-configs/
• Data Compatible - CocoVaults 4 data (JSON, YAML, SQLite, MySQL, MariaDB and Redis) is read as it is; SQL tables get two new columns automatically
• CocoVaults 3 - A CocoVaults 3 configuration is kept as Settings-v3.yml; bring the vaults over with /cv admin import CocoVaults3
• Folia - Folia is not supported
📋 Update Instructions
1. BACKUP YOUR DATA - copy plugins/CocoVaults and your database before updating
2. Stop your server
3. Replace the old jar with CocoVaults-Legacy-5.0.0-LEGACY.jar
4. Start your server and check the console: Settings.yml is updated keeping your values
5. Coming from CocoVaults 3? Run /cv admin import CocoVaults3
🔍 Technical Details
For server administrators interested in the technical details:
• Same features as CocoVaults 5, compiled against Spigot 1.8.8 for Java 8
• Adventure 4.26.1, NBT-API 2.16.1, XSeries 13.7.1, Gson 2.14.0 and HikariCP 4.0.3, relocated, with Adventure, XSeries and Gson trimmed to the classes CocoVaults uses; Redis is spoken by CocoVaults' own small client (no Jedis)
• H2 2.2.224 (the last H2 built for Java 8, the same in every edition) and MariaDB Connector/J 3.5.10 travel packed with XZ, are unpacked on first use into plugins/CocoVaults/libraries/ (checked by SHA-256) and load apart from the server; H2 ships without its web console and TCP/PG servers. The jar is 3.5 MB
• H2 tested with bot players on Paper 1.8.8, 1.12.2, 1.16.5, 1.21.11 and 26.2: every vault scenario on H2, a server killed right after a save, backups, reloads and H2 <-> JSON migrations
• Tested with bot players on Paper 1.8.8, 1.9.4, 1.11.2, 1.12.2, 1.13.2, 1.14.4, 1.15.2, 1.16.5, 1.17.1, 1.18.2, 1.19.4, 1.20.4, 1.21.11, 26.1.2 and 26.2
• Items stored on 1.8.8 checked on 1.9.4, 1.11.2 and every major version from 1.12.2 to 1.21.11, and in CocoVaults 5 on 26.x
• On 1.8.8: upgrade from CocoVaults 4, migrations, storage and serialization switches, backups and restores, PlaceholderAPI, and cross-server locking on MySQL 8.4, MariaDB and Redis
• Checked again with the final jar on 1.8.8, 1.12.2, 1.16.5, 1.21.11 and 26.2: every H2 scenario and hard-crash test, cross-server on MySQL 8.4, MariaDB and Redis, the admin commands and the migration progress bar