Your Cart
Loading

SafeSync: inventory sync between servers, never duplicated, never lost

On Sale
Sale ends in 5 days
$12.99 (20% off)
$10.39
Added to cart

SafeSync: inventory sync between servers, never duplicated, never lost


THE SAME STUFF ON EVERY SERVER, AND NOTHING MORE


On a network behind Velocity or BungeeCord, a player who changes server must find exactly what they had. The proxy connects them to the new server before it disconnects them from the old one, so the new server can read the data before the old one has written it. That is where items get duplicated (die then disconnect at once, server restart, quick back and forth) or whole inventories disappear (save too slow under load).


SafeSync syncs the player data between the servers of a group with MySQL or MariaDB only: no Redis, nothing to install on the proxy. Every way to duplicate or lose items that we found in reviews and bug reports has a defense, and a bot test that fails when the defense is removed.


WHAT FOLLOWS THE PLAYER


- Inventory with armor and off-hand, ender chest: items kept byte for byte (components, custom names, enchantments, plugin data, full shulker boxes)

- Health, hunger, experience

- Potion effects (time left), game mode, flight, statistics, advancements (no chat announcement, no second reward)

- Location (for mirrored worlds, off by default), plugin data stored on the player (off by default)

- Each data can be switched off in the config. A server that does not sync a data keeps the value written by the others: going through a "smaller" server never wipes effects, statistics or advancements.

- Groups: servers with the same group share the data, a server alone in its group (lobby, creative) keeps its own.


NEVER DUPLICATED, NEVER LOST


- The new server reads before the old one has written (Velocity, BungeeCord): a checkout in the database, the new server waits until the old one has written and released.

- Die, then disconnect at once: the save is the real state after death; on the next server the player is alive, never a second death.

- Server restart or stop: every player is saved and released before the database closes.

- Save too slow under load: saves run off the game thread; the next server waits for that version, never an older one.

- Server crash: after 20 s of silence its players can load elsewhere, from the last save.

- Same player on two servers at once (unstable proxy): a single checkout, the second server freezes, then disconnects without writing.

- Item on the cursor, in the crafting grid, open container: given back to the inventory before the save.

- Picking up, dropping, opening a chest while loading: everything is cancelled until the data is applied.

- Database down: joining players are frozen then disconnected, never an empty inventory written; leaving players are kept in a local journal on disk and written when the database is back.

- Late write from a server that lost the checkout: refused, kept as a conflict for an admin.

- Item from a newer Minecraft version (mixed versions): the older server does not load it and says why; newer servers read older data.


A server that loses the database freezes its own players (instead of letting them play on data the others already consider taken back) and lets them go when the database answers again.


What a crash can cost, written plainly: at worst the play since the last regular save (2 minutes by default, adjustable). Never an item in double, never the whole inventory. Tested by killing the server (kill -9) at each step of a player's departure.


CONFLICTS AND HISTORY


- Any refused write is kept as a conflict: /safesync conflicts, then view (difference with the current state), apply or discard. Applying keeps the replaced state as a conflict too: nothing is overwritten without a copy.

- First install: the local data a player has on the other servers of the group is kept as a snapshot, never overwritten in silence.

- Time-stamped history per player (cause, server, size): /safesync history opens a chest menu on Java or a form on Bedrock, with a read-only preview and restore. Retention: last 20 per player plus one per day for 7 days (adjustable).

- Transfer log per day in plugins/SafeSync/logs/.


MORE


- Import from HuskSync (/safesync import husksync, --dry-run, --overwrite): inventory, ender chest, health, hunger, XP, effects, game mode, flight, advancements. The HuskSync database is only read.

- Import from MySQL Inventory Bridge (/safesync import mib): inventory and armor, items upgraded to your Minecraft version. MySQL Player Data Bridge is not supported.

- Floodgate account linking: when a Bedrock player links their account to a Java account, their Bedrock data is merged once. If one side is empty the other is taken as is, otherwise the Bedrock items go to /safesync claim (one item per click, nothing on the ground).

- Login plugins: with AuthMe, nothing is loaded or written until the player has typed their password. LibreLogin on the proxy needs nothing.

- PlaceholderAPI: %safesync_state%, %safesync_last_save%.

- Admin commands: /safesync status (servers, heartbeats, checkouts), unlock, conflicts, history, restore, import, reload, claim stuck / claim back (a claim interrupted by a server stop).

- English and French (each player gets the language of their game), editable texts.


REQUIREMENTS


- Paper or Folia 1.21.4 to 26.x, Java 21+ (tested on Paper 1.21.11, Paper 26.3 and Folia 26.3, behind Velocity and BungeeCord)

- MySQL or MariaDB, the same database for every server. Same `group`, a different `server-name` on each server.

- Optional: Floodgate (account linking, Bedrock admin forms), PlaceholderAPI.

- Not compatible with per-world inventory plugins (Multiverse-Inventories, PerWorldInventory): SafeSync warns at startup.

- Money is not synced: leave it to your economy plugin (most have their own network option).

- No license server.


WHAT YOU GET


The plugin jar and free updates: new versions are uploaded to this product and you can download them again from your purchase email at any time.


SUPPORT


- Documentation: https://github.com/TheMax98000/SafeSync

- Bug reports: https://github.com/TheMax98000/SafeSync/issues


Try it first: the free edition has the same duplication and loss safety for 2 synced servers: https://www.spigotmc.org/resources/safesync-free.139845/

You will get a ZIP (175KB) file