
MeowEco
MeowEco is a High-Efficiency, Lightweight, and Highly Compatible economy plugin designed for modern Minecraft servers.
MeowEco Documentation
Version: 26.7.4
MeowEco is a Paper economy plugin with multi-currency support, Vault integration, PlaceholderAPI support, exchange rates, frozen funds, and scheduled rich tax.
Platform
- Plugin version:
26.7.4 - Current build target API:
io.papermc.paper:paper-api:26.1.1.build.14-alpha meoweco-paperis compiled with a JDK 25 toolchain- The plugin artifact still targets Java 17 bytecode for compatibility with older supported Paper servers
- If you run
Paper 26.1.x / 26.1.1, the server itself still needs Java 25 because that requirement comes from upstream Paper
Implemented Features
- Multiple currencies loaded from
config.yml - Per-currency display name, singular or plural name, initial balance, decimal precision, and transfer tax
- Configurable default currency used by Vault and command fallbacks
- Currency exchange with direct, inverse, and default-currency-derived rates
- Player balance lookup, payments, and leaderboard
- Admin balance management: give, take, set
- Frozen funds operations:
freeze,unfreeze,deductfrozen - Leaderboard visibility control:
hide,unhide - Leaderboard and placeholder cache refresh:
refresh - Scheduled rich tax with system sink or player collector
- Vault economy provider for the default currency
- PlaceholderAPI expansion with cached balance, top, and server-total placeholders
- Update checker against Modrinth
- Automatic account creation for every configured currency on player join
- Command override listener for legacy labels such as
/bal,/money,/pay,/baltop,/moneytop, and/ecotop
Configuration
Main file: plugins/MeowEco/config.yml
Core Keys
messages:
language: "zh_CN"
storage:
type: sqlite
mysql:
host: localhost
port: 3306
database: meoweco
username: root
password: password
use-ssl: false
update-checker:
enabled: true
interval: 24
slug: "meoweco"
default-currency: "coins"
exchange-rates:
enabled: true
coins:
points: 0.1
gems: 0.01
rich-tax:
enabled: false
threshold: 100000.0
rate: 0.05
start-time: "03:00"
interval: "24h"
destination:
type: "system"
player: "Admin"
currencies:
coins:
display-name: "&eCoins"
singular: "Coin"
plural: "Coins"
initial-balance: 100.0
decimal-places: 2
transfer-tax: 0.0
Rich Tax Behavior
threshold: only the balance above this value is taxedrate: clamped to0.0through1.0start-time: server local time inHH:mminterval: supports raw minutes or suffixed values like30m,6h,1ddestination.type:system: taxed funds are removedplayer: taxed funds are transferred to the configured player account
Commands
Registered Root Commands
/meoweco/money/pay/baltop/eco
Aliases:
/meoweco:meco,meow/money:balance,bal/eco:economy
Player Commands
| Command | Description |
|---|---|
/meco | Shows help |
/meco bal [player] [currency] | Check balance |
/meco money [player] [currency] | Same as bal |
/meco pay <player> <amount> [currency] | Send money |
/meco top [currency] | Show leaderboard |
/meco baltop [currency] | Same as top |
/meco exchange <amount> <from> <to> | Exchange currencies when enabled |
Shortcut or legacy-compatible commands:
/bal,/balance,/money/pay/baltop/moneytop/ecotop
Admin Commands
| Command | Description |
|---|---|
/meco give <player> <amount> [currency] | Add funds |
/meco take <player> <amount> [currency] | Remove funds |
/meco set <player> <amount> [currency] | Set total balance |
/meco setrate <from> <to> <rate> | Update exchange rate and save to config |
/meco hide <player> | Hide player from leaderboard |
/meco unhide <player> | Show player on leaderboard again |
/meco refresh | Clear caches and fix unknown stored names |
/meco reload | Reload config and messages |
/meco checkupdate | Run update check immediately |
/meco debug | Toggle debug mode |
/meco debug currencies | Print loaded currencies |
Additional admin economy routes implemented in EcoCommand:
| Command | Description |
|---|---|
/eco bal [player] [currency] | Balance shortcut |
/eco top [currency] | Leaderboard shortcut |
/eco freeze <player> <amount> [currency] | Move available funds into frozen balance |
/eco unfreeze <player> <amount> [currency] | Release frozen funds |
/eco deductfrozen <player> <amount> [currency] | Deduct from frozen balance and total balance |
TrMenu Compatibility
MeowEco can be used inside TrMenu menus for VIP shops, point purchases, exchange menus, and similar GUI flows.
There are two recommended styles:
1. Short action style
If your TrMenu environment already provides MeowEco short conditions or actions, you can write:
actions:
left:
condition: 'meco points >= 99'
actions:
- 'meco-take: points 99'
- 'console: lp user %player_name% permission set vip.level1 true'
- 'tell: &aPurchase successful'
To give currency:
actions:
left:
actions:
- 'meco-give: points 99'
- 'tell: &aGranted 99 points'
Meaning:
condition: 'meco points >= 99': checks whether the player has at least99of thepointscurrencymeco-take: points 99: removes99ofpointsfrom the player's accountmeco-give: points 99: adds99ofpointsto the player's account
2. Universal command style
If you do not use those short actions, or you want the most portable setup, let TrMenu execute MeowEco commands directly:
actions:
left:
condition: 'js: Number("%meoweco_balance_points%") >= 99'
actions:
- 'console: meco take %player_name% 99 points'
- 'tell: &aPurchase successful'
deny:
- 'tell: &cNot enough points'
To give currency:
actions:
left:
actions:
- 'console: meco give %player_name% 99 points'
- 'tell: &aGranted 99 points'
Notes:
console:is recommended formeco giveandmeco take, so player permissions do not block the action- Conditions can use PlaceholderAPI values such as
%meoweco_balance_points% pointsis only an example currency id; replace it withcoins,gems, or any other currency id from your config- For frozen-balance operations, you can also call
console: eco freeze ...,console: eco unfreeze ..., andconsole: eco deductfrozen ...
Permissions
Declared in plugin.yml:
meoweco.adminmeoweco.balancemeoweco.balance.othermeoweco.paymeoweco.takemeoweco.reloadmeoweco.topmeoweco.eco.givemeoweco.eco.takemeoweco.eco.setmeoweco.eco.freezemeoweco.eco.unfreezemeoweco.eco.deductfrozenmeoweco.debug
Notes:
give,take,set,freeze,unfreeze, anddeductfrozencan now be granted through their dedicated permission nodessetrate,refresh,hide, andunhideshould still stay on the strictermeoweco.adminpath
PlaceholderAPI
Identifier: meoweco
Currency Metadata
%meoweco_currency_singular%%meoweco_currency_plural%%meoweco_currency_display%%meoweco_currency_id%%meoweco_currency_singular_<currency>%%meoweco_currency_plural_<currency>%%meoweco_currency_display_<currency>%%meoweco_currency_id_<currency>%
Balance Placeholders
Supported modes: balance, frozen, available
Supported formats:
- default: formatted numeric balance with separators
rawformattedfixedshort
Examples:
%meoweco_balance%%meoweco_balance_points%%meoweco_balance_short_gems%%meoweco_frozen%%meoweco_frozen_fixed_coins%%meoweco_available_formatted_points%
Server Total Placeholders
%meoweco_server_total_<currency>%%meoweco_server_total_raw_<currency>%%meoweco_server_total_formatted_<currency>%%meoweco_server_total_fixed_<currency>%%meoweco_server_total_short_<currency>%
Top Placeholders
%meoweco_top_<rank>_name_<currency>%%meoweco_top_<rank>_raw_<currency>%%meoweco_top_<rank>_formatted_<currency>%%meoweco_top_<rank>_fixed_<currency>%%meoweco_top_<rank>_short_<currency>%%meoweco_top_<rank>_balance_<currency>%
Developer API
Service lookup:
MeowEcoAPI api = MeowEcoAPI.get();
Main methods currently exposed:
Collection<Currency> getRegisteredCurrencies();
Currency getCurrency(String id);
double getBalance(UUID uuid, String currencyId);
boolean deposit(UUID uuid, String currencyId, double amount);
boolean withdraw(UUID uuid, String currencyId, double amount);
double getFrozenBalance(UUID uuid, String currencyId);
double getAvailableBalance(UUID uuid, String currencyId);
boolean freeze(UUID uuid, String currencyId, double amount);
boolean unfreeze(UUID uuid, String currencyId, double amount);
boolean deductFrozen(UUID uuid, String currencyId, double amount);
Operational Notes
- Leaderboard cache lifetime: 5 minutes
- Placeholder balance cache lifetime: 1 second
- Placeholder top and server-total cache lifetime: 30 seconds
- Most database operations are dispatched asynchronously
- Hidden accounts are excluded from leaderboard output at the database layer
