{"id":151460,"date":"2026-06-09T06:22:42","date_gmt":"2026-06-09T03:22:42","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/syncmoney\/"},"modified":"2026-06-09T06:22:42","modified_gmt":"2026-06-09T03:22:42","slug":"syncmoney","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/syncmoney\/","title":{"rendered":"Syncmoney"},"content":{"rendered":"<p># Syncmoney<\/p>\n<p align=\"center\">\n<p>    <img decoding=\"async\" src=\"https:\/\/img.shields.io\/github\/stars\/Misty4119\/Syncmoney\" alt=\"Stars\"><br \/>\n    <img decoding=\"async\" src=\"https:\/\/img.shields.io\/github\/downloads\/Misty4119\/Syncmoney\/total\" alt=\"Downloads\"><\/p>\n<p>\n  <img decoding=\"async\" src=\"https:\/\/img.shields.io\/badge\/Platform-Paper%201.20%2B-orange\" alt=\"Platform\"><br \/>\n  <img decoding=\"async\" src=\"https:\/\/img.shields.io\/badge\/Java-21%2B-blue\" alt=\"Java\"><br \/>\n  <img decoding=\"async\" src=\"https:\/\/img.shields.io\/github\/v\/release\/Misty4119\/Syncmoney\" alt=\"Release\"><br \/>\n  <img decoding=\"async\" src=\"https:\/\/img.shields.io\/github\/license\/Misty4119\/Syncmoney\" alt=\"License\">\n<\/p>\n<p align=\"center\">\n  <b>Enterprise-grade cross-server economy synchronization for Minecraft<\/b><br \/>\n  <\/p>\n<p>    <img decoding=\"async\" src=\"https:\/\/img.shields.io\/discord\/1453099158884978850?label=Discord&#038;logo=discord\" alt=\"Discord\"><\/p>\n<p>    <img decoding=\"async\" src=\"https:\/\/img.shields.io\/badge\/Donate-PayPal-blue\" alt=\"Donate\"><\/p>\n<p>&#8212;<\/p>\n<p>## Overview<\/p>\n<p>Syncmoney is a high-performance Minecraft economy plugin designed for multi-server networks. It synchronizes player balances across all servers in real-time using Redis Pub\/Sub, with comprehensive protection against economic exploits and data loss.<\/p>\n<p>**Perfect for**: Survival servers, factions, SMPs, minigame networks, and any multi-server economy ecosystem.<\/p>\n<p>### Key Highlights<\/p>\n<p>&#8211; \u26a1 **Sub-millisecond reads** \u2014 In-memory caching with O(1) balance lookups<br \/>\n&#8211; \ud83d\udd04 **Instant cross-server sync** \u2014 Redis Pub\/Sub propagation<br \/>\n&#8211; \ud83d\udee1\ufe0f **4-layer circuit breaker** \u2014 Enterprise-grade economic protection<br \/>\n&#8211; \ud83c\udf10 **Built-in Web Admin** \u2014 Vue 3 dashboard with real-time monitoring<br \/>\n&#8211; \ud83d\udd27 **Zero-config Vault** \u2014 Works with any Vault-enabled economy plugin<br \/>\n&#8211; \ud83d\udcca **Full audit trail** \u2014 Complete transaction history with cursor-based pagination<br \/>\n&#8211; \ud83c\udfae **Folia compatible** \u2014 Region-based scheduling support<br \/>\n&#8211; \ud83d\udcbe **Shadow Sync** \u2014 Automatic background backup to external databases<br \/>\n&#8211; \ud83d\udd14 **Discord Webhooks** \u2014 Real-time security notifications<\/p>\n<p>&#8212;<\/p>\n<p>## Features<\/p>\n<p>### Core Synchronization<\/p>\n<p>&#8211; **Real-time Cross-Server Sync** \u2014 Balance changes instantly propagate to all servers via Redis Pub\/Sub<br \/>\n&#8211; **Vault Integration** \u2014 Full compatibility with any Vault-enabled economy plugin (EssentialsX, CMI, etc.)<br \/>\n&#8211; **Atomic Transactions** \u2014 7 Redis Lua scripts prevent money duplication during race conditions<br \/>\n&#8211; **Graceful Degradation** \u2014 Automatic fallback chain: Memory \u2192 Redis \u2192 Database \u2192 LocalSQLite<br \/>\n&#8211; **Bank Support** \u2014 Full Vault bank API implementation with Redis-backed storage<br \/>\n&#8211; **Version-based Optimistic Locking** \u2014 Prevents ABA problems across distributed nodes<\/p>\n<p>### Security &#038; Protection<\/p>\n<p>&#8211; **4-Layer Circuit Breaker**<br \/>\n  &#8211; Single transaction limits<br \/>\n  &#8211; Rate limiting (transactions per second)<br \/>\n  &#8211; Sudden balance change detection<br \/>\n  &#8211; Periodic inflation monitoring<br \/>\n&#8211; **Per-Player Protection (L1-L4)**<br \/>\n  &#8211; L1: Rate limiting per player<br \/>\n  &#8211; L2: Anomaly detection with warning state<br \/>\n  &#8211; L3: Auto-lock for suspicious activity<br \/>\n  &#8211; L4: Global economy lock<br \/>\n&#8211; **Event Overflow Protection** \u2014 WAL-based graceful fallback for queue saturation<br \/>\n&#8211; **Transfer Guard** \u2014 Prevents money loss when players teleport during transactions<br \/>\n&#8211; **Rollback Protection** \u2014 Guards against failed database writes<br \/>\n&#8211; **Discord Webhook Alerts** \u2014 Real-time security notifications for 11 event types<\/p>\n<p>### Web Admin Dashboard<\/p>\n<p>&#8211; **Real-time Monitoring** \u2014 Server status, Redis\/DB health, circuit breaker state<br \/>\n&#8211; **Connection Resiliency** \u2014 Intelligent SSE reconnections with Exponential Backoff &#038; Jitter<br \/>\n&#8211; **Economy Dashboard** \u2014 Total supply, player counts, transaction statistics<br \/>\n&#8211; **Audit Log Viewer** \u2014 Search, filter, cursor-based pagination for massive datasets<br \/>\n&#8211; **Configuration Editor** \u2014 Edit server config without file access<br \/>\n&#8211; **Internationalization** \u2014 Full zh-TW and en-US support<br \/>\n&#8211; **Dark\/Light Theme** \u2014 User preference persistence<br \/>\n&#8211; **PWA Support** \u2014 Installable as a standalone app<\/p>\n<p>### Migration &#038; Backup<\/p>\n<p>&#8211; **CMI Migration Tool** \u2014 One-command import from CMI economy<br \/>\n&#8211; **Multi-Server Merge** \u2014 Combines economy data from multiple CMI servers (LATEST\/SUM\/MAX strategies)<br \/>\n&#8211; **Shadow Sync** \u2014 Automatic background backup to external databases<br \/>\n&#8211; **Checkpoint Resume** \u2014 Large migrations can resume if interrupted<br \/>\n&#8211; **Automatic Backup** \u2014 Creates JSON\/SQL backup before migration<\/p>\n<p>### Leaderboards &#038; Integration<\/p>\n<p>&#8211; **Global Baltop** \u2014 Redis-powered sorted set leaderboard with smart formatting<br \/>\n&#8211; **PlaceholderAPI Expansion** \u2014 10+ dynamic placeholders for scoreboards<br \/>\n&#8211; **Folia Support** \u2014 Region-based scheduling compatibility<br \/>\n&#8211; **Audit Trail** \u2014 Cursor-based pagination with millisecond sequence ordering<\/p>\n<p>&#8212;<\/p>\n<p>## Requirements<\/p>\n<p>| Component | Version |<br \/>\n|&#8212;&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;|<br \/>\n| Server | Paper 1.20+ \/ Spigot 1.20+ \/ Folia 1.20+ |<br \/>\n| Java | 21+ |<br \/>\n| Redis | 5.0+ (for multi-server sync) |<br \/>\n| Database | MySQL 8.0+ \/ MariaDB 10.5+ \/ PostgreSQL 13+ \/ SQLite |<br \/>\n| Plugin | Vault (required) |<br \/>\n| Plugin | PlaceholderAPI (optional) |<\/p>\n<p>> **Note:** Redis and a database (MySQL\/PostgreSQL) are required for cross-server sync. For single-server use, Syncmoney works with SQLite only (no Redis needed).<\/p>\n<p>&#8212;<\/p>\n<p>## Quick Start<\/p>\n<p>### 1. Install<\/p>\n<p>Place `Syncmoney.jar` in your server&#8217;s `plugins\/` folder.<\/p>\n<p>### 2. Configure<\/p>\n<p>Edit `plugins\/Syncmoney\/config.yml`:<\/p>\n<p>&#8220;`yaml<br \/>\nserver-name: &#8220;survival-01&#8221;<\/p>\n<p>redis:<br \/>\n  enabled: true<br \/>\n  host: &#8220;localhost&#8221;<br \/>\n  port: 6379<\/p>\n<p>database:<br \/>\n  enabled: true<br \/>\n  type: &#8220;mysql&#8221;<br \/>\n  host: &#8220;localhost&#8221;<br \/>\n  port: 3306<br \/>\n  username: &#8220;root&#8221;<br \/>\n  password: &#8220;&#8221;<br \/>\n  database: &#8220;syncmoney&#8221;<br \/>\n&#8220;`<\/p>\n<p>### 3. Multi-Server Setup<\/p>\n<p>1. Install Syncmoney on **all** servers<br \/>\n2. Connect all servers to the **same Redis instance**<br \/>\n3. Set a unique `server-name` for each server<br \/>\n4. Restart all servers \u2014 economy syncs automatically<\/p>\n<p>### 4. PlaceholderAPI (Optional)<\/p>\n<p>For scoreboard placeholders:<\/p>\n<p>1. Download `SyncmoneyExpansion.jar` from Releases<br \/>\n2. Place in `plugins\/PlaceholderAPI\/expansions\/`<br \/>\n3. Restart the server<\/p>\n<p>&#8212;<\/p>\n<p>## Configuration<\/p>\n<p>### Economy Modes<\/p>\n<p>| Mode | Description |<br \/>\n|&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;-|<br \/>\n| `auto` | Auto-detect based on Redis\/DB availability (recommended) |<br \/>\n| `local` | Single server only, SQLite backup |<br \/>\n| `local_redis` | Multi-server sync via Redis (no MySQL) |<br \/>\n| `sync` | Full cross-server sync with Redis + MySQL |<br \/>\n| `cmi` | Direct CMI database integration |<\/p>\n<p>### Pay Settings<\/p>\n<p>&#8220;`yaml<br \/>\npay:<br \/>\n  cooldown-seconds: 30<br \/>\n  min-amount: 1<br \/>\n  max-amount: 1000000<br \/>\n  confirm-threshold: 100000<br \/>\n&#8220;`<\/p>\n<p>### Circuit Breaker<\/p>\n<p>&#8220;`yaml<br \/>\ncircuit-breaker:<br \/>\n  enabled: true<br \/>\n  max-single-transaction: 100000000<br \/>\n  max-transactions-per-second: 10<br \/>\n  rapid-inflation-threshold: 0.2<br \/>\n  sudden-change-threshold: 100<\/p>\n<p>player-protection:<br \/>\n  enabled: true<br \/>\n  rate-limit:<br \/>\n    max-transactions-per-second: 5<br \/>\n    max-transactions-per-minute: 50<br \/>\n    max-amount-per-minute: 1000000<br \/>\n&#8220;`<\/p>\n<p>### Discord Webhook<\/p>\n<p>&#8220;`yaml<br \/>\ndiscord-webhook:<br \/>\n  enabled: false<br \/>\n  webhooks:<br \/>\n    &#8211; name: &#8220;admin-alerts&#8221;<br \/>\n      url: &#8220;https:\/\/discord.com\/api\/webhooks\/YOUR_WEBHOOK_URL_HERE&#8221;<br \/>\n      type: &#8220;private&#8221;<br \/>\n      events:<br \/>\n        &#8211; &#8220;player_warning&#8221;<br \/>\n        &#8211; &#8220;player_locked&#8221;<br \/>\n        &#8211; &#8220;player_unlocked&#8221;<br \/>\n        &#8211; &#8220;global_lock&#8221;<br \/>\n        &#8211; &#8220;circuit_breaker_trigger&#8221;<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p>## Web Admin<\/p>\n<p>Syncmoney includes a built-in web administration panel for monitoring economy status and managing transactions.<\/p>\n<p>### Access<\/p>\n<p>By default, the Web Admin is available at `http:\/\/localhost:8080` (when running locally).<\/p>\n<p>### Configuration<\/p>\n<p>&#8220;`yaml<br \/>\nweb-admin:<br \/>\n  enabled: true<br \/>\n  server:<br \/>\n    host: &#8220;0.0.0.0&#8221;<br \/>\n    port: 8080<br \/>\n  security:<br \/>\n    api-key: &#8220;your-secure-api-key-here&#8221;<br \/>\n    cors-allowed-origins: &#8220;*&#8221;<br \/>\n    rate-limit:<br \/>\n      enabled: true<br \/>\n      requests-per-minute: 60<br \/>\n&#8220;`<\/p>\n<p>### In-Game Management<\/p>\n<p>&#8220;`<br \/>\n\/syncmoney web download [latest]    # Download web frontend from GitHub<br \/>\n\/syncmoney web build                # Build frontend from source<br \/>\n\/syncmoney web open                 # Open the web admin server<br \/>\n\/syncmoney web status               # Show web frontend status<br \/>\n\/syncmoney web check                # Check for available updates<br \/>\n&#8220;`<\/p>\n<p>### Production HTTPS Setup<\/p>\n<p>Syncmoney Web Admin does not include built-in SSL support. For production environments, use a reverse proxy:<\/p>\n<p>#### Nginx Configuration<\/p>\n<p>&#8220;`nginx<br \/>\nserver {<br \/>\n    listen 443 ssl;<br \/>\n    server_name syncmoney.yourdomain.com;<\/p>\n<p>    ssl_certificate \/path\/to\/cert.pem;<br \/>\n    ssl_certificate_key \/path\/to\/key.pem;<\/p>\n<p>    location \/ {<br \/>\n        proxy_pass http:\/\/localhost:8080;<br \/>\n        proxy_http_version 1.1;<br \/>\n        proxy_set_header Host $host;<br \/>\n        proxy_set_header X-Real-IP $remote_addr;<br \/>\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br \/>\n        proxy_set_header X-Forwarded-Proto $scheme;<\/p>\n<p>        # WebSocket \/ SSE support<br \/>\n        proxy_set_header Upgrade $http_upgrade;<br \/>\n        proxy_set_header Connection &#8220;upgrade&#8221;;<br \/>\n    }<br \/>\n}<\/p>\n<p># HTTP to HTTPS redirect<br \/>\nserver {<br \/>\n    listen 80;<br \/>\n    server_name syncmoney.yourdomain.com;<br \/>\n    return 301 https:\/\/$server_name$request_uri;<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>#### Caddy Configuration<\/p>\n<p>&#8220;`caddy<br \/>\nsyncmoney.yourdomain.com {<br \/>\n    reverse_proxy localhost:8080<br \/>\n    tls \/path\/to\/cert.pem \/path\/to\/key.pem<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>**Note:** When using a reverse proxy, update `config.yml` to bind to localhost only:<\/p>\n<p>&#8220;`yaml<br \/>\nweb-admin:<br \/>\n  server:<br \/>\n    host: &#8220;127.0.0.1&#8221;<br \/>\n    port: 8080<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p>## Commands<\/p>\n<p>### Players<\/p>\n<p>| Command | Description | Permission |<br \/>\n|&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;-|&#8212;&#8212;&#8212;&#8212;|<br \/>\n| `\/money` | View your balance | `syncmoney.money` |<br \/>\n| `\/money <player>` | View another player&#8217;s balance | `syncmoney.money.others` |<br \/>\n| `\/pay <player> <amount>` | Transfer money to player | `syncmoney.pay` |<br \/>\n| `\/pay confirm` | Confirm large transfer | \u2014 |<br \/>\n| `\/baltop [page]` | View global leaderboard | `syncmoney.money` |<br \/>\n| `\/baltop me` | View your rank | `syncmoney.money` |<\/p>\n<p>### Administrators<\/p>\n<p>| Command | Description | Permission |<br \/>\n|&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;-|&#8212;&#8212;&#8212;&#8212;|<br \/>\n| `\/syncmoney admin give <player> <amount>` | Give money to player | `syncmoney.admin.give` |<br \/>\n| `\/syncmoney admin take <player> <amount>` | Take money from player | `syncmoney.admin.take` |<br \/>\n| `\/syncmoney admin set <player> <amount>` | Set player balance | `syncmoney.admin.set` |<br \/>\n| `\/syncmoney admin reset <player>` | Reset balance to zero | `syncmoney.admin.set` |<br \/>\n| `\/syncmoney migrate cmi` | Migrate from CMI | `syncmoney.admin` |<br \/>\n| `\/syncmoney migrate local-to-sync` | Migrate from LOCAL to SYNC | `syncmoney.admin` |<br \/>\n| `\/syncmoney breaker status` | View protection status | `syncmoney.admin` |<br \/>\n| `\/syncmoney breaker unlock <player>` | Unlock locked player | `syncmoney.admin` |<br \/>\n| `\/syncmoney audit <player>` | View transaction history | `syncmoney.admin.audit` |<br \/>\n| `\/syncmoney audit search` | Advanced search | `syncmoney.admin.audit` |<br \/>\n| `\/syncmoney econstats` | View economy statistics | `syncmoney.admin` |<br \/>\n| `\/syncmoney monitor` | View system monitoring | `syncmoney.admin` |<br \/>\n| `\/syncmoney shadow status` | View shadow sync status | `syncmoney.admin` |<br \/>\n| `\/syncmoney web status` | View web admin status | `syncmoney.admin` |<br \/>\n| `\/syncmoney reload` | Reload configuration | `syncmoney.admin` |<br \/>\n| `\/syncmoney test concurrent-pay` | Stress test | `syncmoney.admin.test` |<\/p>\n<p>### Admin Permission Tiers<\/p>\n<p>| Tier | Permission | Daily Give Limit | Daily Take Limit |<br \/>\n|&#8212;&#8212;|&#8212;&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|<br \/>\n| Observe | `syncmoney.admin.observe` | 0 | 0 |<br \/>\n| Reward | `syncmoney.admin.reward` | 100,000 | 0 |<br \/>\n| General | `syncmoney.admin.general` | 1,000,000 | 1,000,000 |<br \/>\n| Full | `syncmoney.admin.full` | Unlimited | Unlimited |<\/p>\n<p>&#8212;<\/p>\n<p>## Placeholders<\/p>\n<p>Requires SyncmoneyExpansion + PlaceholderAPI.<\/p>\n<p>| Placeholder | Description |<br \/>\n|&#8212;&#8212;&#8212;&#8212;-|&#8212;&#8212;&#8212;&#8212;-|<br \/>\n| `%syncmoney_balance%` | Player&#8217;s current balance |<br \/>\n| `%syncmoney_balance_formatted%` | Balance with smart formatting |<br \/>\n| `%syncmoney_balance_abbreviated%` | Balance abbreviated (1.5K, 2.3\u5104) |<br \/>\n| `%syncmoney_rank%` | Player&#8217;s leaderboard rank |<br \/>\n| `%syncmoney_my_rank%` | Player&#8217;s own rank |<br \/>\n| `%syncmoney_total_supply%` | Total money in circulation |<br \/>\n| `%syncmoney_total_players%` | Total players in leaderboard |<br \/>\n| `%syncmoney_online_players%` | Currently online players |<br \/>\n| `%syncmoney_version%` | Plugin version |<br \/>\n| `%syncmoney_top_<n>%` | Balance of player at rank n |<br \/>\n| `%syncmoney_balance_<player>%` | Specific player&#8217;s balance by name |<\/p>\n<p>&#8212;<\/p>\n<p>## Migration from CMI<\/p>\n<p>&#8220;`bash<br \/>\n# Preview migration data<br \/>\n\/syncmoney migrate cmi -preview<\/p>\n<p># Start migration<br \/>\n\/syncmoney migrate cmi<\/p>\n<p># Force migration (skip validation)<br \/>\n\/syncmoney migrate cmi -force<\/p>\n<p># Force migration without backup<br \/>\n\/syncmoney migrate cmi -force -no-backup<br \/>\n&#8220;`<\/p>\n<p>**Features**:<br \/>\n&#8211; PostgreSQL, MySQL, and SQLite support<br \/>\n&#8211; Multi-server data merge (LATEST\/SUM\/MAX strategies)<br \/>\n&#8211; Automatic backup before migration<br \/>\n&#8211; Checkpoint resume for large datasets<br \/>\n&#8211; Auto-disable CMI economy after migration<\/p>\n<p>&#8212;<\/p>\n<p>## Performance<\/p>\n<p>Syncmoney is optimized for high-throughput scenarios:<\/p>\n<p>&#8211; **Redis connection pooling** (default: 30 connections)<br \/>\n&#8211; **Async write queues** \u2014 prevents main thread blocking (capacity: 50,000 events)<br \/>\n&#8211; **In-memory caching** \u2014 O(1) balance reads with ConcurrentHashMap<br \/>\n&#8211; **Batch database writes** \u2014 efficient audit log persistence (500 records\/batch)<br \/>\n&#8211; **Lock-free event driven** \u2014 single-writer pattern avoids contention<br \/>\n&#8211; **Redis Lua atomics** \u2014 7 scripts ensure consistency without locks<br \/>\n&#8211; **OverflowLog WAL** \u2014 prevents data loss when queues saturate<\/p>\n<p>&#8212;<\/p>\n<p>## API for Developers<\/p>\n<p>Syncmoney provides multiple integration points:<\/p>\n<p>### Vault API<\/p>\n<p>&#8220;`java<br \/>\n\/\/ Get economy via Vault<br \/>\nEconomy economy = Bukkit.getServicesManager()<br \/>\n    .getRegistration(Economy.class).getProvider();<\/p>\n<p>\/\/ Standard operations<br \/>\neconomy.getBalance(player);<br \/>\neconomy.depositPlayer(player, amount);<br \/>\neconomy.withdrawPlayer(player, amount);<br \/>\n&#8220;`<\/p>\n<p>### Event System<\/p>\n<p>&#8220;`java<br \/>\n\/\/ Listen for completed transactions<br \/>\n@EventHandler<br \/>\npublic void onTransaction(PostTransactionEvent event) {<br \/>\n    String player = event.getPlayerName();<br \/>\n    BigDecimal amount = event.getAmount();<br \/>\n    \/\/ type: DEPOSIT, WITHDRAW, TRANSFER, SET_BALANCE<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>### REST API<\/p>\n<p>Full REST API available when Web Admin is enabled. See [API Reference](docs\/API_REFERENCE.md).<\/p>\n<p>&#8220;`bash<br \/>\n# Health check (no auth)<br \/>\ncurl http:\/\/localhost:8080\/health<\/p>\n<p># Economy stats<br \/>\ncurl -H &#8220;Authorization: Bearer <api-key>&#8221; http:\/\/localhost:8080\/api\/economy\/stats<br \/>\n&#8220;`<\/p>\n<p>For complete documentation, see:<br \/>\n&#8211; [API Reference](docs\/API_REFERENCE.md)<br \/>\n&#8211; [Developer Guide](docs\/DEVELOPER_GUIDE.md)<br \/>\n&#8211; [Changelog](docs\/CHANGELOG.md)<\/p>\n<p>&#8212;<\/p>\n<p>## Troubleshooting<\/p>\n<p>| Issue | Solution |<br \/>\n|&#8212;&#8212;-|&#8212;&#8212;&#8212;-|<br \/>\n| &#8220;Server name not configured&#8221; | Set `server-name` in config.yml |<br \/>\n| Redis connection failed | Verify host\/port\/password in config |<br \/>\n| Balances not syncing | Ensure all servers use same Redis instance |<br \/>\n| Performance issues | Increase `pool-size` and `queue-capacity` |<br \/>\n| Circuit breaker locked | Use `\/syncmoney breaker reset` to unlock |<br \/>\n| Player account locked | Use `\/syncmoney breaker unlock <player>` |<br \/>\n| Web admin not loading | Check `web-admin.enabled: true` and port availability |<\/p>\n<p>Enable `debug: true` in config.yml for detailed logs.<\/p>\n<p>&#8212;<\/p>\n<p>## Building from Source<\/p>\n<p>&#8220;`bash<br \/>\n# Clone the repository<br \/>\ngit clone https:\/\/github.com\/Misty4119\/Syncmoney.git<br \/>\ncd Syncmoney<\/p>\n<p># Build the plugin (Shadow JAR)<br \/>\n.\/gradlew shadowJar<br \/>\n# Output: build\/libs\/Syncmoney-1.1.0.jar<\/p>\n<p># Build PlaceholderAPI expansion<br \/>\ncd syncmoney-papi-expansion &#038;&#038; ..\/gradlew jar<br \/>\n# Output: build\/libs\/SyncmoneyExpansion-1.1.0.jar<\/p>\n<p># Build web frontend<br \/>\ncd syncmoney-web &#038;&#038; pnpm install &#038;&#038; pnpm build<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p>## Support<\/p>\n<p>&#8211; **Discord**: Join<br \/>\n&#8211; **Issues**: GitHub<\/p>\n<p>&#8212;<\/p>\n<p>## License<\/p>\n<p>[Apache License 2.0](LICENSE) \u2014 Free to use, modify, and distribute.<\/p>\n<p>&#8212;<\/p>\n<p align=\"center\">\n  <sub>Built for high-scale Minecraft networks<\/sub><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cross-server economy synchronization plugin for Minecraft<\/p>\n","protected":false},"featured_media":151461,"template":"","meta":{"_minecraft_slug":"syncmoney","_minecraft_project_id":"mKd80dJ7","_minecraft_author":"misty4119","_minecraft_license":"Apache-2.0","_minecraft_downloads":64,"_minecraft_follows":2,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"syncmoney.zip","_minecraft_size_bytes":159476803,"_minecraft_version_count":5,"_minecraft_updated_at":"2026-05-15T20:37:35.849879Z","_minecraft_date_created":"2026-03-04T22:19:12.347404Z","_minecraft_date_modified":"2026-04-03T11:00:28.969106Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/syncmoney","_minecraft_icon_attachment_id":151461,"_minecraft_imported_at":"2026-06-09T03:22:42+00:00","_minecraft_import_hash":"c68035f3459797e9d1fb12f062daf503","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[844,125,126,127,128],"mod_loader":[131,132,133],"minecraft_version":[94,41,38,167],"class_list":["post-151460","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-economy","mod_category-folia","mod_category-management","mod_category-paper","mod_category-purpur","mod_loader-folia","mod_loader-paper","mod_loader-purpur","minecraft_version-1-20-4","minecraft_version-1-21-11","minecraft_version-1-21-4","minecraft_version-26-1-1"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Syncmoney - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/syncmoney\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Syncmoney - Minecraft\" \/>\n<meta property=\"og:description\" content=\"Cross-server economy synchronization plugin for Minecraft\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/syncmoney\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta property=\"og:image\" content=\"https:\/\/img.shields.io\/github\/stars\/Misty4119\/Syncmoney\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/syncmoney\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/syncmoney\\\/\",\"name\":\"Syncmoney - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/syncmoney\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/syncmoney\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/syncmoney-icon-8fcf8499cd02d177e7ba6f9c341b9777e4228ccf_96.webp\",\"datePublished\":\"2026-06-09T03:22:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/syncmoney\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/syncmoney\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/syncmoney\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/syncmoney-icon-8fcf8499cd02d177e7ba6f9c341b9777e4228ccf_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/syncmoney-icon-8fcf8499cd02d177e7ba6f9c341b9777e4228ccf_96.webp\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/syncmoney\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Syncmoney\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Syncmoney - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/syncmoney\/","og_locale":"en_US","og_type":"article","og_title":"Syncmoney - Minecraft","og_description":"Cross-server economy synchronization plugin for Minecraft","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/syncmoney\/","og_site_name":"Minecraft","og_image":[{"url":"https:\/\/img.shields.io\/github\/stars\/Misty4119\/Syncmoney","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/syncmoney\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/syncmoney\/","name":"Syncmoney - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/syncmoney\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/syncmoney\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/syncmoney-icon-8fcf8499cd02d177e7ba6f9c341b9777e4228ccf_96.webp","datePublished":"2026-06-09T03:22:42+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/syncmoney\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/syncmoney\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/syncmoney\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/syncmoney-icon-8fcf8499cd02d177e7ba6f9c341b9777e4228ccf_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/syncmoney-icon-8fcf8499cd02d177e7ba6f9c341b9777e4228ccf_96.webp","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/syncmoney\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"Syncmoney"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/151460","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/151461"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=151460"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=151460"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=151460"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=151460"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}