Перейти к содержимому
Mineforgian

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.

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

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


🔗 Related Plugins

Try the other Minecraft plugins in the EzPlugins series

Ченджлог

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.

EzEconomy benchmark

  • 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.

3.1.1Релиз1.19.4, 1.20.6, 1.21.11 · 28 мая 2026 г.

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.

3.1.0Релиз1.19.4, 1.20.6, 1.21.11 · 28 мая 2026 г.

Bungeecord and Velocity support

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.

3.0.4Релиз26.1, 26.1.1, 26.1.2 · 17 мая 2026 г.

Fixed

  • Folia compatibilityplugin.yml now declares folia-supported: true so EzEconomy loads on Folia servers without being rejected as an unsupported plugin.
  • API version formatapi-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.

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


Комментарии

Загружаем…