
PlayerDataSync
Seamless Cross-Server Player Data Synchronization
- Загрузки
- 3K
- Подписчики
- 18
- Обновлён
- 30 июля 2026 г.
- Лицензия
- All-Rights-Reserved
Опубликован 17 декабря 2025 г.
🧩 PlayerDataSync
Seamless Cross-Server Player Data Synchronization
Keep inventories, Ender Chests, XP, health, attributes and more synchronized across every server in your network.
🚀 Overview
PlayerDataSync keeps player data synchronized across every server in your Minecraft network.
Whether players move between Survival, Lobby, Creative, SkyBlock, Minigames or anything else, their progress follows them automatically.
No manual file transfers. No duplicated inventories. No lost progress.
Player data lives in one shared database. With Redis enabled, changes propagate between servers the moment they happen — your network behaves like a single world.
✨ What Gets Synchronized
Every entry is an individual toggle, so you decide exactly what travels with your players.
| Category | Included |
|---|---|
| Items | Inventory, Ender Chest, selected hotbar slot |
| Progression | Experience, levels, advancements, statistics |
| Vitals | Health, absorption, hunger, saturation, exhaustion, air, fire ticks, freeze ticks, arrows in body |
| State | Game mode, flight, walk & fly speed, fall distance, player time, player weather |
| Advanced | Attributes, Persistent Data Container, Vault economy balance |
| Optional | Location (disabled by default — see below) |
📍 About location sync
Location sync teleports players to their stored position on join. It ships disabled (sync.location: false), because it only makes sense when the destination server has a world of the same name. If that world is missing, the restore is skipped with a log warning instead of dropping the player somewhere wrong.
🧰 More Than Just Sync
- 🔴 Redis live sync — propagate changes between servers instantly instead of waiting for the next join
- 🔐 AES encryption — encrypt stored profiles with your own key
- 💾 Automatic backups — compressed snapshots before data is overwritten
- 🔁 Storage migration — move between MySQL, MariaDB, PostgreSQL and MongoDB with one command
- ⬆️ Legacy import — bring profiles over from the original PlayerDataSync
- 📤 Import / export — move individual player profiles in and out
- 💬 Discord webhooks — notifications for sync successes and failures
- ⏱️ Autosave — periodic saves as a crash safeguard
- 🚫 Exclusions — skip specific worlds or specific item types
- 📊 bStats & FastStats metrics
- 🧩 Developer API — events and Persistent Data Container hooks for your own plugins
🌟 Why PlayerDataSync?
Running player data across multiple servers without proper synchronization leads to:
- Lost inventories
- Item duplication
- Missing experience
- Inconsistent progress
PlayerDataSync removes those failure modes by synchronizing automatically whenever data changes.
Benefits
- ✅ One shared player profile across your whole network
- ✅ Instant propagation with Redis
- ✅ Four database backends to choose from
- ✅ Asynchronous — the main thread stays free
- ✅ Skips redundant saves when nothing changed
- ✅ Open source (MIT) and actively maintained
🧱 Supported Platforms
| Component | Supported |
|---|---|
| Minecraft | 1.20 – 26.2 |
| Server software | Paper, Spigot, Fabric, Velocity (proxy bridge) |
| Java | 21+ — Minecraft 26.x servers require Java 25 |
| Database | MySQL, MariaDB, PostgreSQL, MongoDB |
The download is the Paper/Spigot plugin. The Fabric and Velocity builds are bundled inside it under bundled/ — extract whichever you need.
Please note:
- Fabric is not yet at feature parity. Advancements and statistics are not synchronized on Fabric. The 1.20 and 1.21 Fabric builds additionally lack Ender Chest, potion effects and attributes; the 26.x builds have those.
- Forge is currently unavailable while its build tooling catches up with the Minecraft 26.x toolchain.
- On Fabric, use MariaDB, PostgreSQL or MongoDB. The MySQL driver is not bundled and mod loaders do not supply one. The MariaDB driver connects to MySQL servers just fine. Paper and Spigot are unaffected.
- SQLite is not supported.
⚙️ Configuration
Full documentation: 👉 https://pds.devvoxel.de/config
- Paper / Spigot:
plugins/PlayerDataSyncReloaded/config.yml - Fabric:
config/playerdatasync.properties, created on first start
storage:
type: "mariadb" # mysql, mariadb, postgres, mongodb
host: "localhost"
port: 3306
database: "minecraft"
username: "root"
password: ""
redis:
enabled: true # strongly recommended for multi-server setups
host: "localhost"
port: 6379
sync:
inventory: true
ender_chest: true
economy: true # requires Vault + an economy plugin
location: false # teleports players on join
💬 Commands & Permissions
Everyday operation is fully automatic — players never touch a command. For administrators, everything lives under /playerdatasync (aliases /pds, /pdasync) behind the playerdatasync.admin permission.
| Command | Description |
|---|---|
/pds status |
Sync statistics, error counters, excluded worlds |
/pds save <player> |
Force-save a player |
/pds saveall |
Force-save everyone online |
/pds load <player> |
Reload a player from storage |
/pds list |
List stored profiles |
/pds backup |
Create a backup |
/pds export / /pds import |
Move profiles in and out |
/pds migrate |
Migrate between storage backends |
/pds toggle |
Toggle syncing at runtime |
/pds debug on|off |
Toggle verbose logging |
/pds reload |
Reload the configuration |
📈 Performance
- ⚡ Asynchronous database operations — the main thread is never blocked
- 🔄 Redundant saves are skipped when the inventory has not changed
- ⏳ Configurable minimum interval between saves
- 💾 Compressed backups
- 📉 Low CPU and memory footprint
Suitable for small communities and large networks alike.
📋 Requirements
- ☕ Java 21+ (Java 25 for Minecraft 26.x servers)
- 🗄️ MySQL, MariaDB, PostgreSQL or MongoDB
- 🧱 Paper, Spigot or Fabric server
- 🌐 Multiple servers pointed at the same database
- 🔴 Redis (optional, recommended) — instant cross-server propagation
- 💰 Vault + an economy plugin (optional) — required for economy sync
🛠️ Support
- 💬 Join our Discord server
- 🐛 Report bugs on GitHub
- 📚 Read the documentation
- 💡 Share feature requests and suggestions
❤️ Credits
Developed with ❤️ by DerGamer09
If PlayerDataSync helps your network, consider leaving a review on SpigotMC, Modrinth, Hangar or BuiltByBit. Your feedback shapes what gets built next.
Ченджлог
26.8-ALPHAАльфа26.1.1, 26.1.2, 26.2 · 30 июля 2026 г.
⚠️ Alpha. Everything below compiles and is code-reviewed, but the economy fix, the new location teleport and the Redis live sync have not been exercised against a running server with Vault, Redis or a real multi-server setup. Test on staging before production.
Fixed
- Dead config toggles:
sync.attributes,sync.pdcandsync.flightwere declared inconfig.ymlbut never evaluated — switching them off did nothing. Same bug class as the economy fix in 26.7. - Item exclusions on Fabric:
exclusions.itemswas stored and never read, so excluded items synced anyway. Bothminecraft:diamondand the Bukkit-styleDIAMONDspelling are accepted.
Added
- Location sync now actually works. The position was previously captured and written to storage but never restored — no teleport existed anywhere in the plugin. Joining players are now teleported to their stored position.
- Guarded by
sync.location, which defaults tofalse. It only works when the destination server has a world of the same name, and turning it on by default would have started teleporting players on upgrade. - If the world is missing, the restore is skipped with a warning instead of dropping the player somewhere wrong.
- Guarded by
- Redis live sync completed. The subscribe handler parsed the incoming UUID and then did nothing — publishing worked, but no server ever acted on it. Receiving servers now reload that player if they are online locally. Messages carry a per-server node ID so a server ignores its own publishes rather than reloading over the save it just made.
- Config support for Fabric. Fabric previously returned hardcoded defaults for every config lookup, so no
sync.*toggle worked at all. Aplayerdatasync.propertiesfile is now generated in the Fabric config directory, using the same keys as the Bukkit config. Storage settings are read from it too, instead of the previously hardcoded (and non-functional) SQLite database. - More data synced on Fabric (MC 26.x): Ender Chest, potion effects and attributes.
Known issues
- Fabric is not at parity with Paper. Advancements and statistics are not synced on any Fabric version. The 1.20 and 1.21 modules also still lack Ender Chest, potion effects and attributes — only 26.x gained those. Planned for 26.8-BETA.
- On Fabric, use MariaDB, PostgreSQL or MongoDB. The MySQL driver is not bundled and mod loaders do not provide one. SQLite is not supported on any platform.
- Forge is not built — ForgeGradle does not support Gradle 9, which the MC 26.x toolchain requires.
26.7-ReleaseРелиз26.1.1, 26.1.2, 26.2 · 30 июля 2026 г.
Fixed
- Economy sync (Vault): Balances were never actually synchronized.
SyncManager#setEconomydiscarded the Vault provider, andPlayerData.balancewas neither read on quit nor applied on join — thesync.economyconfig toggle had no effect. Balances now transfer across servers, andsync.economy: falsegenuinely disables it.
Added
- Paper 26.2 support: New
v26_2_R1version handler built againstpaper-api 26.2; server version detection recognizes26.2automatically. - Fabric 26.1 / 26.2 modules: New adapter modules targeting Minecraft 26.1 and 26.2.
Changed
- Paper 26.1.2: Updated to the latest stable build (
26.1.2.build.72-stable). - Build toolchain: Gradle 9.6.0; Fabric Loom 1.15.5 (1.20/1.21 lines) and 1.17.12 (26.x lines).
- Fabric mappings: MC 26.x builds use Yarn
1.21.11+build.6, since Mojang no longer publishes official mappings for 26.x. Fabric has aligned these names with Mojang's, so 26.x adapter code usesServerPlayer,CompoundTag,StreamCodec, andnet.minecraft.resources.Identifier.
Known issues
- Forge is not built in this release. ForgeGradle 6.0.x refuses to run on Gradle 9+, and no compatible release exists yet. The Forge modules remain in the repository and can be re-enabled with
-Ppds.enableForge=trueonce ForgeGradle supports Gradle 9.
26.5.5.1-ALPHAАльфа26.1.1, 26.1.2, 26.2 · 20 мая 2026 г.
[26.5.5.1-ALPHA] - 2026-05-20
Added
- Fabric:
fabric-api(0.92.2+1.20.1) so lifecycle and server-play networking APIs resolve at compile time;fabric.mod.jsondeclares afabric-apidependency. - Velocity: Gradle task
generatePluginBuildInfoemitsPluginBuildInfo.VERSIONso the@Pluginversion always matches the Gradle project version. - Modrinth / Fabric: Guide
pds-docs/modrinth-upload.md(Paper vs Fabric JAR); Gradle taskcheckFabricModMetadataassertsfabric.mod.jsonexists in the remapped Fabric JAR; Fabric archive base nameplayerdatasync-fabricso it is not confused with the Paper plugin artifact. - Unified distribution JAR: The Paper
PlayerDataSyncReloaded-*.jar(also copied tobuild/libs/) embedsbundled/playerdatasync-velocity.jar,bundled/playerdatasync-fabric.jar, andbundled/playerdatasync-forge.jarplusbundled/README.txt— one download; extract sibling JARs for Velocity/Fabric/Forge (classes are not merged to avoid mapping clashes).
Changed
- Gradle / bytecode targets:
apiandcommonuse Java 17 (Fabric/Forge);pluginand Velocity use Java 21 so Paper 1.21.x can remap the shaded plugin (ASM does not accept class file 69). Nested:versions:*modules are set to 21 inversions/build.gradle.kts(they are not rootsubprojects, so they previously picked up the toolchain default and emitted 69). - Velocity:
velocity-apiupdated to 3.5.0-SNAPSHOT; Velocity→backend plugin messages use UTF-8 (StandardCharsets.UTF_8);ServerConnectedEventlog line usesevent.getServer().getServerInfo()(Velocity 3 API). - Shadow plugin: Replaced
com.github.johnrengelman.shadow8.1.1 withcom.gradleup.shadow8.3.10 soshadowJarcan process modern class files when relocating (e.g. bundled jars). - Forge:
META-INF/mods.tomlversion is expanded from Gradle (mod_version); Forgebuild.gradle.ktsno longer overrides rootversion/group. - Fabric:
build.gradle.ktsno longer overrides rootversion/group(single version fromgradle.properties). - Gradle runtime: Configuration cache disabled in
gradle.properties(ForgeGradle, Fabric Loom, and Shadow-related flows are not reliable with CC enabled); parallel and build caching remain enabled. - CI: Workflow runs
./gradlew :plugin:buildand uploads the unifiedbuild/libs/PlayerDataSyncReloaded-*.jar(includesbundled/platform JARs).
Fixed
- Bukkit version handlers:
v1_20_R1andv26_1_R1VersionHandlerImplnow extendBukkitBaseVersionHandlerand implementcapture/applywithPDSPlayer(restores compatibility after removal ofBaseVersionHandler). - Fabric
PlayerDataSyncFabric:ServerPlayNetworkingglobal receiver is registered inSERVER_STARTINGafter storage/SyncManagersetup; SLF4J error logging for storage init; guards whensyncManageris not ready yet. - Forge
PlayerDataSyncForge: storage init failures use Log4j instead ofprintStackTrace; packet and login handlers guardsyncManager == null. - Multi-platform build: Resolved Gradle dependency variant mismatches (Fabric vs
api/commonJVM level).v26_1_R1:compileClasspathrequests JVM 25 so Paper 26paper-apiresolves while sources still compile with--release 21.
Notes
- One JAR download:
build/libs/PlayerDataSyncReloaded-*.jarcontains Paper +bundled/Velocity/Fabric/Forge JARs; Modrinth still needs the extracted platform files per loader (seepds-docs/modrinth-upload.md). - Modrinth: Use
bundled/playerdatasync-fabric.jar(extracted from the distribution JAR) for the Fabric loader file — not the outer archive root (that is the Paper plugin withplugin.ymlonly). - Paper 1.21.x: The main plugin classes are built as Java 21 bytecode so the server’s PluginRemapper can read them. Run the server on Java 21+ as required by Paper 1.21. Deploy the JAR whose name matches
gradle.propertiesversion(e.g.PlayerDataSyncReloaded-26.5.5.1-ALPHA.jar); delete any older file such asPlayerDataSyncReloaded-26.5.5-SNAPSHOT.jarfromplugins/so Paper does not remap a stale build. The shaded jar excludesMETA-INF/versions/**so multi-release dependency layers (class file 69) are not shipped to the remapper.
26.5.4-ReleaseРелиз26.1.1, 26.1.2, 26.2 · 5 мая 2026 г.
[26.5.4-Release] - 2026-05-05
Fixed
- Build Process: Redirected final shaded JAR output to the root build directory for easier access.
- Database Migration: Added automatic schema migration for SQL storage to fix "Unknown column" errors when upgrading from older versions.
- Legacy Fallback: Implemented automatic fallback to the legacy data format if the new JSON format is missing in SQL storage.
26.5.3-ReleaseРелиз26.1, 26.1.1, 26.1.2 · 5 мая 2026 г.
[26.5.3-Release] - 2026-05-05
Added
- Database Migration: Added automatic schema migration for SQL storage to fix "Unknown column" errors when upgrading from older versions.
- Legacy Fallback: Implemented automatic fallback to the legacy data format if the new JSON format is missing in SQL storage.
Changed
- Paper Compatibility: Updated NMS support for the stable Paper 26.1.2 release.
- Dependency Management: Updated internal version modules to target the latest stable API builds.
26.5.2-ReleaseРелиз26.1, 26.1.1, 26.1.2 · 3 мая 2026 г.
[26.5.2-Release] - 2026-05-03
Changed
- Paper Compatibility: Updated NMS support for the stable Paper 26.1.2 release.
- Dependency Management: Updated internal version modules to target the latest stable API builds.
26.5.1-ReleaseРелиз26.1, 26.1.1, 26.1.2 · 1 мая 2026 г.
[26.5.1-Release] - 2026-05-01
Fixed
- Thread Safety: Resolved
IllegalStateExceptionon Paper/Purpur servers wherePlayerDataSaveEventwas incorrectly triggered on the main thread while marked as an asynchronous event. Both Save and Load events are now synchronous to ensure full compatibility with the Bukkit threading model.
26.5-ReleaseРелиз26.1, 26.1.1, 26.1.2 · 27 апреля 2026 г.
[26.5-Release] - 2026-04-27
Added
- API Extensibility: Added
extraDatamap toPlayerDatafor third-party plugin data synchronization. - Save Cancellation:
PlayerDataSaveEventnow implementsCancellable, allowing plugins to prevent data from being saved under specific conditions. - Granular Sync Controls: Added new configuration options to disable syncing for Potion Effects, Food, GameMode, Advancements, and Statistics.
- Improved Version Detection: Better handling for Minecraft 1.21.1 and future sub-versions.
Changed
- Banner Update: Refreshed the startup banner with new colors and "Expansion Update" subtitle.
- Performance: Minor internal optimizations for event handling.
Fixed
- Potential edge case where data might save during an invalid state.
Комментарии
Загружаем…