OpenEco is a single-server-first economy plugin for Paper or Folia.
It keeps account state in memory for fast local use, and can optionally do proxy-assisted account handoff sync when you run multiple backend servers against one shared remote database.
What it does:
- Keeps balances in memory for fast reads and writes.
- Stores data in SQLite, H2, MySQL, MariaDB, or PostgreSQL.
- Supports multiple named currencies with a configurable default-currency compatibility layer.
- Exposes Vault v1 and VaultUnlocked v2 economy providers.
- Supports PlaceholderAPI if it is installed.
- Offers optional cross-server handoff sync for shared remote databases when paired with the Velocity proxy addon.
What it does not do:
- Automatic migration between storage backends or file names.
- Real-time distributed balance broadcasts to every backend server.
- Safe simultaneous writes to the same account from multiple live backends without controlled player handoff.
- Paper 1.20.5+ is confirmed to load
- Folia 1.21+ is the current safe baseline
- VaultUnlocked
- PlaceholderAPI if you want placeholders
VaultUnlocked is loaded by Paper as plugin Vault. OpenEco depends on that runtime name.
- Put
OpenEco-<version>.jarinplugins/. - Install VaultUnlocked.
- Start the server once to generate
plugins/OpenEco/config.yml. - Stop the server and review the config.
- Back up
plugins/OpenEco/before opening the server. - Start the server again and verify
/balance,/baltop, and/history.
For multi-backend networks:
- Use MySQL, MariaDB, or PostgreSQL.
- Enable
cross-server.enabled: trueon every backend. - Install the
proxy-addonjar on Velocity. - Restart the proxy and all backend servers.
This mode is for player handoff between backends. It is not a real-time distributed ledger.
| Command | Use | Permission |
|---|---|---|
/balance [player] [currency] |
Check balance | openeco.command.balance |
/baltop [page] [currency] |
View leaderboard | openeco.command.baltop |
/pay <player> <amount> [currency] |
Send money | openeco.command.pay |
/eco give <player> <amount> [currency] |
Give money | openeco.command.eco.give |
/eco take <player> <amount> [currency] |
Take money | openeco.command.eco.take |
/eco set <player> <amount> [currency] |
Set balance | openeco.command.eco.set |
/eco reset <player> [currency] |
Reset to starting balance | openeco.command.eco.reset |
/eco delete <player> |
Delete an account and that account's history | openeco.command.eco.delete |
/eco reload |
Reload config and messages | openeco.command.eco.reload |
/history [player] [page] [currency] |
View transaction history | openeco.command.history |
openeco.admin grants all admin permissions.
- OpenEco is meant for one server with local storage.
- Network mode is opt-in and meant for player handoff over a shared remote database, not for general multi-writer sharing.
- New configs should use
currencies.defaultandcurrencies.definitions.*; the legacycurrency.*block is still read for backward compatibility. - SQLite companion files such as
economy.db-walandeconomy.db-shmare normal while the server is running. - Balance data is flushed periodically and on normal shutdown.
- History can be kept forever or pruned with
history.retention-days.
- Production Guide
- Developer Guide
- Configuration
- Permissions
- PlaceholderAPI
- Addon API
- Technical Notes
- Proxy Addon
./gradlew buildOutput: build/libs/OpenEco-<version>.jar
This project is licensed under the MIT License. See LICENSE.