{"id":38230402,"url":"https://github.com/ez-plugins/ezeconomy","last_synced_at":"2026-05-28T23:01:37.540Z","repository":{"id":331977821,"uuid":"1126023054","full_name":"ez-plugins/EzEconomy","owner":"ez-plugins","description":"A complete economy system with banks and multi-currency support.","archived":false,"fork":false,"pushed_at":"2026-05-27T00:27:46.000Z","size":1538,"stargazers_count":4,"open_issues_count":8,"forks_count":3,"subscribers_count":0,"default_branch":"v3.x","last_synced_at":"2026-05-27T01:12:53.463Z","etag":null,"topics":["economy-plugin","minecraft","minecraft-plugin","papermc-plugin","spigotmc-plugin","vault-plugin"],"latest_commit_sha":null,"homepage":"https://ez-plugins.github.io/EzEconomy/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ez-plugins.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-31T22:32:59.000Z","updated_at":"2026-05-26T23:11:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ez-plugins/EzEconomy","commit_stats":null,"previous_names":["ez-plugins/ezeconomy"],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/ez-plugins/EzEconomy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ez-plugins%2FEzEconomy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ez-plugins%2FEzEconomy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ez-plugins%2FEzEconomy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ez-plugins%2FEzEconomy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ez-plugins","download_url":"https://codeload.github.com/ez-plugins/EzEconomy/tar.gz/refs/heads/v3.x","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ez-plugins%2FEzEconomy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33629560,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["economy-plugin","minecraft","minecraft-plugin","papermc-plugin","spigotmc-plugin","vault-plugin"],"created_at":"2026-01-17T00:59:50.320Z","updated_at":"2026-05-28T23:01:37.532Z","avatar_url":"https://github.com/ez-plugins.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EzEconomy\r\n\r\n![EzEconomy Icon](https://www.spigotmc.org/data/resource_icons/130/130975.jpg)\r\n\r\n[![Release](https://img.shields.io/github/v/release/ez-plugins/EzEconomy?label=release\u0026style=flat-square)](https://github.com/ez-plugins/EzEconomy/releases)\r\n[![Publish CI](https://github.com/ez-plugins/EzEconomy/actions/workflows/maven-publish.yml/badge.svg)](https://github.com/ez-plugins/EzEconomy/actions)\r\n[![License](https://img.shields.io/github/license/ez-plugins/EzEconomy?style=flat-square)](https://github.com/ez-plugins/EzEconomy/blob/main/LICENSE.md)\r\n[![GitHub Stars](https://img.shields.io/github/stars/ez-plugins/EzEconomy?style=social)](https://github.com/ez-plugins/EzEconomy/stargazers)\r\n\r\n**EzEconomy** is a professional-grade Vault economy provider for Minecraft servers. Choose from YML, MySQL, SQLite, MongoDB, or custom storage with multi-currency support, async caching, and thorough permission controls.\r\n\r\n## Runtime Compatibility Matrix\r\n\r\n- Java 17 runtime: Minecraft `1.17.x` through `1.20.x`\r\n- Java 21+ runtime: Minecraft `1.21.x` (`1.21.11` currently validated in CI)\r\n- Build artifact: single EzEconomy JAR compiled to Java 17 bytecode\r\n\r\n---\r\n\r\n##  Documentation\r\n\r\n- [Overview](docs/overview.md): General introduction and architecture\r\n- [Commands](docs/commands.md): Command usage and permissions\r\n- [Configuration](docs/configuration.md): All configuration options\r\n- [Developer API](docs/developer-api.md): API usage for plugin developers\r\n- [Permissions](docs/permissions.md): Permission nodes and details\r\n- [Placeholders](docs/integration/placeholderapi.md): PlaceholderAPI integration\r\n- [Storage](docs/storage/storage.md): Storage backends and setup\r\n- [Features - Multi-currency](docs/feature/multi-currency.md): Configure multiple currencies\r\n- [Features - Banking](docs/feature/banking.md): In-plugin bank accounts and permissions\r\n- [Features - Money formatting](docs/feature/money-formatting.md): Presentation options, locales, compact formats, and placeholders\r\n- [Cross-server messaging](docs/feature/cross-server.md): Velocity, BungeeCord, and Redis cross-server transports\r\n- [Caching strategy](docs/feature/caching-strategy.md): `LOCAL`, `REDIS`, `BUNGEECORD`, `DATABASE` options\r\n- [Locking strategy and options](docs/feature/locking-strategy.md): How to choose `LOCAL` vs `REDIS` and what each means\r\n- [Velocity integration](docs/integration/velocity.md): Velocity proxy setup for cross-server messaging\r\n- [BungeeCord integration](docs/integration/bungeecord.md): BungeeCord proxy locking and messaging\r\n- [Proxy \u0026 Redis notes](docs/integration/redis.md): Redis and proxy operational notes\r\n\r\n\u003e Do you get the message \"Missing message: ...\"? Please check the latest available translations: https://github.com/ez-plugins/EzEconomy/tree/main/src/main/resources/languages\r\n\r\n---\r\n\r\n##  Key Features\r\n\r\nEzEconomy is designed for performance, reliability, and operational clarity. Highlights include:\r\n\r\n- **Vault API compatible**: Works with any Vault-based plugin\r\n- **YML, MySQL, SQLite, MongoDB, or custom storage**: Flexible, production-ready storage options\r\n- **Thread-safe**: Robust error handling and concurrency controls\r\n- **Multi-currency support**: Optional, per-player, fully configurable\r\n- **Cross-server messaging**: Payment notifications and player lists via Velocity, BungeeCord, or Redis pub/sub\r\n- **Distributed locking**: LOCAL, REDIS, or BUNGEECORD lock strategies for multi-server safety\r\n- **Async caching**: Optimised for large servers\r\n- **Comprehensive commands**: `/balance`, `/eco`, `/baltop`, `/bank`, `/pay`, `/currency`\r\n- **Granular permissions**: Per-command and per-bank action\r\n\r\n---\r\n\r\n##  Commands\r\n\r\n- **/balance**: View your balance\r\n- **/balance \u003cplayer\u003e**: View another player's balance (`ezeconomy.balance.others`)\r\n- **/eco \u003cgive|take|set\u003e \u003cplayer\u003e \u003camount\u003e**: Administrative balance controls (`ezeconomy.eco`)\r\n- **/baltop [amount]**: Show top balances\r\n- **/bank \u003ccreate|delete|balance|deposit|withdraw|addmember|removemember|info\u003e ...**: Bank management (`ezeconomy.bank`)\r\n- **/pay \u003cplayer\u003e \u003camount\u003e**: Send funds to another player (`ezeconomy.pay`)\r\n- **/pay * \u003camount\u003e**: Send funds to all online players (requires `ezeconomy.payall`; configurable via `pay.pay_all` in `config.yml`). See [Commands](docs/commands.md) for details.\r\n- **/currency [currency]**: Set or view your preferred currency\r\n\r\n---\r\n\r\n##  Permissions\r\n\r\n- `ezeconomy.balance.others`: View other players' balances\r\n- `ezeconomy.eco`: Use /eco admin command\r\n- `ezeconomy.pay`: Use /pay command\r\n- `ezeconomy.currency`: Use /currency command\r\n- **Bank Permissions**:\r\n  - `ezeconomy.bank.create`: Create a new bank\r\n  - `ezeconomy.bank.delete`: Delete a bank\r\n  - `ezeconomy.bank.balance`: View bank balance\r\n  - `ezeconomy.bank.deposit`: Deposit to a bank\r\n  - `ezeconomy.bank.withdraw`: Withdraw from a bank\r\n  - `ezeconomy.bank.addmember`: Add a member to a bank\r\n  - `ezeconomy.bank.removemember`: Remove a member from a bank\r\n  - `ezeconomy.bank.info`: View bank info\r\n  - `ezeconomy.bank.admin`: All bank admin actions\r\n\r\n---\r\n\r\n##  Security Notes for Server Owners\r\n\r\n- **Limit admin permissions**: Only grant `ezeconomy.eco` and `ezeconomy.bank.admin` to trusted staff.\r\n- **Use a permissions plugin**: Manage access with groups/roles so players cannot self-assign economy powers.\r\n- **Lock down database access**: Use a dedicated database user with minimal privileges and keep credentials private.\r\n- **Back up economy data**: Schedule regular backups of your storage files or database to recover from mistakes or exploits.\r\n- **Review bank permissions**: Consider limiting bank creation/withdraw permissions to prevent abuse on public servers.\r\n\r\n---\r\n\r\n##  Dupe Prevention Safeguards\r\n\r\n- **Thread-safe balance updates**: Economy operations are designed to avoid race conditions during concurrent deposits, withdrawals, and transfers.\r\n- **Server-side validation**: Commands and transactions validate amounts to prevent invalid or malformed requests.\r\n- **Storage integrity**: Backends use consistent write patterns to reduce the risk of partial or conflicting balance writes.\r\n\r\n---\r\n\r\n##  Configuration Example\r\n\r\n### `config.yml` (Only global settings):\r\n```yaml\r\nstorage: yml\r\nmulti-currency:\r\n  enabled: false\r\n  default: \"dollar\"\r\n  currencies:\r\n    dollar:\r\n      display: \"Dollar\"\r\n      symbol: \"$\"\r\n      decimals: 2\r\n    euro:\r\n      display: \"Euro\"\r\n      symbol: \"\"\r\n      decimals: 2\r\n    gem:\r\n      display: \"Gem\"\r\n      symbol: \"\"\r\n      decimals: 0\r\n  conversion:\r\n    dollar:\r\n      euro: 0.95\r\n      gem: 0.01\r\n    euro:\r\n      dollar: 1.05\r\n      gem: 0.012\r\n    gem:\r\n      dollar: 100\r\n      euro: 80\r\n```\r\n\r\n### `config-yml.yml` (YML storage settings):\r\n```yaml\r\nyml:\r\n  file: balances.yml\r\n  per-player-file-naming: uuid\r\n  data-folder: data\r\n```\r\n\r\n### `config-mysql.yml` (MySQL storage settings):\r\n```yaml\r\nmysql:\r\n  host: localhost\r\n  port: 3306\r\n  database: ezeconomy\r\n  username: root\r\n  password: password\r\n  table: balances\r\n```\r\n\r\n### `config-sqlite.yml` (SQLite storage settings):\r\n```yaml\r\nsqlite:\r\n  file: ezeconomy.db\r\n  table: balances\r\n  banksTable: banks\r\n```\r\n\r\n### `config-mongodb.yml` (MongoDB storage settings):\r\n```yaml\r\nmongodb:\r\n  uri: mongodb://localhost:27017\r\n  database: ezeconomy\r\n  collection: balances\r\n  banksCollection: banks\r\n```\r\n\r\n---\r\n\r\n##  Installation\r\n\r\n1. Place `EzEconomy.jar` in your plugins folder\r\n2. Configure `config.yml` and the appropriate `config-*.yml` file for your storage type\r\n3. Restart your server\r\n\r\n---\r\n\r\n## - Integration\r\n\r\n- EzEconomy automatically registers as a Vault provider\r\n- No extra setup required for Vault-compatible plugins\r\n- **PlaceholderAPI support**:\r\n  - Use placeholders in chat, scoreboard, and other plugins:\r\n    - `%ezeconomy_balance%`  Your balance\r\n    - `%ezeconomy_balance_\u003ccurrency\u003e%`  Your balance in a specific currency (e.g., `%ezeconomy_balance_euro%`)\r\n    - `%ezeconomy_bank_\u003cbank\u003e%`  Balance of a specific bank\r\n    - `%ezeconomy_top_1%`  Top 1 player balance (replace 1 with rank)\r\n    - `%ezeconomy_currency%`  Your preferred currency\r\n  - Works with all PlaceholderAPI-compatible plugins\r\n\r\n---\r\n\r\n##  Developer: Custom Storage Providers\r\n\r\nEzEconomy supports custom storage backends (YML, MySQL, SQLite, MongoDB, or your own). You can implement your own provider for any database or storage system.\r\n\r\n**How to add a custom provider:**\r\n\r\n1. Implement the `StorageProvider` interface in your plugin or module.\r\n2. Register your provider before EzEconomy loads:\r\n   ```java\r\n   EzEconomy.registerStorageProvider(new YourProvider(...));\r\n   ```\r\n3. Only one provider can be registered. If set, EzEconomy will use it instead of YML/MySQL.\r\n4. See the JavaDoc in `StorageProvider.java` for required methods.\r\n\r\nThis allows you to use SQLite, MongoDB, Redis, or any other system for player balances and banks.\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fez-plugins%2Fezeconomy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fez-plugins%2Fezeconomy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fez-plugins%2Fezeconomy/lists"}