
MeowEco
A modern Paper economy plugin with multi-currency support, Vault, PlaceholderAPI, rich tax, frozen funds, exchange rates, and built-in MySQL storage.
MeowEco 26.8.1
MeowEco
26.8.1targets Paper 26.1 / 26.1.1 / 26.1.2 servers running Java 25. This release focuses on smoother use on newer Paper environments and a better out-of-the-box MySQL storage experience.Added
- MySQL storage now ships with the Paper plugin, so server owners no longer need to install the MySQL driver separately.
- Added MySQL pool settings for tuning connection count, timeouts, and connection lifetime.
Changed
- Clarified support for
Paper 26.1,Paper 26.1.1, andPaper 26.1.2, all running on Java 25. - Updated MySQL defaults to use
utf8mb4and improved compatibility with common MySQL 8 authentication and timeout scenarios. - Updated documentation for the current version, supported Paper range, and Java runtime requirement.
Fixed
- Improved MySQL connection stability for charset, authentication, and slow-network situations.
Runtime Notes
- Your server must run on Java 25.
- This release targets Paper 26.1 / 26.1.1 / 26.1.2. If your server is still on Paper / Minecraft
1.21.11or older, do not assume this version is compatible.
📝 Changelog Update - v26.7.4
Here are the summary of changes for the upcoming release:
✅ Code Changes
-
🔍 Player Lookup:
- Removed the name fallback to
Bukkit#getOfflinePlayer(String)inPlayerLookup.resolveOfflinePlayer(...). This prevents non-existent player names from being resolved as forged offline accounts.
- Removed the name fallback to
-
🛡️ Permission Handling:
- Adjusted
EcoCommandpermission checks:give,take,set,freeze,unfreeze, anddeductfrozennow require their own independent permission nodes.setrate,refresh,hide, andunhidecontinue to requiremeoweco.admin.
- Adjusted
⬆️ Dependency Updates
- 📦 Versioning:
- Updated project version and Paper plugin version to
26.7.4.
- Updated project version and Paper plugin version to
-
- Tested exclusively on the Paper server-side.
- Since Paper has not released version 26.1, compatibility is only supported and tested for version 26.1.1.

🛠️ Changelog
✨ Added
- Offline-Player Lookup Support: Added shared support for admin commands and
rich-taxplayer destinations. Offline accounts can now be resolved via UUID, cached profile, database name mapping, or final server lookup. - Permission Declarations: Added explicit declarations to
plugin.ymlfor:meoweco.eco.freezemeoweco.eco.unfreezemeoweco.eco.deductfrozen
🔄 Changed
- Alias Handling Optimization: Optimized
/eco baland/eco topto delegate to the mainmeowecocommand handlers, ensuring consistent behavior and cache management. - Rich-Tax Improvements: Updated configuration to support per-currency rules and provided clearer scheduling log output.
- Documentation: Updated the project documentation and wiki content to align with the current feature set.
🐞 Fixed
- Offline
/eco give: Fixed failures occurring when the target player was not already present in the immediate Bukkit offline-player cache. - Resolution Consistency: Fixed
rich-taxdestination-player resolution to reuse the same lookup path as admin commands. - Code Cleanup: Removed the stale
org.bukkit.Bukkitimport warning inRichTaxService.
- Offline-Player Lookup Support: Added shared support for admin commands and
MeowEco 26.7.1
Added
- Added a configurable Wealth Tax system, supporting:
- Tax threshold amount
- Tax rate
- Execution start time
- Execution interval
- The wealth tax now supports two destinations:
- Confiscated by the system
- Transferred to a specified player's account
Improved
- Updated
config.ymlcomments to bilingual Chinese–English, making it easier for server owners to configure directly. - Improved API parameter validation, rejecting invalid or illegal amount inputs.
- Optimized Placeholder and leaderboard cache refresh logic, reducing main-thread blocking and improving overall stability.
Build
- Updated build configuration and fixed
shadowJarpackaging compatibility issues under the current Gradle environment.
- Added a configurable Wealth Tax system, supporting:
Changelog
- Fixed an issue where players received an incorrect amount of points.
- Fixed an issue where commands using the
/ecoprefix were not working properly.
Changelog
Features
1. Restored Classic Top-Level Commands & Enhanced
/ecoAdmin Tools-
Restored and registered the following top-level commands in
plugin.yml:/bal(aliases:/money,/balance)/pay/baltop/eco(alias:/economy)
-
These commands can now be used directly without the
/mecoprefix, greatly improving compatibility with existing habits of veteran players and administrators. -
Enhanced
/ecoadmin commands and aligned behavior:- Added quick lookup shortcuts:
/eco bal [player] [currency]/eco top [currency]
- All admin subcommands under
/eco(give,take,set,hide,refresh, etc.) now work correctly and are consistent with previous behavior.
- Added quick lookup shortcuts:
2. Tab Completion & Permission Control
- Added / synchronized intelligent tab-completion for all restored commands, improving usability and input efficiency.
- Strictly preserved the existing permission model:
- For example, only players with
meoweco.admincan use/ecoadmin features and related subcommands.
- For example, only players with
3. Baltop UI Cleanup
- Updated
BaltopCommand.javato remove duplicated currency names from the baltop header. - The baltop header now uses only the colored display name defined in the config, resulting in a cleaner, more professional, and visually consistent UI.
4. Fully Localized Help Menu
-
Refactored the
sendHelpmethod inMeowEcoCommand.java:- All help messages (including player commands and admin commands) are now dynamically loaded from language files.
-
Language & permission support:
- All help content is now read from
zh_CN.ymlanden_US.yml, fully respecting the server’s selected language. - The help menu is permission-aware and only shows admin entries to users who actually have the corresponding permissions.
- All help content is now read from
5. New Developer API (MeowEcoAPI)
-
Introduced the
MeowEcoAPI.javainterface providing two core methods:getRegisteredCurrencies(): returns a collection of all registered currency objects.getCurrency(String id): retrieves a currency object by its ID.
-
The implementation of
MeowEcoAPIis registered via BukkitServicesManageron plugin startup:- Other plugins can obtain the API instance via
Bukkit.getServicesManager()and integrate with the economy system in a standardized way.
- Other plugins can obtain the API instance via
Docs & Config
-
Updated
WIKI_CN.mdandWIKI_EN.md:- Documented
/bal,/pay,/baltop,/eco, etc. as “shortcut commands”, while keeping/mecoas the unified entry point for users who prefer a single root command. - Added a “Developer API” section with code samples showing how other plugins can obtain and use
MeowEcoAPIviaBukkit.getServicesManager().
- Documented
-
Synchronized plugin version and related metadata in
build.gradle.ktsandplugin.ymlto reflect the current feature set.
-
MeowEco Changelog (v26.6.4)
1. Exchange Rates Feature Toggle
- New config option: Added
exchange-rates.enabledtoggle inconfig.yml. - Dynamic command hiding:
- When this toggle is disabled, players will not be able to use the
/meco exchangecommand. - The command help page (
/meco help) will automatically hide exchange-related entries. - Tab-completion will no longer suggest the
exchangesubcommand, keeping the command environment clean.
- When this toggle is disabled, players will not be able to use the
2. Config Auto-Update Improvements
- Smart completion: Improved the auto-sync logic when upgrading
config-version. The plugin now prioritizes preserving existing custom settings (such as database passwords, custom currencies, etc.) and only auto-fills newly added config entries that are missing. - Message sync: Only usage hints (entries ending with
-usage) and header/footer template messages are forcibly synchronized during version upgrades, ensuring administrators always have up-to-date command usage guidance. - Language file merging: Enhanced multi-language file loading. Newly added translation entries are now automatically merged into the existing locale files, so you no longer need to manually delete old files to regenerate them.
3. Versioning and Documentation
- Version bump: Plugin version and config version have been updated to
26.6.4andv6respectively. - Wiki updates: Updated both Chinese and English Wiki pages to document the new exchange-rate toggle configuration, as well as the latest PAPI placeholder output behavior.
⚠️ Update Recommendations
- Seamless upgrade: Thanks to the improved config auto-update logic, you can simply replace the JAR file and restart. The plugin will automatically append
enabled: trueunder the exchange-rate config section in yourconfig.ymlwithout altering your existing exchange settings. - Backup advice: Although the config update logic has been optimized, it is still a best practice to back up
config.ymlbefore performing any updates in a production environment.
- New config option: Added
MeowEco Changelog
1. Core Architecture Refactor
-
Unified Command System
Completely removed scattered top-level commands (such as/money,/pay,/baltop, etc.).
All features are now centralized under the main command/meco(or/meoweco). -
Enhanced Multi-Currency System
Fully supports unlimited custom currencies (e.g., Coins, Tokens, Gems).
Each currency now supports:- Independent decimal precision
- Transfer tax rate
- Initial balance configuration
-
Database Architecture Upgrade
Introduced a composite primary key (uuid,currency) mechanism.
The plugin will automatically detect and upgrade legacy database structures, ensuring that the same player can have separate accounts for different currencies without conflicts.
2. PlaceholderAPI System Deep Optimization
-
Dynamic Currency Support
All PAPI placeholders now support specifying a currency ID via suffix
(e.g.,%meoweco_balance_gems%). -
Multiple Output Modes
-
Standard Mode
%meoweco_balance_<ID>%
(Formatted number with thousands separator) -
Short Format
%meoweco_balance_short_<ID>%
(Auto-converts to formats like1.2K,3.4M, etc.) -
Full Format
%meoweco_balance_formatted_<ID>%
(Includes number and currency name) -
Fixed Numeric
%meoweco_balance_fixed_<ID>%
(Raw number without thousands separator; suitable for scoreboards or calculations)
-
3. Administration & Maintenance Improvements
-
Asynchronous Update Checker
Integrated with the Modrinth API for asynchronous update checking.
When a new version is detected, a notification with a download link will automatically be sent to the console and players with themeoweco.adminpermission. -
Leaderboard Accuracy Improvements
- Automatically excludes the system account
taxfrom leaderboards and total server wealth statistics. - Fixed
/meco hidelogic to ensure hidden players are immediately and completely removed from rankings.
- Automatically excludes the system account
-
Instant Refresh Mechanism
Optimized the/meco refreshlogic.
Executing this command will immediately clear:- PAPI cache
- Leaderboard cache
- In-memory data
Forcing the next query to fetch the latest data directly from the database.
4. Compatibility & Code Quality
-
Color Code Fix
Fully supports&color parsing, resolving previous issues where raw color codes appeared in messages and placeholders. -
Performance Optimization
- Removed all unused imports and variables
- Replaced deprecated Java 20+ API usage (such as outdated
URLconstructors)
⚠️ Important Update Warnings
Before updating to v26.6.2, please carefully read the following:
1. Database Backup (Highly Recommended)
Since the plugin will automatically perform SQLite/MySQL table structure reconstruction to support composite primary keys, and although built-in migration logic is included,
it is strongly recommended that you back up yourmeoweco.dbfile or MySQL database before updating, just in case.
2. Command Changes Notice
Because legacy commands such as
/moneyand/payhave been unregistered inplugin.yml,
although the plugin includes silent redirection logic, if you have other plugins (such as scripts, menus, or NPCs) directly calling these old command names,
it is recommended to update them to the new/meco <subcommand>format as soon as possible for better compatibility.
3. Configuration Synchronization
The new version introduces an
update-checkerconfiguration section inconfig.yml.If you are using an older configuration file, it is recommended to:
- Delete it and regenerate a fresh one, or
- Manually synchronize it with the latest configuration structure described in
WIKI_CN.md.
4. Placeholder Changes
If you previously used formatted placeholders in scoreboards, please verify their output behavior.
It is recommended to switch to the new:
_short(compact format), or_formatted(full format)
placeholders for the best visual presentation.
-
Updates
1. Language File Renaming
- Renamed
src/main/resources/lang/messages_en_US.ymltoen_US.yml. - Renamed
src/main/resources/lang/messages_zh_CN.ymltozh_CN.yml. - Code update: Updated the
resolveMessagesResourceNamemethod inConfigManager.javato remove themessages_prefix. Language files are now loaded directly using theen_US.ymlformat. - Please delete the old language files in the
langfolder before updating.
2. Added Transfer Tax Mechanism
-
Configuration: Added a new
currency.transfer-taxoption inconfig.yml(default:0.0).
Supports tax rates between0.0and1.0(e.g.,0.05= 5% tax). -
Core logic: Implemented transfer transactions with tax support in
DatabaseManager.javaandAbstractSQLDatabase.java, ensuring that the deduction (including tax) and the credited amount (after tax) are completed within the same transaction. -
Command update: Updated
PayCommand.java. Transfer commands now automatically calculate and deduct the tax. -
Multilingual support: Added a new
pay-success-sender-taxmessage in bothmessages_en_US.ymlandmessages_zh_CN.yml. When tax is applied, the sender will see a message including the tax amount.
3. Fixed Baltop Command Issue
- Fixed an issue where the
/baltopcommand would not work properly under certain conditions.
- Renamed
Update Details
-
Leaderboard Display Optimization (BaltopCommand):
- Added a display of the total server balance at the top of the
/baltopleaderboard. - Data is retrieved asynchronously with a 5-minute caching mechanism to ensure no performance impact.
- Added a new
baltop-totalconfiguration option in the language file to support custom display formatting.
- Added a display of the total server balance at the top of the
-
New PlaceholderAPI Variables:
%meoweco_server_total%— Total server balance (respects configured decimal places).%meoweco_server_total_raw%— Total server balance (raw numeric value).%meoweco_server_total_formatted%— Total server balance (formatted with unit abbreviations, e.g., 1.5M).- These placeholders use an independent 30-second cache to prevent excessive database load from high-frequency refreshes.
-
Database Layer Upgrade:
- Added a new
getTotalBalance()method inDatabaseManager. - Implemented an efficient SQL
SUM(balance)query inAbstractSQLDatabase.
- Added a new
-
Documentation Updates:
- Updated
WIKI_CN.mdandWIKI_EN.mdto include explanations of the new placeholders.
- Updated
-
Plugin Compatibility & Optimization
- Fully supports all Minecraft versions 1.18 and above
- Codebase has been comprehensively optimized to improve performance and efficiency
🆕 Changelog | v26.1.0
✨ New Features
Admin Commands
/eco hide <player>
Hide a player from the leaderboard/eco unhide <player>
Restore a player’s visibility on the leaderboard/eco refresh
Refresh the leaderboard cache and fix unknown or invalid player names
🛠️ Improvements & Refactors
- EcoCommand.java
- Refactored command structure for better maintainability
- All messages are now retrieved via
ConfigManager - Full support for Adventure API text formatting and colors
📦 Version Update
- Plugin version updated to
26.1.0 - Version number synchronized in both
plugin.ymlandbuild.gradle.kts - Versioning scheme aligned with Minecraft-style versioning
✅ Compatibility
- Compatible with all currently supported Minecraft server versions
- Updating is recommended for improved leaderboard stability and admin control
Нет описания изменений

