[1.7 - 1.21.*] EzEconomy - Modern Vault Economy Plugin for Minecraft Servers icon

[1.7 - 1.21.*] EzEconomy - Modern Vault Economy Plugin for Minecraft Servers -----

An open-source complete economy system with banks and multi-currency support and advanced API.




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.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.
----------, May 30, 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.
----------, May 28, 2026



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.
----------, May 28, 2026

----------, Apr 21, 2026


  • Added prevention zero-rounded currency conversions (#59)
----------, Mar 25, 2026

----------, Mar 25, 2026

  • Separated PlaceholderAPI to it's own .jar file
----------, Mar 23, 2026

  • Fixed issue storage type loading the wrong path resulting in yml being chosen by default
----------, Mar 15, 2026

Full Changelog: 2.2.4...2.3.0
----------, Mar 2, 2026

Feature changes

  • Added <currency> argument to /balance <player> [<currency>]
  • Added <currency> argument to [icode]/pay <player> [<currency>]
  • Added new conversion calculation subcommand /currency convert <fromCurrency> <toCurrency> <amount>
  • Added new messages and placeholders to give better support for multi-currency usage
Code changes

  • Improved feature tests
  • Added CurrencyUtil for easier reusage
----------, Feb 9, 2026

  • Split the messages.yml into .yml file per language
  • Implemented the new message construction in the plugin
----------, Feb 6, 2026

  • Fixed issue in async handling / sync availability
  • Added feature tests for YML / MySQL / MongoDB storage providers
----------, Jan 31, 2026

  • Fixed issue in finding offline player in /pay command
----------, Jan 31, 2026

Summary
  • Expose cancellable transaction events via the API so external plugins can intercept/abort economy operations.
Added
  • TransactionType.java
  • PreTransactionEvent.java (cancellable)
  • PostTransactionEvent.java
  • PlayerPayPlayerEvent.java (cancellable)
  • docs/api/event/*.md (documentation for each event)
----------, Jan 24, 2026

  • Added /bal alias for the /balance command
----------, Jan 23, 2026

  • Fixed check if player exists in the /pay command
----------, Jan 22, 2026

  • Added new database documentation in docs/database.md: https://github.com/ez-plugins/EzEconomy/blob/main/docs/database.md
  • Added new improved subcommand structure
    • Refactored existing subcommands into the new subcommand structure
  • Cleaned up main plugin class
  • Cleaned up Vault implementation class
  • Added new /ezeconomy reload subcommand to reload all configuration files
  • Added new /ezeconomy database subcommand to check the information of the database
  • Added new /ezeconomy database test subcommand to test every feature quickly on your database
  • Added new /ezeconomy database reset subcommand to reset the database more easily
  • Implemented init() and load() functions of the StorageProvider's over connection building in constructor
  • Added new overridable isConnected() function to StorageProvider class to make connection status available per storage provider
----------, Jan 21, 2026

- Added missing translations to `messages.yml`
- Added `/ezeconomy reload`

Needs messages.yml reset for new messages to be added automaticly
----------, Jan 21, 2026

  • Added PlaceholderAPI in softdepend list to make sure it loads first
----------, Jan 19, 2026

- Added storage provider unavailable to configurable messages
- Added multi currency disabled to configurable messages
- Added cleanup messages to configurable messages
- Fixed code styling
----------, Jan 17, 2026

  • Added French translations to default messages.yml configuration file
----------, Jan 17, 2026

  • Fixed issue in /baltop retrieving offline player names
  • Added cleanup process to clean up non-existing accounts with /ezeconomy cleanup
----------, Jan 16, 2026

  • Added baltop placeholders, by example %ezeconomy_top_1%
----------, Jan 16, 2026

  • Updated source code to 1.4.0 (missing since Github was suspended)
  • Added EzEconomyAPI class
  • Improved markdown documentation in the Github project
  • Added multiple DTOs for better API responses
----------, Jan 12, 2026


  • Solved issue in duplicated StorageProvider. Duplicate has been removed and all usage is now replaced to the StorageProvider in the API.
  • Added missing MongoDB functions
    • Solves issues with MongoDB connection
  • Added missing SQLite functions
    • Solves issues with SQLite connection
  • Added doc block documentation in StorageProvider
----------, Jan 1, 2026

  • Now supporting number support (10m, 5k and 3b) for all commands
  • Added new /eco gui command with a balance GUI
    • Multi currency support
    • Bank support

Only .jar replace required with updating from 1.2.0 to 1.3.0
----------, Dec 31, 2025


What is added?
  • Added optional advanced configurable daily rewards
config.yml
Code (YAML):

# Daily login reward (optional)
daily-reward
:
  enabled
: false
  amount
: 100
  currency
: default
  cooldown-hours
: 24
  permission
: ezeconomy.daily
  message
: "&aYou received &e%amount% %currency% &afor your daily login!"
  sound
: ENTITY_EXPERIENCE_ORB_PICKUP
  debug
: false
 
How to update?

  • Reset the messages.yml configuration file to load the new messages
  • Add daily reward configuration as above in your config.yml or delete the config.yml file to generate a new fresh one.
----------, Dec 29, 2025

  • Removed all tax related features and moved them to separate EzTax plugin. This will save resources for the server owners who don't want to use taxes and gives more options to expend the taxing in the future.
----------, Dec 26, 2025

  • Fixed issue in storage provider loading (selecting which storage to choose)
  • Added missing `set` message for the `/eco set <player> <amount>` subcommand to the messages.yml

Update note

Make sure the `set` exists in your messages.yml or delete the messages.yml to recreate it on server start up.

Code (YAML):
messages:
  en
:
    set
: "&aSet {player}'s balance to {balance}."
----------, Dec 25, 2025

  • Added Minecraft compatibility for 1.7 - 1.21.*
  • Added improved compatibility for Bukkit / Spigot
  • Added libraries to the .jar
  • Added SpigotMC.org integration for checking new updates
  • Fixed issues not resolving legacy chat color codes
----------, Dec 23, 2025

★ EzEconomy Changelog ~ Tax System Update

  • Configurable Tax System: Server admins can now enable and configure taxes on player transactions, bank interest payouts, and currency exchanges.
  • Tax Exemption Permissions: Grant specific players or groups exemption from all economy taxes via permissions.
  • Multi-Currency Support: Taxes and interest are now calculated and displayed per currency, supporting complex server economies.
  • Admin Tax Ledger: Track total tax collected from transactions, interest, and exchanges. View and reset totals with the /tax admin command.
  • PlaceholderAPI Integration: New placeholders for player and bank balances, including multi-currency support, for use in chat, GUIs, and other plugins.
  • Configurable Messages: All tax-related messages are now fully customizable in messages.yml.
  • Configurable Interest Interval: The bank interest payout interval is now settable in config.yml.
----------, Dec 22, 2025

  • Fixed configurable messages through messages.yml
  • Added bStats tracking
  • Improved command completion
----------, Dec 21, 2025

Resource Information
Author:
----------
Total Downloads: 1,537
First Release: Dec 21, 2025
Last Update: May 30, 2026
Category: ---------------
All-Time Rating:
0 ratings
Find more info at modrinth.com...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings