COWMODSКаталог модов

Syncmoney

Cross-server economy synchronization plugin for Minecraft

Автор: misty41193362обновлён 20 сент. 2026 г.
Экономика

Описание

Syncmoney

Stars Downloads Release License

Platform Java Discord Donate

Vault / VaultUnlocked compatible cross-server economy synchronization with Redis Pub/Sub, multi-layer transaction guards, auditing, shadow backups, and embedded Web Admin.


Overview

Syncmoney is an enterprise-oriented Minecraft economy plugin focused on safe, consistent cross-server balance synchronization. It bridges Vault and VaultUnlocked economies across network nodes using Redis Pub/Sub and relational database persistence, backed by in-memory caching and comprehensive circuit breakers.

Syncmoney manages balances, currency operations, and its own economy commands and administration tiers. It is not a general-purpose permission or arbitrary command replicator.


Key Features

  • Standard Economy Compatibility: Integrates seamlessly with Vault 1.7 and VaultUnlocked (Vault2 API).
  • Flexible Economy Modes: Supports standalone SQLite (local), Redis-only sync (local_redis), Redis + SQL database persistence (sync), and CMI-authoritative sync (cmi).
  • Distributed Synchronization: Redis Pub/Sub with atomic Lua scripts, monotonic versioning, and echo suppression to eliminate race conditions.
  • In-Memory Performance: O(1) balance reads served directly from memory; persistent storage writes handled asynchronously off the tick thread.
  • Multi-Layer Circuit Breaker: Real-time per-transaction limits, anomaly rate detection, and an independent per-player guard (L1–L4 states).
  • Comprehensive Auditing & Analytics: High-throughput asynchronous audit log pipeline with search, stats, automated cleanup, and external export.
  • Shadow Backups: Independent background account synchronization designed for cold-standby snapshots and state tracking.
  • Embedded Web Admin Dashboard: Modern web interface (Vue 3 / Undertow) for health telemetry, configuration inspection, audit viewing, and economy monitoring.
  • Region Scheduler Safe: Validated on Paper 1.20.4/26.2, Folia 26.2 BETA, and Canvas 26.2; scheduler boundaries are designed for region-threaded architectures.
  • Extensible Ecosystem: Official PlaceholderAPI expansion and Bukkit transaction events (PostTransactionEvent).

Platform & Compatibility

ComponentRequirement / Specification
Server EnginePaper 1.20.4+ (Build API baseline), Folia, Canvas. Plain Spigot is not supported.
Java RuntimeJava 21 (Paper 1.20.4 – 1.20.6); Java 25 required for Paper 26.1+ environments.
Economy BridgeRequired: Vault (legacy 1.7) or VaultUnlocked (2.20.0+). Do not load both concurrently under the same name.
Message BrokerRedis 5.0+ (Required for sync, local_redis, and cmi modes).
DatabaseMySQL 8.0+, MariaDB 10.5+, PostgreSQL 13+, or local SQLite.
Optional IntegrationsPlaceholderAPI (with SyncmoneyExpansion), CMI (compatible licensed release for cmi mode).

[!NOTE] Future server releases remain compatibility targets rather than unconditional guarantees. Always validate upgrades on a staging environment prior to updating production balances.

The 1.3.0 acceptance matrix covers Paper 1.20.4, Paper 26.2, Folia 26.2 BETA, Canvas 26.2, and a two-backend Paper 26.2 network behind the latest velocity-ctd build. This is a tested compatibility baseline, not a promise that an unreleased server build will remain binary-compatible.


Installation & Setup

  1. Backup: Stop your server and take a full backup of existing plugin configs, economy databases, and Redis persistence.
  2. Install Plugin: Place Syncmoney-1.3.0.jar and your preferred Vault provider in the server's plugins/ directory. Remove any older Syncmoney JAR versions.
  3. Initialize Configuration: Start the server once to generate default configuration files, then stop it.
  4. Configure Node: In plugins/Syncmoney/config.yml:
    • Assign a unique server-name (e.g., survival-01, lobby-01).
    • Select your target economy.mode.
    • Configure Redis and SQL database connection credentials if using synchronized modes.
  5. Start & Verify: Start the server. Confirm in the console logs that Syncmoney and Vault have registered successfully. Verify basic transactions with /money and /pay.
  6. Placeholders (Optional): If using PlaceholderAPI, copy SyncmoneyExpansion-1.3.0.jar into plugins/PlaceholderAPI/expansions/ and run /papi reload.

Economy Modes

Mode (economy.mode)Storage & ArchitectureIntended Environment
localSingle-server SQLite file. No Redis or external database required.Standalone servers without cross-server requirements.
local_redisRedis-backed network economy without SQL persistence.Networks relying on persistent Redis storage (AOF/RDB).
syncRedis Pub/Sub + central SQL database (MySQL / MariaDB / PostgreSQL).Standard multi-server networks requiring robust relational persistence. SQLite is for LOCAL/Shadow storage, not this shared database connection.
cmiCMI retains primary economy authority; mutations propagate via Redis.Networks using CMI as the authoritative economy engine.
autoAutomatically detects installed environment and suggests mode.For quick evaluations; explicit mode configuration is recommended for production.

Minimal Standalone Configuration (local)

server-name: "single-01"
economy:
  mode: "local"
redis:
  enabled: false
database:
  enabled: false
db-enabled: false
pubsub-enabled: false

Shared Network Configuration (sync)

Set economy.mode: "sync", enable both redis and database, and ensure db-enabled: true and pubsub-enabled: true. Point all participating nodes to the same isolated Redis database and relational database schema while giving each server a distinct server-name.


Optional Modules & Lifecycle

All optional modules can be toggled in plugins/Syncmoney/config.yml.

ModuleConfiguration SwitchDescription & Disabled Behavior
Global Circuit Breakercircuit-breaker.enabledHalts global economy operations upon abnormal inflation or anomalies. Status reports disabled when inactive.
Per-Player Protectioncircuit-breaker.player-protection.enabledIndependent rate-limiting, warnings, and automatic account freeze for suspicious player activities.
Transaction Guardtransfer-guard.enabledProtects players from balance inconsistency during cross-server transfers or teleports.
Audit Loggingaudit.enabledAsynchronous transaction audit trail. Sub-features (cleanup, export, redis) require this parent switch.
Shadow Syncshadow-sync.enabledBackground snapshot mirroring to secondary databases. Does not replace primary database backups.
Discord Webhooksdiscord-webhook.enabledReal-time notifications for circuit breaker triggers, locks, and migration events.
Web Admin Panelweb-admin.enabledEmbedded Undertow HTTP/WebSocket service for administrative dashboard.

[!IMPORTANT] Configuration Reload vs. Full Restart: /syncmoney reload updates localization messages and safe runtime parameters (display, pay, permissions, admin-permissions, debug). Changes to database/Redis connections, economy modes, module switches, schedulers, or Web Admin server endpoints require a full server restart. If modified, reload will notify you of the restart-only keys.


Commands & Permissions

Player Commands

CommandDescriptionDefault Permission
/moneyView personal balancesyncmoney.money (default: true)
/money <player>View another player's balancesyncmoney.money.others (default: op)
/pay <player> <amount>Send money to another playersyncmoney.pay (default: true)
/pay confirmConfirm high-value transaction above thresholdNone (session verified)
/baltop [page]View global wealth leaderboardsyncmoney.money (default: true)
/baltop meCheck personal leaderboard positionsyncmoney.money (default: true)

Administrative Commands

CommandDescriptionPermission
/syncmoney admin give <player> <amount>Add balance to playersyncmoney.admin.give / Admin tier
/syncmoney admin take <player> <amount>Deduct balance from playersyncmoney.admin.take / Admin tier
/syncmoney admin set <player> <amount>Set player balance directlysyncmoney.admin.set / Admin tier
/syncmoney admin reset <player>Reset player balance to zerosyncmoney.admin.set / Admin tier
/syncmoney admin view <player>Inspect detailed balance statesyncmoney.admin
/syncmoney breaker statusView circuit breaker health and statesyncmoney.admin
/syncmoney breaker resetReset tripped global breakersyncmoney.admin
/syncmoney breaker unlock <player>Manually unlock a frozen playersyncmoney.admin
/syncmoney audit <player> [page]View player audit historysyncmoney.admin.audit
/syncmoney audit search <args>Advanced audit record searchsyncmoney.admin.audit
/syncmoney audit statsView audit storage statisticssyncmoney.admin.audit
/syncmoney monitor [redis|cache|db]View real-time system and resource healthsyncmoney.admin.monitor
/syncmoney econstats [supply|players]Inspect total supply and distributionsyncmoney.admin.econstats
/syncmoney debug <player|system>Multi-tier balance inspection across layerssyncmoney.admin
/syncmoney sync-balance <player>Force push memory balance to Redis and SQLsyncmoney.admin
/syncmoney shadow [status|now|logs]Monitor and trigger Shadow Sync taskssyncmoney.admin
/syncmoney web [status|open|reload]Manage embedded web servicesyncmoney.admin
/syncmoney migrate <cmi|local-to-sync>Execute economy database migrationsyncmoney.admin
/syncmoney test concurrent-pay <t> <i>Run concurrent load tests on disposable setupssyncmoney.admin.test
/syncmoney reload [config|messages]Reload allowable configuration sectionssyncmoney.admin.reload

Administrative Permission Tiers

Configurable in config.yml under admin-permissions:

TierPermission NodeDefault Daily Limits
Observesyncmoney.admin.observeView only (0 give / 0 take)
Rewardsyncmoney.admin.reward100,000 give / 0 take
Generalsyncmoney.admin.general1,000,000 give / 1,000,000 take
Fullsyncmoney.admin.fullUnlimited

PlaceholderAPI Identifiers

Syncmoney provides an optional expansion (SyncmoneyExpansion) for PlaceholderAPI:

PlaceholderDescription
%syncmoney_balance%Unformatted numeric balance
%syncmoney_balance_formatted%Balance formatted with comma groupings (1,250.00)
%syncmoney_balance_abbreviated%Abbreviated balance notation (1.5K, 2.4M)
%syncmoney_balance_<player>%Balance of a specific target player
%syncmoney_rank% or %syncmoney_my_rank%Player's rank on the leaderboard
%syncmoney_top_<n>%Balance of the player at rank n
%syncmoney_total_supply%Total currency circulating in the economy
%syncmoney_total_players%Total registered accounts tracked in leaderboard
%syncmoney_online_players%Current online player count
%syncmoney_version%Active Syncmoney plugin version

[!TIP] Cache misses for offline player lookups resolve asynchronously in the background. If data is still loading, placeholders return N/A without freezing the main server thread.


Web Admin Setup & Security

The Web Admin module includes a lightweight Undertow HTTP server and pre-built frontend distribution.

web-admin:
  enabled: true
  server:
    host: "127.0.0.1"
    port: 8080
  security:
    api-key: "GENERATE_A_LONG_SECURE_RANDOM_KEY"
    cors-allowed-origins: "https://admin.yournetwork.com"

Security Recommendations

  1. Reverse Proxy: Bind Web Admin to 127.0.0.1 and route external traffic through Nginx or Caddy with HTTPS.
  2. API Key: Always replace the placeholder API key with a cryptographically secure token.
  3. SSE / WebSocket: When reverse proxying, ensure proxy buffering is disabled to support live SSE updates.
  4. Firewall: Restrict external access to the configured HTTP port.

Developer Integration

Vault Provider Access

Syncmoney registers itself as a standard Vault provider:

RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
if (rsp != null) {
    Economy economy = rsp.getProvider();
    BigDecimal balance = BigDecimal.valueOf(economy.getBalance(player));
}

On servers running VaultUnlocked, Syncmoney also registers modern Vault2 services automatically.

Transaction Events

Subscribe to PostTransactionEvent for transaction auditing:

@EventHandler
public void onPostTransaction(PostTransactionEvent event) {
    if (!event.isSuccess()) {
        return;
    }
    UUID playerUuid = event.getPlayerUuid();
    BigDecimal amount = event.getAmount();
    AsyncPreTransactionEvent.TransactionType type = event.getType();
    // Handle post-transaction telemetry
}

Building from Source

Syncmoney uses Gradle with a Java 21 toolchain:

# Build the plugin JAR and PAPI expansion
./gradlew test shadowJar :syncmoney-papi-expansion:jar

# Build Web Admin frontend (requires Node.js and pnpm)
cd syncmoney-web
pnpm install
pnpm typecheck
pnpm test:unit --run
pnpm build

Compiled JAR files are produced in build/libs/ and syncmoney-papi-expansion/build/libs/.


Troubleshooting & Support

  • Balances Not Synchronizing: Ensure all nodes have identical Redis server settings and databases. Verify that each node has a unique server-name in config.yml and pubsub-enabled: true.

  • Account Locked: If a player account trips rate or anomaly limits, inspect /syncmoney audit <player> to diagnose the trigger, then unlock with /syncmoney breaker unlock <player>.

  • Configuration Reload Incomplete: Check the console output when executing /syncmoney reload. Settings requiring service reconstruction require a full server restart.

  • Reporting Issues: Include plugin version (/syncmoney version), server software build (/version), Java version, and sanitized logs/configs (redact passwords, API keys, and webhook URLs).

  • GitHub Issues: Issues Tracker

  • Community Discord: Join Discord


License

This project is licensed under the Apache License 2.0.

Галерея

syncmoney

Последние версии

Все версии →
release

Syncmoney 1.3.2

1.3.2
20 сент. 2026 г.57Minecraft: 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2folia, paper, purpur
Скачать
Что нового
## Changelog (2026-09-20) ### Security - **Frontend Dependency Remediation**: Updated the Web Admin dependency graph to patched Axios, Vite 6, Vitest 4.1.11, Happy DOM, PostCSS, and Sharp releases. Targeted pnpm overrides keep vulnerable transitive packages on patched versions without taking unrelated Java/runtime major upgrades. - **Audit Baseline**: The resolved Web Admin dependency graph now reports zero known vulnerabilities with `pnpm audit`. ### Changed - **Release Metadata**: Unified root, PlaceholderAPI, Web Admin, documentation, configuration metadata, and acceptance version checks on `1.3.2`. - **Embedded Web Bundle**: Rebuilt the embedded Web Admin assets and synchronized `WebAdminServer.extractIndividualFiles` with the generated bundle. - **Release Automation**: Added GitHub Actions workflows for CI artifacts, alpha/beta previews, protected stable releases, provenance attestations, and the synchronized `Syncmoney-web` release. - **Web Release Contract**: The Web repository now publishes `v`-prefixed deterministic source archives; the core downloader accepts both prefixed and unprefixed Web release tags. ### Validation - PlugDev acceptance passed on Paper 1.20.4, Paper 26.2, Folia `26.2.build.7-beta`, Canvas 26.2, and a two-backend Paper 26.2 network. Folia coverage is specifically for the tested beta build.
release

Syncmoney 1.3.1

1.3.1
9 сент. 2026 г.12Minecraft: 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2folia, paper, purpur
Скачать
Что нового
[Changelog](https://github.com/Misty4119/Syncmoney/blob/main/CHANGELOG.md)
release

Syncmoney 1.3.0

1.3.0
6 сент. 2026 г.11Minecraft: 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2folia, paper, purpur
Скачать
Что нового
[Changelog](https://github.com/Misty4119/Syncmoney/blob/main/CHANGELOG.md)
release

Syncmoney 1.2.3

1.2.3
31 июл. 2026 г.31Minecraft: 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2folia, paper, purpur, spigot
Скачать
Что нового
optimization Vault economy provider
release

Syncmoney 1.2.2

1.2.2
24 июл. 2026 г.22Minecraft: 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2folia, paper, purpur, spigot
Скачать
Что нового
VaultUnlocked integration
release

Syncmoney 1.2.1

1.2.1
24 июл. 2026 г.12Minecraft: 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2folia, paper, purpur, spigot
Скачать
Что нового
optimization PlaceholderAPI expansion module and optimization DatabaseManager for MySQL/PostgreSQL with updated dependencies.
release

Syncmoney 1.2.0

1.2.0
26 июн. 2026 г.24Minecraft: 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2folia, paper, purpur, spigot
Скачать
Что нового
[Changelog](https://github.com/Misty4119/Syncmoney/blob/main/CHANGELOG.md)
release

Syncmoney 1.1.3

1.1.3
3 апр. 2026 г.65Minecraft: 1.20.4, 1.21.4, 1.21.11, 26.1.1folia, paper, purpur, spigot
Скачать
Что нового
[Changelog](https://github.com/Misty4119/Syncmoney/blob/main/CHANGELOG.md)
release

Syncmoney 1.1.2

1.1.2
21 мар. 2026 г.22Minecraft: 1.20.4, 1.21.4, 1.21.11folia, paper, purpur, spigot
Скачать
Что нового
[Changelog](https://github.com/Misty4119/Syncmoney/blob/main/CHANGELOG.md)
release

Syncmoney 1.1.1

1.1.1
21 мар. 2026 г.23Minecraft: 1.20.4, 1.21.4, 1.21.11folia, paper, purpur, spigot
Скачать
Что нового
[Changelog](https://github.com/Misty4119/Syncmoney/blob/main/CHANGELOG.md)