Skip to content

WIKI_EN

xiaoyiluck edited this page Sep 6, 2026 · 5 revisions

Wiki Home | English | 简体中文

MeowEco Economy User Guide

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.

Contents

Requirements And Compatibility

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.

Installation And First Run

  1. Stop the server.
  2. Download the latest JAR from Modrinth or GitHub Releases.
  3. Put the JAR in the server's plugins/ directory.
  4. Optionally install Vault and PlaceholderAPI before the first start.
  5. Start the server and wait for MeowEco to enable.
  6. Confirm that plugins/MeowEco/config.yml and plugins/MeowEco/lang/ were created.
  7. 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.

Five-Minute Setup Checklist

  1. Choose sqlite or mysql under storage.type.
  2. Define currencies under currencies.
  3. Set default-currency to an existing currency ID.
  4. Review exchange, transfer-tax, and rich-tax rules.
  5. Run /meco reload for ordinary configuration changes.
  6. Restart the server if storage, metrics, or startup-only integrations changed.

Language Selection

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.

Files And Directories

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.

Configuration Reference

The main file is plugins/MeowEco/config.yml. YAML indentation matters: use spaces, not tabs.

Reload Versus Restart

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, Metrics, And Updates

messages:
  language: "en_US"

metrics:
  enabled: true
  bstats-plugin-id: 0

update-checker:
  enabled: true
  interval: 24
  slug: "meoweco"
  • messages.language accepts en_US or zh_CN.
  • metrics.enabled: false disables MeowEco's bStats initialization.
  • Metrics start only when enabled is true and bstats-plugin-id is a positive registered ID.
  • The official 26.10.0 default ID is 0, so that default does not send statistics.
  • update-checker.interval is measured in hours; invalid non-positive values fall back to 24 hours.

SQLite

SQLite is the simplest option and requires no external service:

storage:
  type: sqlite

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

MySQL

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.

Defining Currencies

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-balance is 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-currency falls back to the first loaded currency and logs a warning.
  • Commands reject amounts with more decimals than the selected currency allows.

Transfer Tax

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.

Exchange Rates

Rates mean 1 source currency = N target currency:

exchange-rates:
  enabled: true
  coins:
    points: 0.1
    gems: 0.01
  points:
    coins: 10.0

Players exchange with:

/meco exchange 100 coins points

MeowEco resolves rates in this order:

  1. A direct source -> target rate.
  2. A route through the default currency, using direct or inverse rates for each side.
  3. 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

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.currencies are considered.
  • Tax is calculated on the amount above threshold, not the full balance.
  • rate is a fraction: 0.05 means 5%.
  • start-time uses the server's local timezone in HH:mm format.
  • interval accepts seconds, minutes, hours, or days such as 30m, 6h, and 1d; a plain number means minutes.
  • destination.type: system removes tax from circulation.
  • destination.type: player transfers tax to the configured player account.
  • Hidden leaderboard accounts and the reserved username tax are excluded from taxable account queries.

Monetary Policy Report

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 Safety Report

precision-migration:
  report-on-startup: true

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

Commands

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.

Player Commands

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.

Administrator Commands

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.

Permissions

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.

Migrating From Another Economy

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.

Production Migration Checklist

  1. Configure the target MeowEco currency and its decimal precision.
  2. Stop purchases, rewards, and other economy writes during the final migration window.
  3. Make a full database backup: stop the server and copy the entire MeowEco directory for SQLite, or take a MySQL dump.
  4. Start the server with MeowEco and the source economy available.
  5. Run the dry-run command and record account count, total, skipped rows, and warnings.
  6. Resolve unexpected skipped rows before applying.
  7. Run the same command with --apply once.
  8. Verify sample players with /meco bal, /meco top, and /meco audit.
  9. Disable the old economy provider after verification, then restart and test dependent shop plugins through Vault.

Vault Migration

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.

EssentialsX Userdata Migration

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.

CSV Migration

Place the file inside:

plugins/MeowEco/migration-input/

Required columns:

  • uuid
  • One balance column named balance, money, points, or amount

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,90

Run:

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

Atomicity, Precision, And Backups

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

Transaction Audit

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.

View A Player

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

Export Recent Events

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

Audit Fields

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.

Vault Integration

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.

PlaceholderAPI

Install PlaceholderAPI before startup. Identifier: meoweco.

Currency Metadata

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

Player Balances

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

Server Totals

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%

Leaderboard

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

Placeholder Cache Behavior

  • 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 refresh clears all integration caches manually.

TrMenu And Shop Integration

MeowEco does not bundle a native TrMenu action extension. The portable integration uses console commands and PlaceholderAPI.

A typical purchase flow is:

  1. Check %meoweco_available_points% against the price.
  2. Run meco take <player> <amount> points or eco take ... as console.
  3. 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>

Developer API

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.

Backups And Upgrades

SQLite Backup

  1. Stop the server cleanly.
  2. Copy the entire plugins/MeowEco/ directory, including database.db and any SQLite sidecar files.
  3. Store the copy outside the live server directory.

MySQL Backup

mysqldump --single-transaction -u meoweco -p meoweco > meoweco-backup.sql

Upgrade Procedure

  1. Read the release notes.
  2. Stop the server and back up the database and MeowEco configuration.
  3. Replace the JAR without deleting plugins/MeowEco/.
  4. Start the server and inspect schema/config update messages.
  5. Run /meco debug currencies, /meco precision report, and sample balance checks.
  6. 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.

Troubleshooting

MeowEco Does Not Load

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

Unknown Or Missing Currency

  • Run /meco debug currencies.
  • Confirm the ID exists directly under currencies.
  • Confirm default-currency matches an existing ID.
  • Check YAML indentation, then run /meco reload.

A Player Has No Account

  • 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 refresh to repair resolvable Unknown account names.

Payment Or Withdrawal Fails

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

Vault Shop Uses The Wrong Currency

  • Set default-currency to the intended ID.
  • Run /meco reload, then restart before production use so dependent plugins rebuild provider state.
  • Remember that Vault exposes one currency only.

Placeholder Shows Zero Or Empty

  • 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 refresh after external database maintenance.

MySQL Connection Fails

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

Migration Count Looks Wrong

  • 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 sources and that the server knows the relevant offline players.
  • For EssentialsX, confirm UUID filenames and money fields.
  • For CSV, confirm headers and UTF-8 encoding.
  • Keep the full database backup until sample players and totals are verified.

Support

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

Wiki Home | English | 简体中文