COWMODSКаталог модов

EzEconomy

Modern, fast, and flexible Vault economy provider for Minecraft servers. Supports YML, MySQL, SQLite, MongoDB, and custom storage. Multi-currency, async caching, and robust permissions for any server size.

Автор: Shadow484028,4 тыс.11обновлён 30 мая 2026 г.
ЭкономикаМеханики игры

Описание

EzEconomy is a modern, fast, and flexible Vault economy provider for Minecraft servers. Supports YML, MySQL, SQLite, MongoDB, and custom storage. Multi-currency, async caching, and robust permissions for any server size. Proven to be to 50x faster then other populair economy plugins.

EzEconomy Icon

Available languages: English, Español, Nederlands, 中国人, Français

ez economy plugin documentation button ez economy plugin support button


★ Our key economy features

EzEconomy is built for performance, flexibility, and ease of use. Highlights include:

  • Vault API compatible: Works with any Vault-based plugin
  • YML, MySQL, SQLite, MongoDB, or custom storage: Flexible, production-ready storage options
  • Thread-safe: Robust error handling and concurrency
  • Multi-currency support: Optional, per-player, fully configurable
  • Async caching: Optimized for large servers
  • Comprehensive commands: /balance, /eco, /baltop, /bank, /pay, /currency
  • Granular permissions: Per-command and per-bank action

⚡ Commands

  • /balance: View your balance
  • /balance : View another player's balance (ezeconomy.balance.others)
  • /eco <give|take|set> : Admin control (ezeconomy.eco)
  • /eco gui: Show balance GUI
  • /baltop [amount]: Show top balances
  • /bank <create|delete|balance|deposit|withdraw|addmember|removemember|info> ...: Bank management (ezeconomy.bank.*)
  • /pay : Pay another player (ezeconomy.pay)
  • /currency [currency]: Set or view your preferred currency (ezeconomy.currency)
  • /ezeconomy cleanup: Remove orphaned player data (ezeconomy.admin)
  • /ezeconomy daily reset: Reset all daily rewards (ezeconomy.admin)
  • /ezeconomy reload: Reload plugin configuration (ezeconomy.admin)
  • /ezeconomy reload messages: Reload only the message file (ezeconomy.admin)
  • /ezeconomy database info: Show database connection info (ezeconomy.admin)
  • /ezeconomy database test: Test the database connection (ezeconomy.admin)
  • /ezeconomy database reset: Reset all database tables (DANGEROUS) (ezeconomy.admin)
  • /tax: Removed — tax functionality moved to EzTax (https://modrinth.com/plugin/eztax)

🛡️ Permissions

  • ezeconomy.balance.others: View other players' balances

  • ezeconomy.eco: Use /eco admin command

  • ezeconomy.pay: Use /pay command

  • ezeconomy.currency: Use /currency command

  • ezeconomy.admin: Use /ezeconomy admin commands (cleanup, reload, database, daily reset)

  • Bank Permissions:

    • ezeconomy.bank.create: Create a new bank
    • ezeconomy.bank.delete: Delete a bank
    • ezeconomy.bank.balance: View bank balance
    • ezeconomy.bank.deposit: Deposit to a bank
    • ezeconomy.bank.withdraw: Withdraw from a bank
    • ezeconomy.bank.addmember: Add a member to a bank
    • ezeconomy.bank.removemember: Remove a member from a bank
    • ezeconomy.bank.info: View bank info
    • ezeconomy.bank.admin: All bank admin actions

⚙️ Configuration Example

config.yml (Only global settings):

storage: yml
multi-currency:
  enabled: false
  default: "dollar"
  currencies:
    dollar:
      display: "Dollar"
      symbol: "$"
      decimals: 2
    euro:
      display: "Euro"
      symbol: "€"
      decimals: 2
  # Tax configuration has been removed from EzEconomy and moved to EzTax.
  # EzTax on Modrinth: https://modrinth.com/plugin/eztax
  conversion:
    dollar:
      euro: 0.95
      gem: 0.01
    euro:
      dollar: 1.05
      gem: 0.012
    gem:
      dollar: 100
      euro: 80

config-yml.yml (YML storage settings):

yml:
  file: balances.yml
  per-player-file-naming: uuid
  data-folder: data

config-mysql.yml (MySQL storage settings):

mysql:
  host: localhost
  port: 3306
  database: ezeconomy
  username: root
  password: password
  table: balances

config-sqlite.yml (SQLite storage settings):

sqlite:
  file: ezeconomy.db
  table: balances
  banksTable: banks

config-mongodb.yml (MongoDB storage settings):

mongodb:
  uri: mongodb://localhost:27017
  database: ezeconomy
  collection: balances
  banksCollection: banks

⬇️ Installation

  1. Place EzEconomy.jar in your plugins folder
  2. Configure config.yml and the appropriate config-*.yml file for your storage type
  3. Restart your server

🔗 Integration

  • EzEconomy automatically registers as a Vault provider
  • No extra setup required for Vault-compatible plugins
  • PlaceholderAPI support:
    • Use placeholders in chat, scoreboard, and other plugins:
      • %ezeconomy_balance% – Your balance
      • %ezeconomy_balance_<currency>% – Your balance in a specific currency (e.g., %ezeconomy_balance_euro%)
      • %ezeconomy_bank_<bank>% – Balance of a specific bank
      • %ezeconomy_top_1% – Top 1 player balance (replace 1 with rank)
      • %ezeconomy_currency% – Your preferred currency
    • Works with all PlaceholderAPI-compatible plugins

🛠️ Developer: Custom Storage Providers

EzEconomy supports custom storage backends (YML, MySQL, SQLite, MongoDB, or your own)! You can implement your own provider for any database or storage system.

How to add a custom provider:

  1. Implement the StorageProvider interface in your plugin or module.
  2. Register your provider before EzEconomy loads:
    EzEconomy.registerStorageProvider(new YourProvider(...));
    
  3. Only one provider can be registered. If set, EzEconomy will use it instead of YML/MySQL.
  4. See the full StorageProvider reference for required methods and implementation details.

This allows you to use SQLite, MongoDB, Redis, or any other system for player balances and banks!


Performance benchmark

Economy Benchmark Summary

PluginVersionStorageRedisStatusRun time (s)Deposit avg (ms)Withdraw avg (ms)Balance/Has avg (ms)RAM avg (MiB)RAM peak (MiB)? vs EzEconomy baseline
essentialsx2.21.1fileoffok1.0210.4830720.2763260.005248465.76466.50N/A
ezeconomy3.1.2mysqloffok0.0900.0087940.0076970.004436415.20415.501.00x deposit
ezeconomy3.1.2mysqlonok0.0980.0129910.0087510.004505405.67406.021.48x deposit
ezeconomy3.1.2sqliteoffok0.0340.0080900.0037180.003299420.58420.781.00x deposit
ezeconomy3.1.2sqliteonok0.0360.0071140.0045410.003127447.34447.370.88x deposit
xconomy2.26.3mysqloffok0.5470.1644290.1299930.191681465.28467.5218.70x deposit
xconomy2.26.3sqliteoffok0.2900.1091940.0615940.080283428.20430.3913.50x deposit

Bank Operation Benchmarks

PluginVersionStorageRedisStatusRun time (s)BankDeposit avg (ms)BankWithdraw avg (ms)BankBalance/Has avg (ms)RAM avg (MiB)RAM peak (MiB)
essentialsx2.21.1fileoffskipped (Vault bank API not supported by this economy provider)N/AN/AN/AN/AN/AN/A
ezeconomy3.1.2mysqloffok3.3301.2259671.1537880.567417449.95458.75
ezeconomy3.1.2mysqlonok3.0901.1228241.0780410.516253440.06448.27
ezeconomy3.1.2sqliteoffok2.1260.9602530.8383080.061351463.86469.28
ezeconomy3.1.2sqliteonok1.8640.8273090.7478360.064934490.66496.37
xconomy2.26.3mysqloffskipped (Vault bank API not supported by this economy provider)N/AN/AN/AN/AN/AN/A
xconomy2.26.3sqliteoffskipped (Vault bank API not supported by this economy provider)N/AN/AN/AN/AN/AN/A

❓ Support


🔗 Related Plugins

Try the other Minecraft plugins in the EzPlugins series

Последние версии

Все версии →
release

EzEconomy 3.1.2

3.1.2
30 мая 2026 г.2,3 тыс.Minecraft: 1.17.1, 1.18.2, 1.19.4, 1.20.6, 1.21.11bukkit, folia, paper, purpur, spigot
Скачать
Что нового
### Added - Performance and reliability improvements to balance fast-path caching and background persistence. ### Changed - Reduced DB contention and improved fast-path caching semantics for balances to provide more consistent immediate responses under load. - Withdraw fast-path: added per-key striped locking to prevent concurrent over-reservations. - Shutdown ordering: background persistence flush now runs before closing JDBC pools to guarantee pending deltas are persisted. ![EzEconomy benchmark](https://i.ibb.co/9HnrVq30/image.png) - Configuration: moved MySQL tuning keys into `performance.mysql` in the main `config.yml`. The plugin now prefers `performance.mysql.*` with fallbacks to `mysql.*` in `config-mysql.yml`; documentation and default configs were updated. - Added MySQL tuning options and safer defaults: background persistence batching/queueing settings and additional Hikari pool tuning keys (`leak-detection-threshold-ms`, `validation-timeout-ms`, `initialization-fail-timeout-ms`, `auto-commit`). JDBC params now include UTF-8 encoding by default. - Security: `/eco` command permissions tightened. New granular permission nodes added: `ezeconomy.eco.give`, `ezeconomy.eco.take`, `ezeconomy.eco.set`, `ezeconomy.eco.gui` (GUI opens require `ezeconomy.eco.gui`), and `ezeconomy.eco` remains the umbrella admin node. Console execution still allowed. ### Fixed - Race conditions where multiple concurrent withdraws could exceed the persisted balance. - Background flush failures during shutdown caused by closed connections. ---
release

EzEconomy 3.1.1

3.1.1
28 мая 2026 г.90Minecraft: 1.17.1, 1.18.2, 1.19.4, 1.20.6, 1.21.11bukkit, folia, paper, purpur, spigot
Скачать
Что нового
### Added - **Global `debug` flag**: new top-level `debug: false` option in `config.yml` controls all verbose/diagnostic logging in one place. When enabled, Jaloquent's internal SQL logging and plugin-level debug messages (cross-server messaging, daily-reward diagnostics) are written to the server console. ### Changed - `DailyRewardManager` and `MessagingService` now respect the unified `debug` flag instead of the previous per-feature toggles (`daily-reward.debug` and `cross-server.verbose-logging`). ### Removed - Per-feature debug flags `daily-reward.debug` and `cross-server.verbose-logging` from `config.yml` - superseded by the new top-level `debug` option. ---
release

EzEconomy 3.1.0

3.1.0
28 мая 2026 г.77Minecraft: 1.17.1, 1.18.2, 1.19.4, 1.20.6, 1.21.11bukkit, folia, paper, purpur, spigot
Скачать
Что нового
![Bungeecord and Velocity support](https://i.ibb.co/cXcFX7g9/velocity-and-bungeecord.png) ### Added - **Velocity proxy support** - New `ezeconomy-velocity` module provides a Velocity proxy plugin for cross-server payment notifications and global player list broadcasting. Deploy `ezeconomy-velocity.jar` on your Velocity proxy alongside the main plugin on backend servers. - **Cross-server messaging layer** - New `MessagingService`, `MessagingTransport`, and `MessageType` abstractions in core. Supports three transports: Velocity plugin messaging, BungeeCord plugin messaging, and Redis pub/sub. - **Redis pub/sub messaging** - New `RedisMessagingTransport` in the `ezeconomy-redis` module enables proxy-independent cross-server messaging via Redis pub/sub. Ideal for multi-proxy setups or networks already running Redis. - **Pending notifications** - Payment notifications for offline players are now stored in the database and delivered on next join. Implemented in all four storage backends (YML, MySQL, SQLite, MongoDB). - **Player info persistence** - `StorageProvider.persistPlayerInfo()` stores UUID/name/display name on join, enabling `resolvePlayerByName()` for cross-server name lookups. - **Configurable lock timing** - New `locking` section in `config.yml` with `ttl-ms`, `retry-ms`, and `max-attempts` settings, replacing hardcoded values. - **VaultEconomyImpl distributed locking** - Withdraw and bank withdraw operations now acquire distributed locks (with local fallback) to prevent race conditions in multi-server environments. - **Cross-server documentation** - New `docs/feature/cross-server.md` and `docs/integration/velocity.md` covering all three messaging transports, configuration, and deployment. - **Velocity CI workflow** - GitHub Actions workflow for the `ezeconomy-velocity` module. - **MessagingComponent** - Bootstrap component that initialises cross-server messaging during plugin startup. - New message keys: `eco_give`, `baltop_footer`, `payment_cancelled`, `recipient_offline_queued`. - `/pay` alias: `ezpay`. - `MySQLStorageProvider.persistPlayerInfo()` implementation for explicit player data upserts. ### Changed - **BungeeCord proxy overhaul** - `EzBungeeProxyPlugin` now implements `Listener`, registers both `ezeconomy:locks` and `ezeconomy:notify` channels, handles payment notification forwarding, sends `RECIPIENT_OFFLINE` responses, and broadcasts the global player list every 3 seconds. - **BungeeCord proxy plugin.yml** - Fixed `main` class reference, added `description`, enabled resource filtering for `${project.version}`. - All sub-module POM versions now inherit from the parent (removed explicit `<version>` tags). - Updated README with cross-server messaging, Velocity integration, and distributed locking documentation links. - Updated `docs/feature/proxy-network.md` and `docs/integration/bungeecord.md` to reflect Velocity support and cross-server messaging. - `StorageProvider.transfer()` now uses configurable lock timing via `EzEconomyPlugin.getLockTtlMs/RetryMs/MaxAttempts()`. ### Fixed - **BungeeCord proxy `plugin.yml`** - Main class was pointing to the wrong class (`EzBungeeProxy` instead of `EzBungeeProxyPlugin`). - **BungeeCord channel mismatches** - Unified lock and notification channels across server and proxy modules. - **PaymentExecutor cross-server notifications** - Offline recipients now receive payment notifications via cross-server messaging instead of silently dropping the message. - **Cross-server `/pay` failing silently** - Payments to players on other backend servers failed because the recipient was looked up only in Bukkit's local player cache. `PayCommand` now checks `MessagingService.isNetworkPlayer()` and `StorageProvider.resolvePlayerByName()` when local lookups fail. - **Incorrect UUID for cross-server recipients** - `PaymentExecutor` was using `Bukkit.getOfflinePlayer(name)` which generates an offline-mode UUID for players who have never joined the local server. It now resolves the correct UUID from the messaging service or shared database. - **`MySQLStorageProvider.resolvePlayerByName()` not implemented** - The default no-op from the `StorageProvider` interface was being used. Now queries the `players` table by name to return the correct UUID. ---
release

EzEconomy 3.0.4

3.0.4
17 мая 2026 г.2,5 тыс.Minecraft: 1.7.10, 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, folia, paper, purpur, spigot
Скачать
Что нового
### Fixed - **Folia compatibility** — `plugin.yml` now declares `folia-supported: true` so EzEconomy loads on Folia servers without being rejected as an unsupported plugin. - **API version format** — `api-version` changed from `26.1.2` to `1.21` in both the main and PAPI module `plugin.yml` files. Paper build 69 introduced strict Minecraft-version format validation that rejected the old dotted build-number form. - **Java 21 runtime compatibility** — The `jdk25` Maven profile was setting `maven.compiler.release=25`, producing class file version 69 that Java 21 JVMs cannot load (`UnsupportedClassVersionError`). Lowered the release target to `21` (class file version 65) in both the default properties and the profile; the build JDK requirement (`[25,)`) is unchanged. ---
beta

EzEconomy 3.0.3-nightly.20260517

3.0.3-nightly.20260517
17 мая 2026 г.79Minecraft: 1.7.10, 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, folia, paper, purpur, spigot
Скачать
Что нового
### Added ### Changed ### Fixed ### Removed ---
beta

EzEconomy 3.0.3-nightly.20260516

3.0.3-nightly.20260516
16 мая 2026 г.61Minecraft: 1.7.10, 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, folia, paper, purpur, spigot
Скачать
Что нового
### Added ### Changed ### Fixed ### Removed ---
beta

EzEconomy 3.0.3-nightly.20260515

3.0.3-nightly.20260515
15 мая 2026 г.51Minecraft: 1.7.10, 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, folia, paper, purpur, spigot
Скачать
Что нового
### Added ### Changed ### Fixed ### Removed ---
beta

EzEconomy 3.0.3-nightly.20260514

3.0.3-nightly.20260514
14 мая 2026 г.53Minecraft: 1.7.10, 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, folia, paper, purpur, spigot
Скачать
Что нового
### Added ### Changed ### Fixed ### Removed ---
beta

EzEconomy 3.0.3-nightly.20260513

3.0.3-nightly.20260513
13 мая 2026 г.66Minecraft: 1.7.10, 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, folia, paper, purpur, spigot
Скачать
Что нового
### Added ### Changed ### Fixed ### Removed ---
release

EzEconomy 3.0.3

3.0.3
13 мая 2026 г.130Minecraft: 1.7.10, 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, paper, purpur, spigot
Скачать
Что нового
### Added - **Auto-create bank on join** - Players now automatically get a personal bank named after themselves on first join. Controlled by `banking.auto-create-on-join` (default `true`); respects the existing `banking.enabled` gate. Idempotent: no duplicate bank is created if one already exists. - **`bank_not_found` message key** - "Bank does not exist" errors now route through a localised `bank_not_found` message key (`&c` prefix) instead of a raw white string. Added to both `en` and `nl` locales. - **`/bank deposit` / `/bank withdraw` optional name** - Both commands now accept `[name] <amount> [currency]` so players can run `/bank deposit 100` to deposit into their own bank without having to type their name. - **`usage_bank_deposit` / `usage_bank_withdraw` message keys** - Matching usage hint messages added to `en` and `nl` locales. ### Fixed - **Server deadlock** - `callSyncMethod(...).get()` was called unconditionally from the main thread during bank commands, causing the server to hang indefinitely. An `isPrimaryThread()` guard now ensures events fired from the main thread are dispatched directly, while background-thread calls still schedule and await a sync task. - **`autoCreateBank` early-return bug** - `autoCreateBank()` was placed after the `store-on-join` gate in `PlayerJoinListener`, meaning it was never called when `store-on-join.enabled` is false (the default). It now runs independently of that gate. ### Refactored - Introduced `util/EventDispatcher` - a single, reusable utility class that encapsulates the thread-safe Bukkit event dispatch pattern (`fireSync` / `fireSyncAndAllow`). All storage providers and `PaymentExecutor` now delegate to this class instead of duplicating the guard inline. ### Tests - Added `PlayerJoinListenerAutoCreateBankTest` (4 tests) covering: bank created on join, creation skipped when `auto-create-on-join: false`, creation skipped when `banking.enabled: false`, and no duplicate creation for a pre-existing bank. ---