-
Notifications
You must be signed in to change notification settings - Fork 0
WIKI_EN
Documentation version: 26.10.0
MeowEco is a server-side, multi-currency economy plugin for Paper. It provides player balances, payments, exchanges, transfer tax, frozen funds, rich tax, leaderboards, Vault and PlaceholderAPI integration, transactional migration, and a persistent audit trail.
This guide is written for server owners, administrators, and plugin integrators. Commands use coins, points, and gems as examples; replace them with the currency IDs in your own config.yml.
- Requirements and compatibility
- Installation and first run
- Language selection
- Files and directories
- Configuration reference
- Commands
- Permissions
- Migrating from another economy
- Transaction audit
- Monetary policy report
- Vault integration
- PlaceholderAPI
- TrMenu and shop integration
- Developer API
- Backups and upgrades
- Troubleshooting
| Component | Requirement |
|---|---|
| Server | Paper 26.1.x or 26.2; matching Paper forks such as Purpur are expected to work |
| Java | Java 25
|
| Client installation | Not required |
| Default storage | SQLite |
| Optional storage | MySQL 8-compatible server |
| Optional integrations | Vault, PlaceholderAPI, menu plugins such as TrMenu |
MeowEco is a Paper plugin. The current artifact is not advertised as a direct Spigot, Bukkit, Fabric, Forge, or Velocity build.
- Stop the server.
- Download the latest JAR from Modrinth or GitHub Releases.
- Put the JAR in the server's
plugins/directory. - Optionally install Vault and PlaceholderAPI before the first start.
- Start the server and wait for MeowEco to enable.
- Confirm that
plugins/MeowEco/config.ymlandplugins/MeowEco/lang/were created. - Join once, then run:
/meco bal
/meco debug currencies
Expected startup messages include:
MeowEco API registered.
MeowEco enabled!
When Vault or PlaceholderAPI is present at startup, the log also reports the corresponding registration. Install optional integrations before starting the server, or restart after adding them.
- Choose
sqliteormysqlunderstorage.type. - Define currencies under
currencies. - Set
default-currencyto an existing currency ID. - Review exchange, transfer-tax, and rich-tax rules.
- Run
/meco reloadfor ordinary configuration changes. - Restart the server if storage, metrics, or startup-only integrations changed.
English is the default language:
messages:
language: "en_US"To use Simplified Chinese:
messages:
language: "zh_CN"Save config.yml, then run:
/meco reload
Message files are stored in plugins/MeowEco/lang/en_US.yml and plugins/MeowEco/lang/zh_CN.yml. You may customize either file. Missing keys are added from the bundled defaults; existing customized values are preserved.
An unknown language value falls back to English.
| Path | Purpose |
|---|---|
plugins/MeowEco/config.yml |
Main configuration |
plugins/MeowEco/lang/en_US.yml |
English messages |
plugins/MeowEco/lang/zh_CN.yml |
Simplified Chinese messages |
plugins/MeowEco/database.db |
SQLite database when SQLite is selected |
plugins/MeowEco/migration-input/ |
CSV files accepted by the CSV migrator |
plugins/MeowEco/migration-backups/ |
Automatic pre-import CSV snapshots |
plugins/MeowEco/audit-exports/ |
Audit CSV exports |
The SQL account table is meoweco_accounts. Audit events are stored in meoweco_audit_log in the same SQLite or MySQL database.
The main file is plugins/MeowEco/config.yml. YAML indentation matters: use spaces, not tabs.
| Change | /meco reload |
Full restart |
|---|---|---|
| Language and message file | Yes | No |
| Currency metadata and default currency | Yes | No |
| Exchange rates | Yes | No |
| Rich-tax rules and schedule | Yes | No |
| Storage backend or database connection | No | Yes |
| Vault or PlaceholderAPI newly installed | No | Yes |
| bStats initialization | No | Yes |
| Update-checker task enablement or interval | Restart recommended | Yes |
Changing storage.type does not move data between databases. Use a controlled migration or database export/import; do not expect /meco reload to switch an active connection.
messages:
language: "en_US"
metrics:
enabled: true
bstats-plugin-id: 0
update-checker:
enabled: true
interval: 24
slug: "meoweco"-
messages.languageacceptsen_USorzh_CN. -
metrics.enabled: falsedisables MeowEco's bStats initialization. - Metrics start only when
enabledis true andbstats-plugin-idis a positive registered ID. - The official
26.10.0default ID is0, so that default does not send statistics. -
update-checker.intervalis measured in hours; invalid non-positive values fall back to 24 hours.
SQLite is the simplest option and requires no external service:
storage:
type: sqliteThe database is created at plugins/MeowEco/database.db. SQLite is appropriate for a single Paper server. MeowEco configures WAL mode and a single database connection.
Create the database and user first:
CREATE DATABASE meoweco CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'meoweco'@'%' IDENTIFIED BY 'replace-with-a-strong-password';
GRANT ALL PRIVILEGES ON meoweco.* TO 'meoweco'@'%';
FLUSH PRIVILEGES;Then configure MeowEco:
storage:
type: mysql
mysql:
host: 127.0.0.1
port: 3306
database: meoweco
username: meoweco
password: "replace-with-a-strong-password"
use-ssl: false
connect-timeout: 10000
socket-timeout: 30000
pool:
maximum-pool-size: 10
minimum-idle: 2
connection-timeout: 10000
validation-timeout: 5000
idle-timeout: 600000
max-lifetime: 1800000
properties: {}Restart after changing the storage section. If MySQL is remote, allow the Paper host through the firewall and prefer SSL on untrusted networks. The MySQL driver is bundled in the release JAR.
default-currency: "coins"
currencies:
coins:
display-name: "&eCoins"
singular: "Coin"
plural: "Coins"
initial-balance: 100.0
decimal-places: 2
transfer-tax: 0.0
points:
display-name: "&bPoints"
singular: "Point"
plural: "Points"
initial-balance: 0.0
decimal-places: 0
transfer-tax: 0.05| Key | Meaning |
|---|---|
| Currency section key | Stable ID used in commands, placeholders, SQL, and integrations; IDs are normalized to lowercase |
display-name |
Colored name shown in messages; legacy & color codes are accepted |
singular |
Singular label used by integrations and formatted placeholders |
plural |
Plural label exposed to Vault and placeholders |
initial-balance |
Balance assigned when an account for that currency is first created |
decimal-places |
Accepted and stored input precision; non-negative values are supported, with 0-2 recommended |
transfer-tax |
Fraction removed from /pay, clamped to 0.0-1.0 at runtime |
Important behavior:
- Every player receives an account for each configured currency when they join.
- Changing
initial-balanceis not retroactive; it affects only newly created accounts. - Removing a currency from the config does not delete its SQL rows, but normal commands can no longer resolve that currency ID.
- The default currency is used whenever a command omits a currency and is the only currency exposed through Vault.
- A missing or invalid
default-currencyfalls back to the first loaded currency and logs a warning. - Commands reject amounts with more decimals than the selected currency allows.
For transfer-tax: 0.05, paying 100 coins removes 100 from the sender, credits 95 to the receiver, and removes 5 from circulation. The sender's audit row records the full outgoing amount and the receiver's row records the credited amount.
Transfer tax applies to player payments. It does not automatically apply to admin balance changes or currency exchanges.
Rates mean 1 source currency = N target currency:
exchange-rates:
enabled: true
coins:
points: 0.1
gems: 0.01
points:
coins: 10.0Players exchange with:
/meco exchange 100 coins points
MeowEco resolves rates in this order:
- A direct
source -> targetrate. - A route through the default currency, using direct or inverse rates for each side.
- No exchange when a valid route cannot be found.
Set and persist a direct rate at runtime:
/meco setrate coins points 0.1
Exchange output is rounded half-up to the target currency's configured precision. Exchanges change two currency accounts atomically and both audit rows share one transaction ID.
rich-tax:
enabled: true
currencies:
coins:
enabled: true
threshold: 100000.0
rate: 0.05
gems:
enabled: true
threshold: 5000.0
rate: 0.02
start-time: "03:00"
interval: "24h"
destination:
type: "system"
player: "Admin"- Only currencies listed under
rich-tax.currenciesare considered. - Tax is calculated on the amount above
threshold, not the full balance. -
rateis a fraction:0.05means 5%. -
start-timeuses the server's local timezone inHH:mmformat. -
intervalaccepts seconds, minutes, hours, or days such as30m,6h, and1d; a plain number means minutes. -
destination.type: systemremoves tax from circulation. -
destination.type: playertransfers tax to the configured player account. - Hidden leaderboard accounts and the reserved username
taxare excluded from taxable account queries.
Use the read-only report to measure the state of each configured currency before tuning policy:
/meco policy report
The report runs database work asynchronously and shows total supply, circulating balance (total minus frozen funds), visible account count, and wealth concentration held by the richest account (top1) and the Top 10 accounts (top10). It also prints the configured rich-tax destination and per-currency thresholds/rates.
The report follows messages.language: en_US uses plugins/MeowEco/lang/en_US.yml, while zh_CN uses plugins/MeowEco/lang/zh_CN.yml. The policy-report-*, policy-status-*, and policy-destination-* keys can be translated, recolored, or reworded like the other plugin messages. Run /meco reload after editing them.
Use it as a repeatable operating loop: record a baseline, adjust rich tax or another sink/faucet, then compare later reports and /meco audit export output. The report is observational only; it never changes balances or configuration. Concentration is a signal for policy review, not a promise that prices will remain fixed.
Example: a player has 150,000 coins, the threshold is 100,000, and the rate is 5%. The taxable amount is 50,000 and the tax is 2,500 coins.
If the collector player cannot be resolved, inspect the startup log before relying on player-destination taxation.
precision-migration:
report-on-startup: trueThis startup check reports stored balances that have more decimal places than the current currency configuration. It never changes money.
Run it manually:
/meco precision report
Use the report before reducing a currency from, for example, two decimals to zero.
Command conventions:
-
<value>is required. -
[value]is optional. - An omitted currency uses
default-currency. - Player names may resolve from online players, stored MeowEco accounts, or the server's offline-player cache.
| Command | Purpose | Permission |
|---|---|---|
/meco |
Show help | None |
/meco bal [currency] |
Check your balance | meoweco.balance |
/meco bal <player> [currency] |
Check another player's balance |
meoweco.balance and meoweco.balance.other
|
/meco pay <player> <amount> [currency] |
Pay another player | meoweco.pay |
/meco exchange <amount> <from> <to> |
Exchange currencies |
meoweco.balance; exchange must be enabled |
/meco top [currency] |
Show the top 10 and server total | meoweco.top |
Conventional aliases include /money, /balance, /bal, /pay, /baltop, /moneytop, and /ecotop. MeowEco intercepts these labels so they reach the unified handlers even when another plugin registered a similar command early.
Frozen money remains part of total balance but is not available for withdrawal, payment, exchange, or rich-tax taxable availability calculations.
| Command | Purpose |
|---|---|
/meco give <player> <amount> [currency] |
Add money; creates a missing account with zero before adding |
/meco take <player> <amount> [currency] |
Remove available money |
/meco set <player> <amount> [currency] |
Set total balance to a non-negative value |
/meco freeze <player> <amount> [currency] |
Move available money into the frozen portion |
/meco unfreeze <player> <amount> [currency] |
Release frozen money back to available money |
/meco deductfrozen <player> <amount> [currency] |
Reduce both frozen and total balance |
/meco setrate <from> <to> <rate> |
Save a direct exchange rate to config.yml
|
/meco hide <player> |
Exclude an account from leaderboards and server totals |
/meco unhide <player> |
Include the account again |
/meco refresh |
Clear balance/ranking caches and repair resolvable Unknown names |
/meco reload |
Reload messages, currencies, exchange rules, and rich-tax scheduling |
/meco checkupdate |
Check Modrinth for an update |
/meco debug |
Toggle runtime debug logging |
/meco debug currencies |
List loaded currency IDs |
/meco precision report |
Report stored precision mismatches without changing balances |
/meco migrate ... |
Preview or apply a balance migration |
/meco audit ... |
View or export audit history |
/meco policy report |
Read-only supply, circulation, concentration, and rich-tax policy report |
/eco (alias /economy) also provides balance, top, give, take, set, freeze, unfreeze, deduct-frozen, rate, hide, refresh, and related administration routes.
/meco take and the intercepted /take use meoweco.take. /eco take uses meoweco.eco.take. Use one namespace consistently in your permission setup.
| Permission | Default | Grants |
|---|---|---|
meoweco.balance |
Everyone | Own balance and exchange entry route |
meoweco.balance.other |
OP | Other players' balances |
meoweco.pay |
Everyone | Player payments |
meoweco.top |
Everyone | Leaderboard and server total |
meoweco.take |
OP |
/meco take and /take
|
meoweco.reload |
OP | /meco reload |
meoweco.eco.give |
OP | Give funds |
meoweco.eco.take |
OP | /eco take |
meoweco.eco.set |
OP | Set balance |
meoweco.eco.freeze |
OP | Freeze funds |
meoweco.eco.unfreeze |
OP | Unfreeze funds |
meoweco.eco.deductfrozen |
OP | Deduct frozen funds |
meoweco.debug |
OP | Debug commands |
meoweco.admin |
OP | Migration, audit, precision, rate, hide, refresh, update checks, plus its declared admin child nodes |
meoweco.admin includes the dedicated admin child nodes declared in plugin.yml, but it does not replace ordinary player nodes such as meoweco.balance, meoweco.pay, or meoweco.top in a non-OP permission design.
Migration imports balances into one existing MeowEco currency. It sets the target balance; it does not add the source amount to the existing target balance.
Supported adapters:
- Any live economy provider registered through Vault
- EssentialsX
userdata/*.yml - UTF-8 CSV
All migration commands require meoweco.admin. Every command is a dry-run unless --apply is present.
- Configure the target MeowEco currency and its decimal precision.
- Stop purchases, rewards, and other economy writes during the final migration window.
- Make a full database backup: stop the server and copy the entire MeowEco directory for SQLite, or take a MySQL dump.
- Start the server with MeowEco and the source economy available.
- Run the dry-run command and record account count, total, skipped rows, and warnings.
- Resolve unexpected skipped rows before applying.
- Run the same command with
--applyonce. - Verify sample players with
/meco bal,/meco top, and/meco audit. - Disable the old economy provider after verification, then restart and test dependent shop plugins through Vault.
List source providers:
/meco migrate sources
Preview a provider:
/meco migrate vault coins Essentials
Apply:
/meco migrate vault coins Essentials --apply
The provider name is optional when only one non-MeowEco Vault economy exists. The source plugin must remain enabled until the migration finishes. The adapter visits players known to the server's offline-player registry and asks the selected Vault provider for each balance.
This route works with common Vault-backed economies such as EssentialsX, CMI, XConomy, and The New Economy when they expose balances through the standard Vault API.
Default location:
plugins/Essentials/userdata/
Preview and apply:
/meco migrate essentials coins
/meco migrate essentials coins --apply
An optional path may be supplied as one command argument:
/meco migrate essentials coins plugins/Essentials/userdata
Each filename must be a UUID ending in .yml. MeowEco reads the money field and uses last-account-name when present.
Place the file inside:
plugins/MeowEco/migration-input/
Required columns:
uuid- One balance column named
balance,money,points, oramount
Optional username column names are username, name, or player.
Example:
uuid,username,balance
d290f1ee-6c54-4b01-90e6-d701748f0851,Alice,1250.50
2c1e4b10-a31f-43c2-8ff7-2beed389533c,Bob,90Run:
/meco migrate csv coins balances.csv
/meco migrate csv coins balances.csv --apply
Quoted CSV fields and a UTF-8 BOM are supported. Negative, non-finite, malformed, or invalid-UUID rows are skipped and reported in the preview. When a UUID appears more than once, the last parsed row is used.
- Valid preview balances are rounded half-up to the target currency's precision before import.
- Existing account balance and username are updated; its frozen balance is preserved.
- A new account is created with frozen balance zero.
- The parsed batch is committed in one database transaction.
- A database failure rolls back all balance and audit writes in that batch.
- Every imported account receives a
MIGRATE_SETaudit row with one shared transaction ID. - Before applying, MeowEco writes
migration-backups/before-<currency>-<timestamp>.csv.
The automatic CSV contains the previous balances of existing target accounts touched by the import. Newly created accounts are not present, so this file alone is not a complete rollback for a mixed create/update migration. Keep the full SQLite/MySQL backup until verification is complete.
MeowEco writes successful money changes and their context to meoweco_audit_log. Failed operations do not create audit rows, and audit writes participate in the same SQL transaction as their balance change.
/meco audit <player> [currency] [limit]
Examples:
/meco audit Alice
/meco audit Alice coins 25
/meco audit Alice all 50
The command display limit defaults to 10 and is capped at 50. Use all when you want to specify a limit without filtering by currency.
/meco audit export [limit]
The default and maximum export limit are 10,000 rows. Files are written to plugins/MeowEco/audit-exports/audit-<timestamp>.csv, newest events first.
| Field | Meaning |
|---|---|
transaction_id |
Correlation ID; both sides of one transfer or exchange share it |
created_at |
Event time |
uuid, username
|
Affected account |
currency |
Currency ID |
operation |
Mutation type |
amount |
Signed or contextual change amount; use before/after fields as the authoritative state |
balance_before, balance_after
|
Total balance transition |
frozen_before, frozen_after
|
Frozen balance transition |
source |
Entry route such as player join, command, Vault, API, rich tax, or migration |
actor |
Player, console, scheduler, or external-plugin context |
Operation values include CREATE_ACCOUNT, DEPOSIT, WITHDRAW, TRANSFER_OUT, TRANSFER_IN, EXCHANGE_OUT, EXCHANGE_IN, FREEZE, UNFREEZE, DEDUCT_FROZEN, and MIGRATE_SET.
There is currently no automatic audit retention setting. Include the audit table in database monitoring and backup plans, and archive exports according to your server's retention policy.
Install Vault before server startup. MeowEco registers an economy provider at highest priority.
Vault exposes only default-currency. Changing the default currency and running /meco reload changes which MeowEco currency Vault calls use, but dependent plugins may cache their economy provider or currency metadata; restart before production use.
Vault behavior:
- Player accounts are supported.
- World-specific method variants use the same global player balance.
- Vault banks are not implemented.
- Vault deposits and withdrawals are audited with source
vault. - Vault does not expose MeowEco's additional currencies; use commands, placeholders, or the MeowEco API for those.
Install PlaceholderAPI before startup. Identifier: meoweco.
| Placeholder | Result |
|---|---|
%meoweco_currency_id% |
Default currency ID |
%meoweco_currency_display% |
Default currency display name |
%meoweco_currency_singular% |
Default singular label |
%meoweco_currency_plural% |
Default plural label |
%meoweco_currency_id_points% |
Explicit currency ID |
%meoweco_currency_display_points% |
Explicit display name |
%meoweco_currency_singular_points% |
Explicit singular label |
%meoweco_currency_plural_points% |
Explicit plural label |
Replace balance with frozen or available for the other balance modes.
| Pattern | Example | Output style |
|---|---|---|
%meoweco_balance% |
Default currency | Grouped number |
%meoweco_balance_<currency>% |
%meoweco_balance_points% |
Grouped number |
%meoweco_balance_raw_<currency>% |
%meoweco_balance_raw_points% |
Java raw double |
%meoweco_balance_formatted_<currency>% |
%meoweco_balance_formatted_points% |
Grouped number plus configured singular label |
%meoweco_balance_fixed_<currency>% |
%meoweco_balance_fixed_points% |
Fixed decimals without separators |
%meoweco_balance_short_<currency>% |
%meoweco_balance_short_points% |
Compact K/M/B/T form |
The format may also be used without an explicit currency, for example %meoweco_available_short%.
An explicit currency is required:
%meoweco_server_total_coins%
%meoweco_server_total_raw_coins%
%meoweco_server_total_formatted_coins%
%meoweco_server_total_fixed_coins%
%meoweco_server_total_short_coins%
%meoweco_top_1_name_coins%
%meoweco_top_1_balance_coins%
%meoweco_top_1_raw_coins%
%meoweco_top_1_formatted_coins%
%meoweco_top_1_fixed_coins%
%meoweco_top_1_short_coins%
Rank starts at 1. An out-of-range rank or unknown currency returns an empty string.
- Player balances: 1 second
- Top lists and server totals: 30 seconds
- The first request after startup or invalidation schedules an asynchronous refresh and may temporarily return zero or an empty result.
- Successful MeowEco mutations invalidate relevant caches;
/meco refreshclears all integration caches manually.
MeowEco does not bundle a native TrMenu action extension. The portable integration uses console commands and PlaceholderAPI.
A typical purchase flow is:
- Check
%meoweco_available_points%against the price. - Run
meco take <player> <amount> pointsoreco take ...as console. - Grant the item, permission, or reward only after your menu flow confirms the deduction.
Illustrative TrMenu-style configuration:
actions:
left:
condition: 'js: Number("%meoweco_available_points%") >= 99'
actions:
- 'console: meco take %player_name% 99 points'
- 'console: lp user %player_name% permission set vip.level1 true'
- 'tell: &aPurchase successful'
deny:
- 'tell: &cNot enough points'Adapt condition and action syntax to your installed TrMenu version. Grant the console the corresponding permission, and test the full flow on a staging server. A menu command sequence is not a single database transaction: if the reward command fails after money is deducted, use audit history to investigate and compensate.
For deposits or locked-money workflows, use:
meco freeze <player> <amount> <currency>
meco unfreeze <player> <amount> <currency>
meco deductfrozen <player> <amount> <currency>
Declare MeowEco as a dependency in your plugin metadata:
softdepend: [MeowEco]Use depend: [MeowEco] when your plugin cannot operate without it.
Resolve the registered service:
MeowEcoAPI api = MeowEcoAPI.get();
if (api == null) {
getLogger().warning("MeowEco API is not available");
return;
}Available methods:
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);API mutation amounts must be finite, positive, and within the currency precision. Successful API writes are audited with source meoweco_api and invalidate the Vault cache.
These methods perform database work synchronously. Do not run repeated or remote-MySQL calls on Paper's main thread; schedule database-heavy work asynchronously and return to the main thread before using thread-sensitive Bukkit APIs.
- Stop the server cleanly.
- Copy the entire
plugins/MeowEco/directory, includingdatabase.dband any SQLite sidecar files. - Store the copy outside the live server directory.
mysqldump --single-transaction -u meoweco -p meoweco > meoweco-backup.sql- Read the release notes.
- Stop the server and back up the database and MeowEco configuration.
- Replace the JAR without deleting
plugins/MeowEco/. - Start the server and inspect schema/config update messages.
- Run
/meco debug currencies,/meco precision report, and sample balance checks. - Test Vault shops and PlaceholderAPI displays before reopening purchases.
MeowEco adds missing config and language keys without intentionally overwriting existing custom values. Review new defaults after each upgrade.
- Confirm the server is Paper 26.1.x/26.2 and Java 25.
- Confirm the downloaded file is the Paper JAR and is not nested in a ZIP.
- Read the first MeowEco exception in
logs/latest.log, not only the final disable message.
- Run
/meco debug currencies. - Confirm the ID exists directly under
currencies. - Confirm
default-currencymatches an existing ID. - Check YAML indentation, then run
/meco reload.
- Have the player join once so accounts are created for every configured currency.
- Admin give/set commands can create a missing target account.
- For offline players, verify the exact stored username and UUID.
- Run
/meco refreshto repair resolvableUnknownaccount names.
- Check total, frozen, and available balances separately.
- Confirm the amount is positive and does not exceed the currency's decimal precision.
- Confirm the receiver already has an account for that currency when using
/pay. - Review
/meco audit <player> all 20; failed operations intentionally have no audit row.
- Set
default-currencyto the intended ID. - Run
/meco reload, then restart before production use so dependent plugins rebuild provider state. - Remember that Vault exposes one currency only.
- Confirm PlaceholderAPI was present during server startup.
- Confirm the placeholder uses a valid lowercase currency ID.
- Wait for the asynchronous first refresh and request the placeholder again.
- Run
/meco refreshafter external database maintenance.
- Test the same host, port, database, username, and password from the Paper machine.
- Check firewall rules and MySQL account host restrictions.
- Enable SSL when required by the server.
- Increase connection/socket timeouts only after checking network reachability.
- Restart after changing storage settings.
- Do not apply until the dry-run account count, total, and skipped count make sense.
- For Vault, ensure the intended provider appears in
/meco migrate sourcesand that the server knows the relevant offline players. - For EssentialsX, confirm UUID filenames and
moneyfields. - For CSV, confirm headers and UTF-8 encoding.
- Keep the full database backup until sample players and totals are verified.
When opening an issue, include:
- MeowEco version
- Paper and Java versions
- Storage type
- Relevant configuration with passwords removed
- Exact command or integration flow
- The first relevant error from
logs/latest.log
Current version: 26.10.0