AstralSync
AstralSync is a Paper plugin that provides real-time player data synchronization across server instances. It snapshots a player's entire game state — inventory, attributes, advancements, potion effects, and more — into a compressed, checksummed binary record stored in a relational database. On the next login (to any server sharing the same database and Redis instance), that state is restored transparently.
Key Features
Modular adapter system — any plugin can register its own
SnapshotAdapterto include custom data in snapshotsBinary serialization — compact chunked binary format with Deflate compression
Checksum validation — MD5/SHA-256 integrity check on every load to detect corruption
Distributed locking — Redis locks prevent concurrent save/load races in multi-server setups
Caffeine caching — 10,000-entry, 15-minute in-process cache for snapshot reads
Read-only mode — disable saves for maintenance or read-replica servers
Graceful shutdown — waits for all in-flight saves before the JVM exits
Architecture
Player Join → Load
Save Flow
Save triggers and their behavior:
Trigger | Cause | Unloads data? |
|---|---|---|
Player disconnects |
| Yes |
Player dies |
| No |
World save |
| No |
Server shutdown |
| Yes |
Admin rollback |
| No |
First join (new player) |
| No |
Plugin Info
Property | Value |
|---|---|
Version | 3.0-SNAPSHOT |
API | Paper 1.21 |
Java | 25 |
Required plugins | AstralCore, PacketEvents |
Database | MariaDB |
Cache | Redis (distributed locks) + Caffeine (read cache) |