Skip to content

other changelog

Config Plugins edited this page Sep 3, 2026 · 3 revisions

Vault Changelog

Version 2.1.0

Release date: Q3 2025 | Dual build: Java 17 (legacy) + Java 21 (modern) | Platform: Modrinth rj9SgaYL

βœ… New Features

  • βœ… GUI Bank System: Complete bank menu with commands, configurable daily interest, and transaction tax.
  • βœ… Physical Notes with PDC + HMAC anti-dupe: Physical items signed with HMAC-SHA256 (5 fields) and i18n parsing in 11 languages.
  • βœ… GUI Transaction History: Pagination in /vault history with 45 slots per page, daily JSON storage, and MySQL table.
  • βœ… /eco admin command + async /baltop cache: give / take / set / reset with in-memory cache + async rebuild.
  • βœ… Multi-currency: balances.yml with N currency definitions (coins, gems, tokens, etc.), individual symbol and format.
  • βœ… Multi-world MySQL: vault_world_balances table with world-isolated balances + configurable inheritance.
  • βœ… Offline payments + pending charges: /pay queued until recipient connects, vault_charge_requests table.
  • βœ… YAML Loans (loans.yml): Installments, interest rate, default effects when unpaid, automatic collection.
  • βœ… Discord Webhooks embeds: 11 languages with images, colors, and custom placeholders.
  • βœ… 11 languages: messages_en/es/pt/fr/de/it/ru/zh/ja/ko/ar.yml with strict i18n lint.
  • βœ… PlaceholderAPI 25+ placeholders: balance, formatted, fixed, commas, short, top, top_name, top_amount, ecobalance<0-8>dp.
  • βœ… SkinsRestorer GUI heads /pay: Real skin heads via legacy 1.8 reflection and live premium/non-premium profile.
  • βœ… Essentials import: /vault import essentials from EssentialsX / Essentials 2.x.
  • βœ… Offline UUID fallback: Premium/non-premium mode compatible, cracked UUID correctly detected.
  • βœ… Modrinth Update checker: ID rj9SgaYL, release/beta/alpha channel, async check every 12h.
  • βœ… Dual Java build:
    • Legacy: Java 17, supports Minecraft 1.8.8 – 1.20.4.
    • Modern: Java 21, supports Minecraft 1.20.5 – 1.21+.

πŸ”§ Internal Changes

  • Refactor VaultPlugin.getEconomyProvider() β†’ modern SimpleEconomy interface in addition to legacy Economy.
  • Write-behind cache of 6000 ticks + HikariCP pool (configurable MySQL pool_size).
  • TransactionLogService with TxRecord.builder() builder and 25 TxType.
  • HikariCP connections vault_balances, vault_world_balances, vault_charge_requests, vault_transactions.
  • FlywayDB migrations for incremental schema upgrades.
  • Services auto-inject (@Service annotation) via reflection in onEnable.

πŸ§ͺ Performance Improvements

  • Balances loaded in bulk at boot (SELECT * FROM vault_balances only once).
  • Flush dirty batches instead of querying per operation.
  • Async /baltop, does not block main tick in 10k+ player mode.
  • Messages.prefixed() uses per-locale cache, no string regeneration every tick.

πŸ›‘ Security

  • HMAC notes with unique UUID nonce (anti-replay).
  • ChatInput sanitization (XSS chat color exploit) using ChatInputSanitizer.
  • Optional Discord Webhook HMAC signature (shared secret).
  • SHA512 checksum in the Modrinth updater before moving the JAR.

Previous Version: v1.7.1 (LTS)

βœ… Fixes included in 1.7.1 (backported)

Fix Description
NaN balances Double.NaN in format() due to incompatible Locale β†’ uses sanitized BigDecimal.valueOf().
ChatInputSanitizer Allows color codes (Β§6) but blocks Β§Β§, Β§kΒ§k, null bytes, and console exploits (sendMessage).
Locale Currency Format NumberFormat with correct Locale.getDefault(), not always US; fallback if symbol is missing in Locale.
Async getOfflinePlayer Prevents Mojang API timeout on onJoin with offline cache.

Upgrade Path 1.7.1 β†’ 2.1.0

1. Make a full backup of plugins/Vault/ + DB if using MySQL
2. Install Vault-2.1.0-legacy.jar or -modern.jar depending on your Java
3. Start the server
4. Files are migrated automatically:
     - config.yml      β†’ new keys with comments
     - balances.yml    β†’ multi-currency format (auto-migration V1β†’V2)
     - messages_es.yml β†’ new i18n keys
5. Run: /vault verify  β†’ OK: 9 checks passed
6. Run: /vault import essentials  (if you came from Essentials)

Database Migrations (2.1.0)

Flyway File Applies to
V1__init.sql Empty tables
V2__add_world_balances.sql Creates vault_world_balances
V3__add_charge_requests.sql Creates vault_charge_requests
V4__add_transactions.sql Creates vault_transactions 45-slot log
V5__add_loans.sql Creates vault_loans + vault_loan_payments

Breaking Changes 1.x β†’ 2.x

  • ⚠ Economy#getBalance(Player) still works, but SimpleEconomy#getBalance(OfflinePlayer) is the new path.
  • ⚠ Currencies are no longer just "Vault.Economy": there are N currencies in balances.yml.
  • ⚠ Vault 1.x notes do not have an HMAC signature and are invalidated when hmac.secret is changed. Use /vault notes migrate.
  • ⚠ plugin.yml now declares softdepend: LuckPerms, SkinsRestorer, PlaceholderAPI, Skript.

Vault v2.1 Β· Wiki


πŸ†” For Beginners


πŸ’΅ Currency & Format


⌨️ Commands & Permissions


πŸ“¦ Economic Features


❓ FAQ & Troubleshooting


🌐 Multi-world


🀝 Compatibility


🧩 Scripting & Integration


πŸ‘©β€πŸ’» Developers


🧰 Other

Clone this wiki locally