GitHub Description (Short)
Synchronizes player inventory, stats, and optional position across Paper servers via MySQL.
CrossOverSync stores and loads player data from MySQL and shares it between servers.
Server identity is resolved via the plugin messaging channel bungeecord:main (Velocity/Bungee GetServer).
- Inventory, enderchest, armor, effects, XP, health/food
- Optional position sync on selected servers
- Async MySQL writes with retry and queue
- In‑memory cache with TTL
- Health checks with admin notifications
- Main project:
src/(CrossOverSync) - Separate Paper plugin:
paper-plugin/(CrossOverSyncPaper)
- Paper 1.21.x (API:
1.21.11-R0.1-SNAPSHOT) - MySQL/MariaDB
- Proxy with
GetServersupport (Velocity/Bungee)
Main project:
mvn -DskipTests package
Separate Paper plugin:
cd paper-plugin
mvn -DskipTests package
- Place the JAR into the Paper server
plugins/folder. - Start the server once, edit
config.yml. - Restart the server.
File: src/main/resources/config.yml or paper-plugin/src/main/resources/config.yml
mysql.host/port/database/username/passwordsync.serverNames: servers where data is actively savedsync.positionServerNames: servers allowed to set player positionssync.saveQueue.enabled: queue‑based savingsync.cache.enabled: enable cachesync.healthCheck.*: health checks and notifications
The plugin queries the server name via the proxy channel bungeecord:main with GetServer.
Make sure your proxy returns the correct server name and allows the channel.