Seamless Cross-Server Player Data Synchronization
Seamless Cross-Server Player Data Synchronization
Keep inventories, Ender Chests, XP, health, attributes and more synchronized across every server in your network.
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.
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) |
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.
Running player data across multiple servers without proper synchronization leads to:
PlayerDataSync removes those failure modes by synchronizing automatically whenever data changes.
| 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:
Full documentation: 👉 https://pds.devvoxel.de/config
plugins/PlayerDataSyncReloaded/config.ymlconfig/playerdatasync.properties, created on first startstorage:
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
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 |
Suitable for small communities and large networks alike.
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.
Unknown
Unknown
Умови використання, зміни та поширення цього товару.
30.07.2026 · Modrinth
⚠️ 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.
sync.attributes, sync.pdc and sync.flight were declared in config.yml but never evaluated — switching them off did nothing. Same bug class as the economy fix in 26.7.Скриншоти та зображення з оригінальної сторінки Modrinth.
Опубліковані версії та оригінальні файли Modrinth.
30.07.2026 · 248 завантаження
⚠️ 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.
sync.attributes, sync.pdc and sync.flight were declared in config.yml but never evaluated — switching them off did nothing. Same bug class as the economy fix in 26.7.exclusions.items was stored and never read, so excluded items synced anyway. Both minecraft:diamond and the Bukkit-style DIAMOND spelling are accepted.sync.location, which defaults to false. 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.sync.* toggle worked at all. A playerdatasync.properties file 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.30.07.2026 · 301 завантаження
SyncManager#setEconomy discarded the Vault provider, and PlayerData.balance was neither read on quit nor applied on join — the sync.economy config toggle had no effect. Balances now transfer across servers, and sync.economy: false genuinely disables it.v26_2_R1 version handler built against paper-api 26.2; server version detection recognizes 26.2 automatically.26.1.2.build.72-stable).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 uses ServerPlayer, CompoundTag, StreamCodec, and net.minecraft.resources.Identifier.-Ppds.enableForge=true once ForgeGradle supports Gradle 9.20.05.2026 · 552 завантаження
fabric-api (0.92.2+1.20.1) so lifecycle and server-play networking APIs resolve at compile time; fabric.mod.json declares a fabric-api dependency.generatePluginBuildInfo emits PluginBuildInfo.VERSION so the @Plugin version always matches the Gradle project version.pds-docs/modrinth-upload.md (Paper vs Fabric JAR); Gradle task checkFabricModMetadata asserts fabric.mod.json exists in the remapped Fabric JAR; Fabric archive base name playerdatasync-fabric so it is not confused with the Paper plugin artifact.PlayerDataSyncReloaded-*.jar (also copied to build/libs/) embeds bundled/playerdatasync-velocity.jar, bundled/playerdatasync-fabric.jar, and bundled/playerdatasync-forge.jar plus bundled/README.txt — one download; extract sibling JARs for Velocity/Fabric/Forge (classes are not merged to avoid mapping clashes).api and common use Java 17 (Fabric/Forge); plugin and 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 in versions/build.gradle.kts (they are not root subprojects, so they previously picked up the toolchain default and emitted 69).velocity-api updated to 3.5.0-SNAPSHOT; Velocity→backend plugin messages use UTF-8 (StandardCharsets.UTF_8); ServerConnectedEvent log line uses event.getServer().getServerInfo() (Velocity 3 API).com.github.johnrengelman.shadow 8.1.1 with com.gradleup.shadow 8.3.10 so shadowJar can process modern class files when relocating (e.g. bundled jars).META-INF/mods.toml version is expanded from Gradle (mod_version); Forge build.gradle.kts no longer overrides root version / group.build.gradle.kts no longer overrides root version / group (single version from gradle.properties).gradle.properties (ForgeGradle, Fabric Loom, and Shadow-related flows are not reliable with CC enabled); parallel and build caching remain enabled../gradlew :plugin:build and uploads the unified build/libs/PlayerDataSyncReloaded-*.jar (includes bundled/ platform JARs).v1_20_R1 and v26_1_R1 VersionHandlerImpl now extend BukkitBaseVersionHandler and implement capture / apply with PDSPlayer (restores compatibility after removal of BaseVersionHandler).PlayerDataSyncFabric: ServerPlayNetworking global receiver is registered in SERVER_STARTING after storage/SyncManager setup; SLF4J error logging for storage init; guards when syncManager is not ready yet.PlayerDataSyncForge: storage init failures use Log4j instead of printStackTrace; packet and login handlers guard syncManager == null.api/common JVM level). v26_1_R1: compileClasspath requests JVM 25 so Paper 26 paper-api resolves while sources still compile with --release 21.build/libs/PlayerDataSyncReloaded-*.jar contains Paper + bundled/ Velocity/Fabric/Forge JARs; Modrinth still needs the extracted platform files per loader (see pds-docs/modrinth-upload.md).bundled/playerdatasync-fabric.jar (extracted from the distribution JAR) for the Fabric loader file — not the outer archive root (that is the Paper plugin with plugin.yml only).gradle.properties version (e.g. PlayerDataSyncReloaded-26.5.5.1-ALPHA.jar); delete any older file such as PlayerDataSyncReloaded-26.5.5-SNAPSHOT.jar from plugins/ so Paper does not remap a stale build. The shaded jar excludes META-INF/versions/** so multi-release dependency layers (class file 69) are not shipped to the remapper.05.05.2026 · 545 завантаження
05.05.2026 · 23 завантаження
03.05.2026 · 41 завантаження
01.05.2026 · 45 завантаження
IllegalStateException on Paper/Purpur servers where PlayerDataSaveEvent was 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.27.04.2026 · 53 завантаження
extraData map to PlayerData for third-party plugin data synchronization.PlayerDataSaveEvent now implements Cancellable, allowing plugins to prevent data from being saved under specific conditions.18.04.2026 · 63 завантаження
11.04.2026 · 48 завантаження
/pds backup export/import for portable data management and safety./pds reload for hot-reloading connections and /pds migrate for data transfers.Attribute constant name changes between 1.20 and 1.21.NoClassDefFoundError occurring when specific version modules were missing.PersistentDataContainer compatibility across 1.20/1.21.11.04.2026 · 42 завантаження
/playerdatasync (aliases: /pds, /pdasync).config.yml with clear documentation for all settings.29.03.2026 · 59 завантаження
The "Reloaded" version is a complete rewrite of the original PlayerDataSync plugin, designed for better performance, modern server support, and extensibility.
auto-save-ticks)11.03.2026 · 177 завантаження
NoSuchMethodError: String.isBlank() by replacing it with Java 8 compatible alternatives in MessageManager.UnsupportedClassVersionError on Java 8 environments.AbstractMethodError: Connection.isValid() by adding safety wrappers for legacy JDBC drivers (SQLite).config.yml was being stripped of content and comments on older Bukkit versions by reducing unnecessary saves.10.03.2026 · 56 завантаження
/sync maintenance <on|off>. Useful for database migrations or emergency fixes./sync menu for a visual way to toggle sync options and manage the plugin./sync profile to track average and maximum save/load times for better performance monitoring.activeByDefault profile to prevent accidental Java 21 builds.CSP-PDS-...) for streamlined server-to-API authentication./sync checkupdate command to manually trigger an update check (bypasses cache).07.03.2026 · 45 завантаження
HttpClient.UpdateChecker.java for streamlined authentication.HttpURLConnection with asynchronous requests and better error handling.05.03.2026 · 49 завантаження
A small update has been released for PlayerDataSync.
Some users were seeing the incorrect version number 2025.03.
This version number was not correct.
With this update, the version has been corrected to 26.3.1-SNAPSHOT.
Please make sure to update to the latest version to avoid confusion with incorrect version information.
04.03.2026 · 52 завантаження
20.02.2026 · 123 завантаження
autosave.on_xp_change (default: true) for instant XP persistence.13.02.2026 · 96 завантаження
-RELEASE/-BETAupdate_checker.timeout) for reliable network behaviorsetBalance implementations are inconsistent25.01.2026 · 167 завантаження
TEXT to LONGTEXT for inventory, enderchest, armor, and offhand columnsTEXT zu LONGTEXT für inventory, enderchest, armor und offhand Spalten🔧 DE: Behebt Probleme mit großen Inventaren und Custom-Enchantments
Custom-Enchantment Deserialization / Custom-Enchantment-Deserialisierung:
minecraft:venom)minecraft:venom)🔧 DE: Verhindert Abstürze bei nicht erkannten Custom-Enchantments
Stale Player Data / Veraltete Spielerdaten:
📝 DE: Unterstützt Plugins wie ExcellentEnchants, die Custom-Enchantments verwenden
Deserialization Statistics & Monitoring / Deserialisierungs-Statistiken & Monitoring:
getDeserializationStats() method for statisticsgetDeserializationStats() Methode für StatistikenresetDeserializationStats() method to reset statisticsresetDeserializationStats() Methode zum Zurücksetzen/sync cache command/sync cache Befehl📝 DE: Admins können jetzt Probleme mit Custom-Enchantments einfach überwachen
Improved Error Handling / Verbesserte Fehlerbehandlung:
inventory: TEXT → LONGTEXT (max. ~4GB instead of ~65KB)inventory: TEXT → LONGTEXT (max. ~4GB statt ~65KB)enderchest: TEXT → LONGTEXTenderchest: TEXT → LONGTEXTarmor: TEXT → LONGTEXTarmor: TEXT → LONGTEXToffhand: TEXT → LONGTEXToffhand: TEXT → LONGTEXT📝 DE: Bestehende Daten bleiben erhalten, keine Datenmigration nötig
EditorIntegration Removed / EditorIntegration entfernt:
EN: The plugin automatically performs an upgrade of database columns on startup:
DE: Das Plugin führt beim Start automatisch ein Upgrade der Datenbank-Spalten durch:
TEXT to LONGTEXT if necessaryTEXT zu LONGTEXT wenn nötigEN: Why LONGTEXT?
DE: Warum LONGTEXT?
- TEXT: Max. ~65KB (65,535 bytes)
- LONGTEXT: Max. ~4GB (4,294,967,295 bytes)
- EN: Custom enchantments with extensive NBT data can become very large
- DE: Custom-Enchantments mit vielen NBT-Daten können sehr groß werden
- EN: Large inventories with many items and enchantments require more space
- DE: Große Inventare mit vielen Items und Enchantments benötigen mehr Platz
EN: The improved error handling recognizes various error types:
DE: Die verbesserte Fehlerbehandlung erkennt verschiedene Fehlertypen:
EN: Error Handling Flow:
DE: Fehlerbehandlung-Flow:
1. EN: Attempt normal deserialization
DE: Versuch der normalen Deserialisierung
2. EN: On error: Check if it's a custom enchantment problem
DE: Bei Fehler: Prüfung ob es ein Custom-Enchantment-Problem ist
3. EN: Extract enchantment name from error message
DE: Extraktion des Enchantment-Namens aus der Fehlermeldung
4. EN: Detailed logging with context
DE: Detailliertes Logging mit Kontext
5. EN: Item is skipped (null), but data remains in database
DE: Item wird übersprungen (null), aber Daten bleiben in DB
6. EN: Statistics are updated
DE: Statistiken werden aktualisiert
EN: After loading inventories, a refresh mechanism is executed:
DE: Nach dem Laden von Inventaren wird ein Refresh-Mechanismus ausgeführt:
updateInventory() for client synchronizationupdateInventory() auf für Client-SynchronisationEN: Why 2 Ticks?
DE: Warum 2 Ticks?
- EN: Gives custom enchantment plugins time to register their enchantments
- DE: Gibt Custom-Enchantment-Plugins Zeit, ihre Enchantments zu registrieren
- EN: Enables plugin event handlers to react to item changes
- DE: Ermöglicht Plugin-Event-Handler, auf Item-Änderungen zu reagieren
- EN: Prevents race conditions between plugin loading and item loading
- DE: Verhindert Race-Conditions zwischen Plugin-Loading und Item-Loading
EN: The new statistics system collects information about deserialization errors:
DE: Das neue Statistiken-System sammelt Informationen über Deserialisierungs-Fehler:
EN: Usage:
DE: Verwendung:
/sync cache # EN: Shows all statistics / DE: Zeigt alle Statistiken
/sync cache clear # EN: Resets statistics / DE: Setzt Statistiken zurück
EN: Admins can now easily monitor custom enchantment issues:
DE: Admins können jetzt einfach Probleme mit Custom-Enchantments überwachen:
/sync cache shows deserialization statistics/sync cache zeigt Deserialisierungs-StatistikenEN: Example Output:
DE: Beispiel-Output:
Deserialization Stats: Deserialization failures: 5 total
(Custom Enchantments: 3, Version Issues: 1, Other: 1)
⚠ If you see custom enchantment failures, ensure enchantment plugins
(e.g., ExcellentEnchants) are loaded and all enchantments are registered.
plugin.yml)plugin.yml prüfen)EN: For Existing Installations:
DE: Für bestehende Installationen:
[INFO] Upgraded inventory column from TEXT to LONGTEXT to support large inventories
[INFO] Upgraded enderchest column from TEXT to LONGTEXT to support large inventories
[INFO] Upgraded armor column from TEXT to LONGTEXT to support large inventories
[INFO] Upgraded offhand column from TEXT to LONGTEXT to support large inventoriesEN: Troubleshooting:
DE: Bei Problemen:
/sync cache for deserialization statistics/sync cache für Deserialisierungs-Statistikenplugin.ymlplugin.yml22.01.2026 · 50 завантаження
03.01.2026 · 161 завантаження
This release includes critical bug fixes for XP synchronization and Vault economy, plus a new Respawn to Lobby feature.
setTotalExperience() with giveExp() as primary methodgiveExp() is more reliable across all Minecraft versions (1.8-1.21.11)31.12.2025 · 40 завантаження
This release includes significant improvements, API migrations, and enhanced compatibility features.
https://craftingstudiopro.de/api/plugins/playerdatasync/latestplayerdatasync) instead of resource IDSTAINED_GLASS_PANE with durability value 7 for older versions (1.8-1.12)GRAY_STAINED_GLASS_PANE for modern versions (1.13+)updateInventory() calls after loading inventory, armor, and offhandSystem.err.println() calls with proper Bukkit loggerprintStackTrace() calls with proper logger.log() calls⚠️ Plugin API Version: Changed from 1.8 to 1.13
- Plugins compiled with this version require at least Minecraft 1.13
- Server administrators using 1.8-1.12 should continue using previous versions
- Automatic legacy conversion may still work, but not guaranteed
If upgrading from 1.2.6-RELEASE or earlier:
1. No configuration changes required
2. Update checker will now use CraftingStudio Pro API
3. All existing data is compatible
4. Recommended to test on a staging server first
31.12.2025 · 57 завантаження
/api/plugins/playerdatasync/latest30.12.2025 · 18 завантаження
30.12.2025 · 34 завантаження
updateInventory() call after loading inventory, armor, and offhand to ensure client synchronizationSystem.err.println() calls with proper Bukkit loggerprintStackTrace() calls with proper logger.log() calls30.12.2025 · 29 завантаження
applyExperience() method with proper reset before setting experiencegiveExp() if setTotalExperience() doesn't workURL(String) constructor with URI.toURL() for better Java 20+ compatibilityPotionEffectType.getName() with getKey().getKey() for better compatibilityPotionEffectType.getByName() usage with NamespacedKey fallbackgetMaxHealth() with Attribute system where availablegetOfflinePlayer(String) usage with better error handling@SuppressWarnings annotations for necessary deprecated method usage29.12.2025 · 43 завантаження
core, database, integration, listeners, managers, utils, commands, apigiveExp() to direct setTotalExperience() methodcore/: Main plugin class (PlayerDataSync)database/: Database management (DatabaseManager, ConnectionPool)integration/: Plugin integrations (EditorIntegrationManager, InventoryViewerIntegrationManager)listeners/: Event listeners (PlayerDataListener, ServerSwitchListener)managers/: Manager classes (AdvancementSyncManager, BackupManager, ConfigManager, MessageManager)utils/: Utility classes (InventoryUtils, OfflinePlayerData, PlayerDataCache, VersionCompatibility)commands/: Command handlers (SyncCommand)api/: API and update checker (UpdateChecker)mvn package -Pmc-1.8 for Minecraft 1.8 (Java 8)mvn package -Pmc-1.9 through -Pmc-1.16 for 1.9-1.16 (Java 8)mvn package -Pmc-1.17 for Minecraft 1.17 (Java 16)mvn package -Pmc-1.18 through -Pmc-1.20 for 1.18-1.20 (Java 17)mvn package -Pmc-1.21 for Minecraft 1.21+ (Java 21) - Default23.12.2025 · 79 завантаження
Added:
Improved:
17.12.2025 · 27 завантаження
Added
- Inventory viewer integration support.
- Player table data now included in editor snapshot.
- Editor integration can be used without API key.
- Added web editor command and API integration.
Fixed
- Resolved duplicate lambda variable issue in advancement sync.
- Minor fixes and adjustments from previous snapshot.
Changed
- Updated compatibility checks for latest Minecraft versions.
- Plugin now embeds editor API configuration.
- Other minor fixes and improvements (#53, #54, #55, #56, #57, #58).
17.12.2025 · 27 завантаження
plugin.yml version with project version (pom filtering) 1.2.1-SNAPSHOT (pom) pom.xml and plugin.yml → 1.2.1-SNAPSHOT