
HuskSync 3.8
A modern, cross-server player data synchronization system
HuskSync 3.8 makes major improvements to map syncing, optimises data rotation, and improves syncing.
- Added support for Minecraft 1.21.5 on Spigot/Paper. Fabric support for 1.21.5 to follow later on when it's ready.
- Overhauled the logic behind locked map synchronisation, courtesy of @solaluset (#464)
- Before, locked maps stopped tracking position after the player returned to the map's origin server. Having several copies of the same map in different slots also would cause it to be saved several times
- Maps in bundles were also not being synced, and saving map pixels in items directly made snapshots quite big
- This has been addressed by this update, which adds two new data tables to your database and will persist additional keys to Redis to handle locked map syncing.
- The result: more stable, smaller, and performant map syncing
- Added
/husksync dump
(permission:husksync.command.husksync.dump
) to produce a system status dump of the plugin to the web (#460) - Added
/userdata save
(permission:husksync.command.userdata.save
) to let you manually save data snapshots of users - Changed
/userdata dump
to usepastes.dev
for web dump uploads, instead ofmclo.gs
(snapshots are easier to read) - Improved data syncing through the addition of "check-in petitions"
- This improves data fetching speed in cases where a user logs out during sync application; when they log back in, the server will petition the server they are checked out on to check them out.
- We also now unlock users after saving sync on a server to accommodate this, and track user disconnection status to avoid inconsistencies with what platforms return for
isOnline
- Optimised data rotation to not load snapshots when rotating (could cause performance issues on servers with high snapshot counts per player).
- Thanks to @ilightwas for their help with fixing an issue with this (#485)
- Fabric: Fixed an issue where unserializable item stack data elements wouldn't be skipped
- Updated the Simplified Chinese locales (zh-cn), courtesy of @jhqwqmc (#472)
- Overhauled build logic for much simpler release preparation by flattening all version builds to one branch (#463)
- API: Fixed inconsistencies with equality checks on data
Identifier
s
To update, drag+drop and regenerate your messages-xx-xx.yml
file. Please note upgrading to 1.21.5 from 1.21.4 servers and below is an irreversible action; all HuskSync servers must be on the same version of Minecraft & Paper.
HuskSync 3.7.3 is a small update to address a few issues.
- Updated the Packet-Events hook to support 1.21.4 (please note ProtocolLib still hasn't updated yet and won't work on 1.21.4)
- Fixed PostgreSQL failing to update snapshots in the database, courtesy of @solaluset (#440)
To update, just drag+drop. Compatible with Paper/Fabric for Minecraft 1.20.1, 1.21.1, and 1.21.4.
HuskSync 3.7.2 adds support for Minecraft 1.21.4. Additionally, please note that HuskSync for Minecraft 1.21.1 has now been promoted to the LTS support channel, and Minecraft 1.21.3 support has ended (replaced with 1.21.4).
- Updated to support Minecraft 1.21.4
- Fixed an exception that could be thrown when plugins attempted to register custom data API extensions
- API: Added a method for retrieving an OnlineUser by UUID in the common module
To update, just drag+drop. Compatible with Paper/Fabric for Minecraft 1.20.1, 1.21.1, and 1.21.4.
HuskSync 3.7.1 adds support for Minecraft 1.21.3, and fixes bugs.
- Added support for Minecraft 1.21.3 on Paper and Fabric.
- Added a warning on startup if the
server.yml
value has not been changed (#314) - Fixes an issue where you could double-click stack to collect unstacked items without edit perms in the inventory/ender chest GUIs.
- Fixed the persistence of maps from Minecraft 1.20.5 and newer having an incorrect bit depth (#406)
- Fixed edits on the DataSaveEvent failing to update save causes due to missing caching, courtsy of @ProdPreva1l and @seeruk (405)
- Fixed the API not being published for v3.7 (#399)
To update, just drag+drop. Compatible with Paper/Fabric for Minecraft 1.20.1, 1.21.1, and 1.21.3.
HuskSync 3.7 makes stability improvements and fixes bugs. This release also introduces a new release model for HuskSync as previously announced, which adds support for Fabric 1.21.1. HuskSync 3.7 supports Spigot/Paper/Fabric 1.20.1 and 1.21.1 (download the right version for your server).
- Changed the way the plugin is published. You must now download the correct JAR for your server's Minecraft version. See the announcement post on Discord for more details.
- Added support for Fabric 1.21.1, courtesy of @hui1601 (#339)
- Added an option to disable automatic DDL operations for servers with locked-down SQL user access, courtesy of @TheCodedOne (#377)
- Added an aftermarket service command which force-upgrades all legacy user data from HuskSync v2
- Users are now locked just prior to their data being updated following an inventory or ender chest command which updates their data
- Attributes are now allow-listed instead of deny-listed.
- This was done for a number of reasons, but primarily because it's a better config default; in the vast majority of cases users only need a specific set of attributes synced.
- This prevents various edge-case attributes from being erroneously synced, too
- Fixed item and block statistics not syncing (#362)
- Fixed attributes not syncing when the default values were the same as the user's value due to an oversight, causing users whose attribute values reset from not syncing
- Fixed issues with data rotation when the database mode was set to PostgreSQL (#383)
- Fixed an issue on Paper 1.21.1 with map cursors not being correctly synced
- Fixed an issue Paper 1.21.1 where inventory crafting slots weren't properly cleared for safety during sync
✅ Compatible with: Spigot/Paper/Fabric 1.20.1 and 1.21.1 (download the right version for your server).
⚠️ Please regenerate your config.yml and messages-xx-xx.yml files when updating to this release.
HuskSync 3.6.8 adds support for Minecraft 1.21.1 and fixes a bug.
- Added support for Minecraft 1.21.1
- Fixed an exception related to map cursors on Paper 1.21+
To update from 3.6.7, just drag+drop. Otherwise, please regenerate or update your config.yml
file.
HuskSync 3.6.7 fixes bugs present in the previous release pertaining to attributes & potion effects. Please regenerate or update your config.yml
file for this release.
- Made several changes to attribute modifier syncing
- A new section for configuring how to sync attributes has been added.
- You can now configure attributes to ignore modifiers by name, such as potion effect modifiers which are now skipped by default (#349)
- Attributes from Minecraft 1.20.1 data will no longer be applied on Minecraft 1.21 servers due to changes
- Potion effect syncing now optionally depends on attribute syncing
- Removed the
TOAST
notification display slot option (may be revisited in the future if toast dispatching is decoupled from advancements) - The status menu will now display more detailed server version information
- Fixed ambient potion effects (beacons, conduits, The Warden mob) being synced when they shouldn't be (#289)
- Fixed the syntax processing on
husksync migrate set
being incorrect - Fixed a ConcurrentModificationException on potion effect syncing, courtesy of @ProdPreva1l (#354)
- Fixed the PacketEvents hook not cancelling relevant outbound packets (#344)
- Fixed "Attribute modifier already applied" being thrown during attribute application (#348)
- API: Added a
ModLoadedCallback
callback on Fabric for doing stuff when the mod loads, courtesy of @Stampede2011 (#346)
To update from v3.6.x, just drag+drop and regenerate your config file.
- Fixed the PostgresSQL driver not being bundled in the Fabric version of HuskSync
- Fixed an issue with the in-game migrator's help menu displaying the wrong usage
- The usage of the migrator command was slightly adjusted in HuskSync v3.6.3
- Fixed the ProtocolLib hook failing to initialize in certain circumstances, such as if it had not initialized before HuskSync had.
- Fixed attributes throwing an exception when being applied on <1.21 servers
- Fixed items not being correctly upgraded to the correct target version in some cases
HuskSync 3.6.4 fixes a bug with attribute syncing on >=1.21 in the previous release
- Fixed it being possible to stack attribute modifiers in certain cases (#326)
- Fixed a rare IllegalArgumentException syncing invalid health scale values
To update, just drag+drop.
HuskSync 3.6.3 fixes a bug with permissions from the previous release.
- Fixed permission checks not working correctly on Paper 1.20.4 and earlier servers.
- Fixed command usage text not being set properly on Paper 1.20.4 and earlier servers
To update, just drag+drop.
- Fixed an IllegalArgumentException when a player joined the game on Paper 1.20.4 and earlier servers
HuskSync 3.6.1 is a bug-fixing update that also makes some improvements to plugin commands.
- Commands are now natively registered via Brigadier where possible, and will provide rich syntax suggestions on Paper/Fabric servers
- The
brigadier_tab_completions
option has been removed.
- The
- Added an option to disable individual HuskSync commands and prevent them from registering (
disabled_commands
) - The username argument is now required for the list and view subcommands of
/userdata
- Fixed compatibility with Minecraft 1.21 on Paper servers
- Fixed various inconsistencies preventing the MongoDB database mode from fully working, courtesy of @Stampede2011 (#321)
- Fixed locked maps in Shulker Boxes not having their map data persisted on data save (#322)
- Fixed the section header comment being incorrect for the sync settings section of the config file
- Fixed various issues with the Fabric version of HuskSync, including issues syncing the first hotbar slot
To update, just drag+drop. You may wish to regenerate your config.yml
file for the updated command options.
HuskSync 3.6 adds support for 1.21 and makes several internal changes to improve data syncing.
- Updated the plugin to support Minecraft 1.21 on Spigot/Paper servers.
- HuskSync now also runs as a server-side Fabric mod on Minecraft 1.20.1 servers. (#217)
- Support for this is still in beta, but if you'd like to try it out, get in touch on Discord or self-compile as you will need a separate jar.
- You cannot sync data between Bukkit & Fabric currently
- Thanks to @hanbings and @Stampede2011 for their help with this
- Data is now synced in a deterministic order, and data types can depend on one another (#309)
- Attribute syncing now requires potion effect syncing to be enabled (it will automatically disable if both are not turned on)
- Fixed health syncing conflicting with attribute syncing if they were applied to a user in the wrong order. (#307)
- Updated the Traditional Chinese (zh-tw) locales, courtesy of @davgo0103 (#316)
- Fixed an issue where HuskSync would attempt to load a hook for a dependency that had failed to enable
- Fixed an incorrect syntax error message being displayed with the
/userdata
command. - API: Added data identifier dependencies
- API: The plugin will now throw a
NotRegisteredException
if you attempt to access an invalid (shaded) API instance - API: Added an API platform target for HuskSync on Fabric
To update from 3.5.x, just drag+drop as there are no config changes.
HuskSync 3.5.3 fixes a bug with potion effect syncing when upgrading from older versions.
- Fixed attribute base values not being applied, causing these to fail to accurately sync the correct effective value under certain circumstances
- Fixed data failing to load for users where users had potion effects saved with legacy Spigot API names due to an inconsistency
To update from 3.5.x, just drag+drop as there are no config changes. If you're updating from older versions, please check through prior changelogs.
HuskSync 3.5.2 is a small release to fix a couple of minor issues that have cropped up since the last release.
- Added support for using PacketEvents as an alternative to ProtocolLib for packet-level user support, courtesy of @alexdev03 (#296)
- Fixed an issue where legacy statistic data would cause NullPointerExceptions during registry key instantiation in certain circumstances (#304)
- Fixed a schema issue with PostgreSQL, courtesy of @ProdPreva1l (#299)
- Fixed duplication in user table entries, and username caches not being updated for MongoDB users, courtesy of @ProdPreva1l (#301)
To update from 3.5.1, just drag+drop as there are no config changes. If you're updating from older versions, please check through prior changelogs.
HuskSync 3.5.1 adds support for Minecraft 1.20.5 and 1.20.6. Thanks for your patience as I prepared this update - I was waiting on a Spigot upstream attribute-related fix to be merged with Paper, among other things, before releasing this.
- Added support for Minecraft 1.20.5 and 1.20.6
- There are major NBT changes in this release. Downgrading is definitely not possible, even if you do hacky stuff like updating data versions
- HuskSync will use Mojang's DataFixerUpper (DFU) via Item-NBT-API to perform on-the-fly migration of item data to the new component-based format
- Fixed users with PacketEvents installed having skins and render distance settings fail to update for clients on join sometimes (#287)
- Fixed an issue related to performing async operations on player item NBT when serializing locked map data on items
- Changed how advancement grant messages are disabled when syncing data
- This previously temporarily adjusted the gamerule. This is no longer the case; instead advancement grants for locked users will be cancelled through Paper's event
- Now works correctly on Folia, though no longer works on Spigot (due to Spigot lacking an event param for this)
- Added French (fr-fr) locales, courtesy of @IbanEtchep (#293)
- API: Added an optionally-overridable
deserialize
method toSerializer
that accepts a Minecraft version if you need to perform data-upgrade operations contextual to the Minecraft version of the snapshot data when deserializing
To update, just drag+drop – there are no config changes if you're upgrading from v3.5. Please check the change notes for v3.5 if you are upgrading from an older version.
HuskSync 3.5 is a big update adding support for Folia, Attribute & separate Flight Status data syncing, PostgreSQL data storage, Mongo Atlas support, ProtocolLib support, and more.
- Added support for Folia (#280)
- Added a new data type: Attributes (#276)
- Adds support for syncing attributes applied to players, including modifiers and instances and fixes issues related to health and max health syncing.
- The following data values which can be attributed to the player will now be properly synced:
Flight speed, Movement speed, Luck, Knockback resistance, Mob pathfind follow range, Knockback, Attack speed, Max absorption (1.20.2+)
- This means that plugins/commands modifying player attributes directly will now be correctly synced cross-server. This system now also better takes into account modifiers from equipment and potion effects.
- This also futureproofs support for syncing these newly customizable values coming in 1.20.5/1.21:
Block breaking speed, Entity/block mining range ("reach"), Step height, Jump strength, Distance you can fall without taking fall damage, Fall damage calculation multiplier, Gravitational pull
- The config to sync max health has been removed and replaced with a config option to skip syncing specific attributes
- Added a new data type: Flight Status, which has been moved out of the game mode data type (#273)
- Added support for PostgreSQL as a database storage option, courtesy of @ProdPreva1l (#255)
- Improved MongoDB data storage support, courtesy of @ProdPreva1l (#255)
- Added support for MongoDB Atlas
- Added support for Mongo replica sets
- Added support for hooking into ProtocolLib to ignore inbound locked user packets for lower-level cancellation (#274)
- Improved data validation; this now takes place on unpack rather than deserialization (#279)
- You can now delete invalid or corrupt snapshots
- Slightly adjusted how cursor items are handled on logout
- The system locale format will now be used for formatting dates / times
- Fixed issues with
/userdata
menus when viewing data for users with names that were surrounded with double underscores (#270) - Fixed it being possible to manipulate armor stands while locked (even if you're not using ProtocolLib)
- Fixed an IntegrityConstraintViolation when trying to modify inventory data of an offline player through the API (#275)
- Updated the Simplified Chinese (zh-cn) locales, courtesy of @jhqwqmc (#281)
- API: A few API changes have been made:
- Added
husksync:attributes
andhusksync:flight_status
data types. husksync:health
– Methods to get/set max health have been deprecated for removal. Helper methods to easily access this have been added to the newhusksync:attributes
husksync:game_mode
– Methods to get/set if the player is flying/can fly have been deprecated for removal. Use the newhusksync:flight_status
attributes instead- Data save causes can now hold a flag specifying whether they should fire the
DataSaveEvent
(by default, all except shutdown/legacy migration do this) - Internally, serializers that extended
BukkitSerializer.Json
have been removed and now just useBukkitSerializer.Json<Type>
as their serializer. Since these serializers were internal, this shouldn't introduce any breaking changes, but is noted here nonetheless.
- Added
To update, just drag+drop. You should regenerate your messages-xx-xx.yml
file and consider regenerating your config.yml
file, particularly if you use MongoDB (as new options have been added for Atlas support)
HuskSync 3.4 adds support for MongoDB! It also fixes a bug and addresses a compatibility issue.
- Added support for MongoDB storage, courtesy of @ProdPreva1l (#250)
- Improved the compatibility of event cancellation handling for better plugin interoperability, courtesy of @EinDev (#246)
- Fixed an issue where the last snapshot cache of online users would not be invalidated on Redis on a server shutdown, causing sync issues in specific circumstances
To update, just drag+drop.
HuskSync 3.3.3 fixes a bug in the previous release.
- Fixed player death save events causing issues with players dying multiple times
- API: Data save and update causes are now customisible by developers
To update, just drag+drop.