🩺Troubleshooting
The plugin disables itself on startup
NetworkEconomy deliberately refuses to run in a state where balances could be wrong. There are two causes, both logged at SEVERE:
Failed to connect to the database. Disabling. The database is unreachable or the credentials are wrong. Check storage.host / port, that the database named in storage.database already exists, and that the user may connect from the server's IP. The cause is appended to the log line.
Invalid currency configuration The currencies: section is missing or empty. At least one currency must be declared — see currencies.md.
Balances differ between two servers
Work through these in order:
Are both servers pointed at the same database? Different
storage.databasevalues mean two independent economies.Do both have
redis.enabled: trueand the samechannel? A mismatched channel means broadcasts are published where nobody is listening.Do the two servers have different
server-idvalues? A node ignores broadcasts stamped with its own id — two servers sharing an id will ignore each other's updates entirely.Check the console for
Redis failed to start; running in DB-only mode.In that mode, updates propagate only everycache.fallback-refresh-seconds.
Redis failed to start
Redis failed to start; running in DB-only mode. Cause: ...The plugin stays fully functional — the database remains authoritative — and falls back to refreshing online players' caches on a timer. Common causes:
Wrong
host/port, or Redis not running.A password set on Redis but left empty in the config (or the opposite).
redis.usernamefilled in for a Redis that does not use ACL users — leave it empty unless you actually have an ACL user.
Fix the connection and restart; there is no data to recover, since Redis only carries invalidation messages.
Vault plugins do not see the economy
Is Vault installed? Without it, the console logs
Vault not found; the Vault Economy bridge is disabled.Is another economy plugin also registering a Vault provider? Remove it — with two providers, Vault plugins may read from one and write to the other.
On success the console logs
Registered NetworkEconomy as the Vault economy provider.Confirm with Vault's own/vault-info.
A Vault plugin only sees one currency
That is expected. Vault has no concept of multiple currencies, so the bridge exposes only the default currency. Non-default currencies are reachable through NetworkEconomy's commands and API only.
The server lags when a Vault plugin touches the economy
Vault's API is synchronous, so the bridge has to block briefly (bounded by a 5-second timeout) to return an accurate answer. Reads are served from the cache for online players, but a plugin that calls the economy in a tight loop or on every tick will feel it.
The fix is on the calling plugin's side: use the native async API. See for-developers.md.
A player says they lost money
The transaction log is append-only and nothing is ever overwritten, so the truth is always recoverable:
/transactions <player>shows every change, newest first, including which server it happened on and the reason string.Admin actions are stamped
admin:<staff name>,/payaspay:<sender>, and Vault-plugin activity asvault.
A reason of vault with no matching in-game action usually means a third-party plugin charged them.
/baltop looks out of date
Pages are cached for commands.baltop.cache-seconds (default 60). Lower it if you want fresher rankings, but the cache exists to keep a frequently used command from repeatedly running a full sort over the balances table.
Duplicate or missing history entries after a rejoin
Balances are loaded during the async pre-login event and cleared on quit. A player who reconnects rapidly may briefly have a stale cache entry — this affects only what the display shows, never the stored balance, and resolves at the next read or cache expiry.
Enabling debug output
Logs SQL and Redis traffic verbosely. It is noisy, so turn it back off once you have what you need.
Errors mentioning Netty or Lettuce
If you built the plugin yourself and see class-loading conflicts around Netty, the shading configuration was likely altered. All bundled libraries must stay relocated under com.ohalee.networkeconomy.lib — Paper ships its own Netty and Lettuce requires a newer one, so an unrelocated build clashes with the server at runtime. Likewise, minimize must stay off, since it would strip classes that are only reached reflectively (the JDBC driver, Netty handlers, Lettuce codecs).
Last updated