
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.
- Загрузки
- 4K
- Подписчики
- 10
- Обновлён
- 30 мая 2026 г.
- Лицензия
- MIT
Опубликован 22 декабря 2025 г.
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.

Available languages: English, Español, Nederlands, 中国人, Français
★ 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' balancesezeconomy.eco: Use /eco admin commandezeconomy.pay: Use /pay commandezeconomy.currency: Use /currency commandezeconomy.admin: Use /ezeconomy admin commands (cleanup, reload, database, daily reset)Bank Permissions:
ezeconomy.bank.create: Create a new bankezeconomy.bank.delete: Delete a bankezeconomy.bank.balance: View bank balanceezeconomy.bank.deposit: Deposit to a bankezeconomy.bank.withdraw: Withdraw from a bankezeconomy.bank.addmember: Add a member to a bankezeconomy.bank.removemember: Remove a member from a bankezeconomy.bank.info: View bank infoezeconomy.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
- Place
EzEconomy.jarin your plugins folder - Configure
config.ymland the appropriateconfig-*.ymlfile for your storage type - 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
- Use placeholders in chat, scoreboard, and other 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:
- Implement the
StorageProviderinterface in your plugin or module. - Register your provider before EzEconomy loads:
EzEconomy.registerStorageProvider(new YourProvider(...)); - Only one provider can be registered. If set, EzEconomy will use it instead of YML/MySQL.
- 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
| Plugin | Version | Storage | Redis | Status | Run time (s) | Deposit avg (ms) | Withdraw avg (ms) | Balance/Has avg (ms) | RAM avg (MiB) | RAM peak (MiB) | ? vs EzEconomy baseline |
|---|---|---|---|---|---|---|---|---|---|---|---|
| essentialsx | 2.21.1 | file | off | ok | 1.021 | 0.483072 | 0.276326 | 0.005248 | 465.76 | 466.50 | N/A |
| ezeconomy | 3.1.2 | mysql | off | ok | 0.090 | 0.008794 | 0.007697 | 0.004436 | 415.20 | 415.50 | 1.00x deposit |
| ezeconomy | 3.1.2 | mysql | on | ok | 0.098 | 0.012991 | 0.008751 | 0.004505 | 405.67 | 406.02 | 1.48x deposit |
| ezeconomy | 3.1.2 | sqlite | off | ok | 0.034 | 0.008090 | 0.003718 | 0.003299 | 420.58 | 420.78 | 1.00x deposit |
| ezeconomy | 3.1.2 | sqlite | on | ok | 0.036 | 0.007114 | 0.004541 | 0.003127 | 447.34 | 447.37 | 0.88x deposit |
| xconomy | 2.26.3 | mysql | off | ok | 0.547 | 0.164429 | 0.129993 | 0.191681 | 465.28 | 467.52 | 18.70x deposit |
| xconomy | 2.26.3 | sqlite | off | ok | 0.290 | 0.109194 | 0.061594 | 0.080283 | 428.20 | 430.39 | 13.50x deposit |
Bank Operation Benchmarks
| Plugin | Version | Storage | Redis | Status | Run time (s) | BankDeposit avg (ms) | BankWithdraw avg (ms) | BankBalance/Has avg (ms) | RAM avg (MiB) | RAM peak (MiB) |
|---|---|---|---|---|---|---|---|---|---|---|
| essentialsx | 2.21.1 | file | off | skipped (Vault bank API not supported by this economy provider) | N/A | N/A | N/A | N/A | N/A | N/A |
| ezeconomy | 3.1.2 | mysql | off | ok | 3.330 | 1.225967 | 1.153788 | 0.567417 | 449.95 | 458.75 |
| ezeconomy | 3.1.2 | mysql | on | ok | 3.090 | 1.122824 | 1.078041 | 0.516253 | 440.06 | 448.27 |
| ezeconomy | 3.1.2 | sqlite | off | ok | 2.126 | 0.960253 | 0.838308 | 0.061351 | 463.86 | 469.28 |
| ezeconomy | 3.1.2 | sqlite | on | ok | 1.864 | 0.827309 | 0.747836 | 0.064934 | 490.66 | 496.37 |
| xconomy | 2.26.3 | mysql | off | skipped (Vault bank API not supported by this economy provider) | N/A | N/A | N/A | N/A | N/A | N/A |
| xconomy | 2.26.3 | sqlite | off | skipped (Vault bank API not supported by this economy provider) | N/A | N/A | N/A | N/A | N/A | N/A |
❓ Support
- For help, join our community Discord
🔗 Related Plugins
Ченджлог
3.1.2Релиз1.19.4, 1.20.6, 1.21.11 · 30 мая 2026 г.
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.

Configuration: moved MySQL tuning keys into
performance.mysqlin the mainconfig.yml. The plugin now prefersperformance.mysql.*with fallbacks tomysql.*inconfig-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:
/ecocommand permissions tightened. New granular permission nodes added:ezeconomy.eco.give,ezeconomy.eco.take,ezeconomy.eco.set,ezeconomy.eco.gui(GUI opens requireezeconomy.eco.gui), andezeconomy.ecoremains 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.
3.1.1Релиз1.19.4, 1.20.6, 1.21.11 · 28 мая 2026 г.
Added
- Global
debugflag: new top-leveldebug: falseoption inconfig.ymlcontrols 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
DailyRewardManagerandMessagingServicenow respect the unifieddebugflag instead of the previous per-feature toggles (daily-reward.debugandcross-server.verbose-logging).
Removed
- Per-feature debug flags
daily-reward.debugandcross-server.verbose-loggingfromconfig.yml- superseded by the new top-leveldebugoption.
3.1.0Релиз1.19.4, 1.20.6, 1.21.11 · 28 мая 2026 г.

Added
- Velocity proxy support - New
ezeconomy-velocitymodule provides a Velocity proxy plugin for cross-server payment notifications and global player list broadcasting. Deployezeconomy-velocity.jaron your Velocity proxy alongside the main plugin on backend servers. - Cross-server messaging layer - New
MessagingService,MessagingTransport, andMessageTypeabstractions in core. Supports three transports: Velocity plugin messaging, BungeeCord plugin messaging, and Redis pub/sub. - Redis pub/sub messaging - New
RedisMessagingTransportin theezeconomy-redismodule 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, enablingresolvePlayerByName()for cross-server name lookups. - Configurable lock timing - New
lockingsection inconfig.ymlwithttl-ms,retry-ms, andmax-attemptssettings, 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.mdanddocs/integration/velocity.mdcovering all three messaging transports, configuration, and deployment. - Velocity CI workflow - GitHub Actions workflow for the
ezeconomy-velocitymodule. - MessagingComponent - Bootstrap component that initialises cross-server messaging during plugin startup.
- New message keys:
eco_give,baltop_footer,payment_cancelled,recipient_offline_queued. /payalias:ezpay.MySQLStorageProvider.persistPlayerInfo()implementation for explicit player data upserts.
Changed
- BungeeCord proxy overhaul -
EzBungeeProxyPluginnow implementsListener, registers bothezeconomy:locksandezeconomy:notifychannels, handles payment notification forwarding, sendsRECIPIENT_OFFLINEresponses, and broadcasts the global player list every 3 seconds. - BungeeCord proxy plugin.yml - Fixed
mainclass reference, addeddescription, 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.mdanddocs/integration/bungeecord.mdto reflect Velocity support and cross-server messaging. StorageProvider.transfer()now uses configurable lock timing viaEzEconomyPlugin.getLockTtlMs/RetryMs/MaxAttempts().
Fixed
- BungeeCord proxy
plugin.yml- Main class was pointing to the wrong class (EzBungeeProxyinstead ofEzBungeeProxyPlugin). - 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
/payfailing silently - Payments to players on other backend servers failed because the recipient was looked up only in Bukkit's local player cache.PayCommandnow checksMessagingService.isNetworkPlayer()andStorageProvider.resolvePlayerByName()when local lookups fail. - Incorrect UUID for cross-server recipients -
PaymentExecutorwas usingBukkit.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 theStorageProviderinterface was being used. Now queries theplayerstable by name to return the correct UUID.
3.0.4Релиз26.1, 26.1.1, 26.1.2 · 17 мая 2026 г.
Fixed
- Folia compatibility —
plugin.ymlnow declaresfolia-supported: trueso EzEconomy loads on Folia servers without being rejected as an unsupported plugin. - API version format —
api-versionchanged from26.1.2to1.21in both the main and PAPI moduleplugin.ymlfiles. Paper build 69 introduced strict Minecraft-version format validation that rejected the old dotted build-number form. - Java 21 runtime compatibility — The
jdk25Maven profile was settingmaven.compiler.release=25, producing class file version 69 that Java 21 JVMs cannot load (UnsupportedClassVersionError). Lowered the release target to21(class file version 65) in both the default properties and the profile; the build JDK requirement ([25,)) is unchanged.
3.0.3-nightly.20260517Бета26.1, 26.1.1, 26.1.2 · 17 мая 2026 г.
Added
Changed
Fixed
Removed
3.0.3-nightly.20260516Бета26.1, 26.1.1, 26.1.2 · 16 мая 2026 г.
Added
Changed
Fixed
Removed
3.0.3-nightly.20260515Бета26.1, 26.1.1, 26.1.2 · 15 мая 2026 г.
Added
Changed
Fixed
Removed
3.0.3-nightly.20260514Бета26.1, 26.1.1, 26.1.2 · 14 мая 2026 г.
Added
Changed
Fixed
Removed
Комментарии
Загружаем…


