PlayerVaultZ

⚡ Lightning-fast modern vault system with intelligent pagination, smart sorting, and instant search capabilities. Features seamless PlayerVaultsX migration in seconds.
✨ Core Features
- 📄 Pagination — Sleek multi-page interface with intuitive navigation controls
- 🔄 Sorting — Advanced organization modes for pristine vault management

- 🔍 Smart Search — Instant anvil-based finder with clickable results that jump to exact vault/page/slot locations

- 📦 Import — Flawless PlayerVaultsX vault migration system
- 🔐 Permissions — Granular per-player limits and administrative oversight
- ⚡ Performance — Asynchronous I/O operations, SQLite backend, buttery-smooth experience
🛡️ Protection & Security
- 🚫 Blacklist System — Block items by material, custom name, lore, or NBT tags with configurable deny messages and admin bypass
# Blacklist settings
blacklist:
# Enable item blacklist
enabled: true
# List of blacklisted materials that cannot be stored in vaults
# Use Material names from https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
materials:
- BEDROCK
- COMMAND_BLOCK
- COMMAND_BLOCK_MINECART
- CHAIN_COMMAND_BLOCK
- REPEATING_COMMAND_BLOCK
- STRUCTURE_BLOCK
- STRUCTURE_VOID
- BARRIER
- DEBUG_STICK
- KNOWLEDGE_BOOK
- SPAWNER
- SHULKER_BOX
- WHITE_SHULKER_BOX
- ORANGE_SHULKER_BOX
- MAGENTA_SHULKER_BOX
- LIGHT_BLUE_SHULKER_BOX
- YELLOW_SHULKER_BOX
- LIME_SHULKER_BOX
- PINK_SHULKER_BOX
- GRAY_SHULKER_BOX
- LIGHT_GRAY_SHULKER_BOX
- CYAN_SHULKER_BOX
- PURPLE_SHULKER_BOX
- BLUE_SHULKER_BOX
- BROWN_SHULKER_BOX
- GREEN_SHULKER_BOX
- RED_SHULKER_BOX
- BLACK_SHULKER_BOX
# List of blacklisted items by custom name (supports color codes)
# Items with these exact display names will be blocked
custom-names:
- "&cAdmin Item"
- "&4Banned Item"
# List of blacklisted items by lore (checks if lore contains this text)
# Supports color codes
lore-contains:
- "SOULBOUND"
- "Quest Item"
- "Cannot be stored"
# List of blacklisted NBT tags
# Items with these NBT tags will be blocked
nbt-tags:
- "AdminItem"
- "NoVault"
# Message shown when a player tries to store a blacklisted item
message: "&cThis item cannot be stored in vaults!"
# Allow admins to bypass the blacklist
admin-bypass: true
- 💾 Auto-Backup — Scheduled backups on vault close/player join with compressed .yml.gz storage and retention limits
- 🔄 Restore GUI — Browse backup history per vault, preview contents, selective item/page restoration with safety checks
- ⚠️ Emergency Recovery — Loss-detection triggers with pre-restore safety backups
- 🎨 Customization
- 🖼️ GUI Designer — Fully configurable navigation bars, filler items, custom titles/placeholders, and sound effects
- 🎯 Navigation Styles — Choose from arrows, books, player heads, or custom navigation icons
- ✨ Custom Items — Native support for Nexo, ItemsAdder, and Oraxen with automatic vanilla fallback
- 🔊 Sound System — Customizable audio feedback for all interactions
🎮 Commands
- /pv — Access primary vault
- /pv <#> — Open specific vault number
- /pv
<#> — Browse another player's vault (permission required) - /pv search [term] — Launch search interface or direct search
- /pvadmin — Administrative control panel
- /pvimport playervaultsx — Execute PlayerVaultsX migration
📥 Migration from PlayerVaultsX
- Deploy .yml files to plugins/PlayerVaultZ/import/playervaultsx
- Execute /pvimport playervaultsx to initialize migration
- Progress tracking displays in chat with completion statistics
💡 Tip: Please make sure to test with one player vault data first, and then the rest to ensure all items are being captured and imported over properly. If you experience any issues during this process - report this to me!
🔑 Permissions
- playervaultz.use — Enable vault access (default: true)
- playervaultz.vaults.N — Grant N vault slots (e.g., playervaultz.vaults.5)
- playervaultz.other — Access other players' vaults (admin)
- playervaultz.sort — Enable vault sorting (default: true)
- playervaultz.sort.others — Sort other players' vaults (admin)
- playervaultz.import — Execute import commands (admin)
- playervaultz.admin — Full administrative suite
- playervaultz.blacklist.bypass — Bypass item restrictions (admin)
- playervaultz.unlimited.vaults — Unlimited vault access
🚀 Quick Start
- Deploy JAR to plugins/ directory
- Configure permissions via your management plugin
- Customize GUI elements in config.yml
- Optional: Import existing PlayerVaultsX data
All Versions
+ Add Version- Security update. Everyone on 1.1.0 or older should update.** This release rolls up everything since 1.1.0 (1.2.0 was never published separately).
### Security
- Quick Pick duplication fixed.** In
/pv selectorwith quick pick on, taking a stack (right-click) or all of an item (shift-click) gave the player the items while the vault kept them too. Items are now removed from the vault before they are handed over, anything that doesn't fit goes back into the vault, and only the exact item clicked is taken (named or plugin items that share a material are no longer swept up together). - Navigation bar duplication fixed.** Buttons and filler panes could be pulled out of the vault GUI with a double-click (or an inventory-sorting mod) and kept as real items. GUI items are now tagged and can never be stored or saved.
- Free spyglass from vault search fixed.** Every way of leaving the search anvil on Paper 26.x handed the player the placeholder spyglass.
### New
- Language files.** Every chat message and GUI label is now configurable. Set
language: enorlanguage: frinconfig.yml; the jar ships complete English and French files, and you can add your own inlang/. MiniMessage and&color codes both work. - Per-vault permissions.**
playervaultz.vault.<n>grants a single vault number (for example vault 7 only) alongside the existingplayervaultz.vaults.<n>count permission. - MySQL storage and network support.**
storage.type: mysqllets several servers behind a proxy share vaults, with locking so two servers never open the same vault at once./pvadmin migrate sqlite-to-mysqlmoves existing data. - Custom navigation buttons.** Add your own buttons to the vault GUI in
gui.ymlthat run player or console commands.
### Fixed
- Failed database writes were silently reported as saved, which could lose items. Saves now retry and only count as saved once they actually commit.
- Backup and restore menus no longer break when their titles are translated.
playervaultz.vaults.4now shows up in permission plugin tab completion.
### Upgrading
Drop in the new jar and restart. Existing configs keep working: new message and GUI keys are added to your files automatically. The old
messages.yml is no longer used; its text now lives in lang/en.yml.Requires Paper (or a fork) 1.21.5 or newer, including 26.x.
### Fixed
- Search crash** — Replaced the WesJD AnvilGUI library with Paper's native
MenuType.ANVILAPI. The old library used versioned NMS packages (org.bukkit.craftbukkit.v1_21_R5) that do not exist in Paper 26.1.x, causing aNoClassDefFoundErrorwhenever a player opened the search GUI. - Search field pre-filled with "Spyglass"** — The anvil rename field now starts blank instead of showing the item's material name.
- Security config not loading** — YAML key paths in
SecurityConfigwere mismatched (e.g.security.input-validation.*vs the actualitem-validation.*), causing all security settings to silently fall back to defaults. logAllTransactionsfield rename** —AuditLoggerreferenced a field that had been renamed tologTransactions, which would have caused a compile error on a clean build.- Plugin uptime showing Unix epoch** —
getUptime()was returningSystem.currentTimeMillis()directly instead of subtracting the start time, showing billions of hours of uptime. ItemFlag.HIDE_ITEM_SPECIFICS** — Replaced withHIDE_ADDITIONAL_TOOLTIPinIconSelectorGUIandVaultSelectorGUIto match the renamed enum in Paper 1.21.x.
### Changed
- Security system** — Stripped unimplemented Phase 3–5 dead code (duplication detection, anomaly detection, honeypot vaults). The three active layers (item validation, rate limiting, audit logging) are unchanged.
checkVaultAccess** — Switched fromCompletableFuture.supplyAsync()tocompletedFuture()so the security check is synchronous and cannot arrive after the inventory event has already been processed.SecurityViolationType** — Removed unused enum values:DUPLICATION_DETECTED,ANOMALOUS_BEHAVIOR,HONEYPOT_ACCESS,SUSPICIOUS_TIMING.
### Removed
- AnvilGUI dependency** —
net.wesjd:anvilguiremoved frompom.xml. The CodeMC Maven repositories that existed solely for this dependency are also removed.
### Config
security.yml** — Removed three sections that were never read by the plugin:performance,bypasses, and unused audit sub-keys (log-suspicious-patterns,file-prefix,max-file-size-mb,max-files,include-metadata).config.yml** — Removedsecurity.audit-logging(dead key; audit is controlled bysecurity.yml → audit.enabled).
