Tags
Creators
Details
Licensed ARR
Published 9 months ago
Updated 6 days ago
All versions
26.10-ALPHA.001
Alpha
PlayerDataSync 26.10-ALPHA.0016 days ago 30
Compatibility
Minecraft: Java Edition
26.2
26.1.x
1.21.x
1.20.x
Platforms
Bukkit
Folia
Paper
Purpur
Spigot
Changes
PlayerDataSyncReloaded 26.10-ALPHA.001 — Paper / Spigot
Alpha build. Compiles and passes the unit tests; not yet exercised on a live network. Test on a staging server first.
Distribution
- The Paper jar no longer embeds
bundled/*.jar. Velocity and Fabric are separate downloads (PlayerDataSyncReloaded-Velocity-26.10-ALPHA.001.jar,PlayerDataSyncReloaded-Fabric-<mc>-26.10-ALPHA.001.jar).
Added
- Save on shutdown and reload: Paper disables plugins before it kicks players, so
PlayerQuitEventnever reached the plugin on/stopand everything since the last autosave was lost.onDisableand/pds reloadnow save every online player and wait for the writes. - Proxy save acknowledgement: when the Velocity bridge sends
save:, the plugin answerssaved:<uuid>onpds:synconce the write has landed. The proxy holds the server switch until then, so the destination server never reads a stale profile. /pds info <player>: shows whether the stored data has been applied, whether a load is in flight or queued, and the timestamps of the applied record and the last save.
Fixed
/pds reloadrefused all saves: the reload created a fresh sync manager that did not know online players already had their data applied.- Health 0 killed the player on the next server: quitting on the death screen saved
health = 0, which was applied on join. Health is only applied when it is above 0. - The "Syncing your data..." message is no longer sent again on proxy/Redis reloads of an already-synced player.
Sync core (shared by all platforms)
- Redis auto-reconnect: the subscriber ran on a common-pool thread and died silently when the connection dropped, so other servers stopped receiving reload notifications. It now runs on its own thread and reconnects every 5 s.
- Encryption failure no longer writes plaintext: if
CryptoUtil.encryptthrows, the save fails instead of storing unencrypted JSON (SQL and Mongo). - Exact unchanged-check: skipping a save because "nothing changed" now compares the full serialized inventory instead of
String#hashCode, so a hash collision can no longer drop a changed inventory. SyncManager#handleQuitreturns aCompletableFuturethat completes when the write is done; newsaveAllandmarkLoadedfor shutdown/reload handling.- Includes the 26.9 ordering fixes: loads are serialized per player, saves are refused until the stored profile has been applied, a record that is already applied is not re-applied, and failed SQL writes are counted and retried instead of being cached as "unchanged".
Requirements
- Paper, Spigot, Purpur or Folia — Minecraft 1.20 to 26.2 (Java 21+, Java 25 for 26.x)
- MySQL, MariaDB, PostgreSQL or MongoDB
- Optional: Redis, Velocity bridge 26.10-ALPHA.001, Vault + economy plugin
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:xIV08o16:25Kg51W9"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:xIV08o16:25Kg51W9"
}

