HuskSync

A modern, cross-server player data synchronisation system

APACHE-2.0 License

Stars
136

Bot releases are visible (Hide)

HuskSync - HuskSync 3.1.2 - MC 1.20.4 support

Published by WiIIiam278 10 months ago

HuskSync 3.1.2 adds support for Minecraft 1.20.4. Please note that since a library, adventure-platform-bukkit, has not yet updated, interactive chat and action bar notifications won't work on 1.20.3+ clients just yet. I'll put out a follow-up release when that's been addressed. :)

  • The plugin now supports Minecraft 1.20.3 and 1.20.4.
  • Added support for translating Data Save Causes, courtesy of @nartsisss (#214)
  • Added Russian (ru-ru) locales, courtesy of @nartsisss (#211)
  • Added Turkish (tr-tr) locales, courtesy of @WinTone01 (#207)
  • Updated the German (de-de) locales, courtesy of @Ceddix and @Joo200 (#196, #215)

To update from v3.1.1, just drag+drop. For earlier versions, please consult prior release notes.

📋 HuskSync binaries are only distributed on Spigot, Polymart, Craftaro, or BuiltByBit.

HuskSync - HuskSync 3.1.1 - Minor bug fix

Published by WiIIiam278 about 1 year ago

HuskSync 3.1.1 fixes a minor bug related to persisted locked maps and updates some locales.

  • Updated the Simplified Chinese (zn-cn) locales, courtesy of @Q2297045667 (#183, #184)
  • Fixed banners on persisted locked maps having their banners added too many times when being rendered
    • This could cause excessive client-side lag if too many were added
    • Other minor optimizations to locked map canvas rendering were made in this release

To update, just drag+drop.

📋 HuskSync binaries are only distributed on Spigot, Polymart or Craftaro.

HuskSync - HuskSync 3.1 - Lockstep syncing, Paper plugin & more

Published by WiIIiam278 about 1 year ago

HuskSync 3.1 adds a new sync mode option for better stability on some servers, adds new options for saving player items on death, now runs as a Paper plugin on Paper servers, improves locked map syncing, and more.

  • Added a new sync mode; LOCKSTEP in addition to the default DELAY system (#178)
    • This mode provides better stability for a smoother experience on servers with considerably variable tick rates or network latency
    • DELAY (which pauses syncing for your configured netwrok latency) will remain the default for now, but this may change to LOCKSTEP in the future.
  • Added new configuration options for configuring the behaviour of the system for saving player items on death (#179)
    • Users running Paper servers (reccommended) the system will now save their "items to keep," if any are present instead of their drops
    • Useful for servers with per-item keepInventory setups
    • Rearranged the "save_on_death" options in the config.yml file to be all next to one another
  • Locked maps created on other servers, synchronised between servers, then placed in item frames/storage will no longer appear blank after a server restart (#180)
    • Such maps will now be saved locally to disk on each server and updated with the correct map data when needed, if applicable
  • HuskSync now runs as a Paper plugin on Paper servers.
  • Added a warning that the MySQLPlayerDataBridge migrator only supports migrating from MPDB versions v4.9.2 and below (an update will be released in the future to support newer versions)
  • Fixed an error that could be thrown on modded servers caused by modded blocks/items being null by @GsTio86 (#171)
  • Fixed an issue where interactive menus would sometimes not be clickable on Minecraft 1.20.2 servers
  • Added Dutch (nl-nl) locales, courtesy of @arnokeesman (#176)
  • Updated the Japanese (ja-jp) locales, courtesy of @NamiUni (#170)

To update, it's recommended that you regenerate your config.yml file for this release.

📋 HuskSync binaries are only distributed on Spigot, Polymart or Craftaro.

HuskSync - HuskSync 3.0.2 - Hotfix

Published by WiIIiam278 about 1 year ago

HuskSync 3.0.2 is a hotfix release to address a problem with locked map persistence.

  • Fixed a "Tried returning part of the NBT to outside of the NBT scope" NBT API error when applying map data on a server without pre-existing map data (#169)
  • Fixed an exception fetching player block statistics on modded (e.g. Arclight) servers.

To update, just drag+drop.

📋 HuskSync binaries are only distributed on Spigot, Polymart or Craftaro.

HuskSync - HuskSync 3.0.1 - Bug fixes

Published by WiIIiam278 about 1 year ago

HuskSync 3.0.1 fixes a few bugs present in the initial v3.0 release.

  • Enabled locked map syncing by default (persist_locked_maps) is now set to true in the default config
  • Improved exception handling when a data element fails to be deserialized or applied to a user.
  • Added a config option to disable max health syncing (synchronize_max_health under the synchronization section)
  • Fixed a few issues with health syncing on certain setups (such as extreme health values being applied to players in some cases)
  • Fixed the /userdata restore command having the wrong syntax error message (#166)
  • Fixed data from v2.x displaying the wrong timestamp/UUID, and it not being possible to view or manage these old snapshots (#167)

To update from v3.0, just drag+drop. You may wish to regenerate your config to get the new max health syncing option (or just add it manually from the docs page)

📋 HuskSync is a premium plugin; binaries are not distributed on GitHub. Please purchase the resource from Spigot, Polymart or Craftaro.

HuskSync - HuskSync 3.0 - New Data Format, API; Improved UX

Published by WiIIiam278 about 1 year ago

HuskSync 3.0 is a major release introducing a new, much more versatile data format to enable developers. It supports Minecraft 1.16.5—1.20.2 (released today).

  • Introduced data format v4 — a much more modular format which improves the capability of the HuskSync API
  • Added better support for modded items and plugins which inject ItemStacks with custom NBT tags directly, in addition to the existing support for items with Persistent Data Container (PDC) data
    • It is my intent that plugins such as MMOItems, MythicMobs and ItemsAdder will have their data correctly synced starting with this release.
  • HuskSync will now synchronise Custom Persistent Data Tags applied to players (#155)
  • Banners on locked maps will now be synchronised, and locked map syncing should be more stable in general.
  • The approximate file size of a data snapshot, in KiB, is now displayed on the Data Snapshot List menu and Overview menu.
  • Added a new config option to allow for the customisation of a minimum time for creating additional data snapshots (default: 4h), to make the set of backups available on-hand to administrators more useful.
    • The intent here is that HuskSync should keep the last snapshot from the last X number of play sessions, to allow for more convenient rollbacks if the worst happens
  • Fixed an issue where HuskSync would not save data correctly on server shutdown (#159)
  • Fixed various compatibility issues with other plugins utilising CompletableFuture's shared thread pool (HuskSync will now execute asynchronous operations via platform-implementing APIs, such as Bukkit's task system)
    • Preliminary work has been undertaken to support Folia, which I am to support soon, though wish to test thoroughly first (and may need to adjust synchronous operations to be player-location specific).
  • Updated the Italian (it-it) locales, courtesy of @iVillager (#163)
  • API: HuskSync has an all-new API (v3), hence the major version bump. This necessitates breaking API changes and means plugin developers will have to convert their add-ons to APIv3.
    • Developers can now provide their own extensions of Data and implementations of Serializer to provide custom data
    • The new Custom Data API is already seeing use to allow the synchronisation of data from mods such as Pixelmon!
    • Much more versatile access to getting, setting and editing Data Snapshots and the data they contain

To update, drag+drop the .jar file into your /plugins/ folder and regenerate your config.yml and messages-xx-xx.yml files. Data will automatically be converted from v2.0's format. Thanks to @alexdev03 for their help testing and preparing this release.

📋 HuskSync is a premium plugin; binaries are not distributed on GitHub. Please purchase the resource from Spigot, Polymart or Craftaro.

HuskSync - HuskSync 2.2.8 - Hotfix 2

Published by WiIIiam278 about 1 year ago

HuskSync 2.2.8 fixes another issue preventing MariaDB database environments from occasionally failing to initialize. Sorry for all the updates today 😅!

  • Fixed the MariaDB Driver class not being found during initialization
  • Tweaked database initialization confirmation messages

To update, just drag+drop.

📋 HuskSync is a premium plugin; binaries are not distributed on GitHub. Please purchase the resource from Spigot, Polymart or Craftaro.

HuskSync - HuskSync 2.2.7 - Hotfix

Published by WiIIiam278 about 1 year ago

HuskSync 2.2.7 fixes a bug related to initializing the database for MariaDB users.

  • Fixed MariaDB database users failing to initialize the connection due to a missing schema file

To update, just drag+drop. MariaDB users can now set their database type to MARIADB.

📋 HuskSync is a premium plugin; binaries are not distributed on GitHub. Please purchase the resource from Spigot, Polymart or Craftaro.

HuskSync - HuskSync 2.2.6 - Bug fixes, MariaDB 11 support

Published by WiIIiam278 about 1 year ago

HuskSync 2.2.6 is a maintenance update that fixes a few issues and improves support for users running a MariaDB v11 database.

  • Added MariaDB protocol option type, courtesy of @Joo200 (#145)
    • The MariaDB driver is now bundled in with the plugin to support MariaDB v11 properly
  • Fixed a ConcurrentModificationException that could occur when saving locked map data, courtesy of @rafaelflromao (#140)
  • Added the ability to specify * in the blacklsited command list to block all commands during sync, courtesy of @kforbro (#138)
  • Fixed users inventory crafting slots not being cleared properly before a data sync (#153)

To update, just drag+drop. If you're using MariaDB v11, you should now specify MARIADB as your database type in config.yml.

📋 HuskSync is a premium plugin; binaries are not distributed on GitHub. Please purchase the resource from Spigot, Polymart or Craftaro.

HuskSync - HuskSync 2.2.5 - Bug fixes

Published by WiIIiam278 over 1 year ago

HuskSync 2.2.5 fixes bugs and has been tested to work with Minecraft 1.20 on Spigot. What's coming next to HuskSync, you ask? I'm working on making various improvements to the internal way in which it handles asynchronous operations to improve stability with other plugins that make use of CompletableFutures.

  • Fixed an issue with player PersistentDataContainer synchronization where certain primitive data types would fail to be saved correctly (#118)
    • Please note PersistentDataContainer syncing is still considered an experimental feature
  • Fixed some string compare operations being locale-specific causing compatibility issues on some machines
  • Fixed an issue where the exception logger would fail to print a stacktrace, making debugging synchronization problems harder
  • Updated the Chinese (Traditional) locales, courtesy of @davgo0103 (#124)

To update from v2.2.4, you can just drag+drop. Songoda customers: Since the last release, Songoda has been renamed to Craftaro. Purchases were automatically moved to the new Craftaro site.

📋 HuskSync is a premium plugin; binaries are not distributed on GitHub. Please purchase the resource from Spigot, Polymart or Craftaro.

HuskSync - HuskSync 2.2.4 - Bug fixes, better keepInventory support

Published by WiIIiam278 over 1 year ago

HuskSync 2.2.4 fixes a number of bugs present in the previous release and adds an option beneficial for setups using the keepInventory gamerule or plugins.

  • Added a new config option under the synchronization section: save_empty_drops_on_death
    • This option, which is enabled by default, can be set to false to stop user data snapshots from being created when a user dies and has dropped no items
    • Requires the save_on_death option to be on to be effective
    • This is beneficial for setups using keep inventory (#73)
  • Fixed an issue that would prevent servers from saving persistent data container tags correctly on shutdown
  • Fixed an issue where the update checker would erroneously report that an update was available
  • Renamed the save_dead_player_inventories option to synchronise_dead_players_changing_server to better reflect how it works.
  • Updated the German (de-de) locales, courtesy of @Ceddix (#101)

To update, you must regenerate your config, as a new option has been added and a key renamed. Be sure to update your config on all servers.

📋 HuskSync is a premium plugin; binaries are not distributed on GitHub. Please purchase the resource from Spigot, Polymart or Songoda.

HuskSync - HuskSync 2.2.3 - Fixes & tweaks

Published by WiIIiam278 over 1 year ago

HuskSync 2.2.3 contains more fixes and tweaks to improve your user's experiences.

  • Fixed an issue where players could interact with item frames during the locked synchronization process.
  • Fixed an issue where a ConcurrentModificationException could occur when fetching the user's PersistentDataContainer key mappings
  • Added a new config option (synchronisation.blacklisted_commands_while_locked)
    • This lets you blacklist certain commands to prevent them from being used during the locked synchronization process.
    • Useful for certain plugins, like auction house plugins
    • Empty by default

To update, just drag+drop.

HuskSync - HuskSync 2.2.2 - Hotfix

Published by WiIIiam278 almost 2 years ago

HuskSync 2.2.2 is a hotfix for an unchecked cast exception that appears on player locking logic that occurs when a drowned throws a trident.

  • Fixed an exception caused by an unchecked cast when a drowned throws a trident (#79)

There are no config or locale changes from v2.2.1. If you're updating from v2.1 or earlier, you will however need to regenerate your config file.

HuskSync - HuskSync 2.2.1 - Bug fixes

Published by WiIIiam278 almost 2 years ago

HuskSync 2.2.1 is a small bug fix update

  • Fixed an issue where a user could throw a trident while in a locked state, which could be picked up after synchronization completed, courtesy of @emmanuelvlad (#78)
  • Fixed an issue that prevented items on the users' cursor when disconnecting from correctly dropping to the ground, courtesy of @ItsWagPvP (#76)
  • Fixed an issue that meant the plugin could try and add citizens NPCs to the database
  • Simplified the logic in some areas, carrying out some miscellaneous refactor work.
    • The signature of the methods to get and set data to/from OnlineUser have changed.
    • These methods shouldn't be used by authors directly so this shouldn't affect any plugins (see the provided HuskSyncAPI methods to do this).

To update, just drag+drop. There are no config changes since v2.2 -- though note if you're upgrading from v2.1 or earlier you will need to regenerate your config file.

HuskSync - HuskSync 2.2 - Locked map syncing, priority control, toast notifications

Published by WiIIiam278 almost 2 years ago

Note
Due to an issue in v2.1.2 with the location of the MySQL username credential you will need to regenerate your config.yml file for this release and re-enter your database / redis connection details. Sorry about that!

HuskSync v2.2 adds beta support for synchronizing locked maps. Note this feature is in beta and disabled by default for now. In addition to this, a number of other user experience improving features and tweaks have been made, such as the ability to display synchronization notifications in advancement toasts and customize the priorities of HuskSync's events.

  • Added the abilty to synchronize locked map items (#65)
    • This only works on static locked maps; i.e. ones placed in a cartography table with a glass pane.
    • The pixels of locked maps are serialized to the item and then set when the player changes server.
    • Treasure maps are unsupported. This feature is in beta, so is disabled by default.
  • Added a display option to display synchronization notifications in the advancement toast slot (#68)
  • The priorities of the DEATH, JOIN and QUIT events can now be customised for better plugin compatibility (#61)
  • Fixed an issue that meant inventory and ender chest editing permission nodes weren't being properly respected
  • Fixed the MySQL Username database credentials being at the wrong path in config.yml
    • As a result, you will need to regenerate your config for this release
  • Fixed an issue that meant players weren't being properly locked on disconnect or server shutdown
  • Fixed an issue that meant items on player cursors weren't being cleared when updating their inventory
  • Fixed an issue that meant locked/unsynced players still had their data saved on the world save event or if they died
  • Fixed an issue that meant snapshots could go onto a second line due to long data save cause name IDs (#60)
  • Added additional error handling when setting player health and statistics to increase synchronization resilience of the system when bad values are set by other plugins
  • API: Added a method to get whether or not a player is currently "locked", courtesy of @emmanuelvlad (#75)

To update, drag+drop and be sure to regenerate your config and locales files. Thank you!

Advancement Made: Data synchronized!

HuskSync - HuskSync 2.1.2 - Bug fix

Published by WiIIiam278 almost 2 years ago

HuskSync v2.1.2 fixes an issue related to players losing items in rare cases at very low health point values when changing servers.

  • Fixed an issue where players would be incorrectly treated as dead at very low health point values

To update from v2.1.x, just drag+drop. For older versions, consult the previous changelogs.

HuskSync - HuskSync 2.1.1 - Locale updates, bug fix

Published by WiIIiam278 almost 2 years ago

HuskSync v2.1.1 is a minor update that fixes an issue with the inventory and ender chest viewer commands and updates the German and Italian locales.

  • Fixed a crash that could occur when using the /inventory or /enderchest commands as a result of futures blocking the main thread during join operations (#58)
  • Updated the German locales (de-de), courtesy of @Ceddix (#56)
  • Update the Italian locales (it-it), courtesy of @iVillager (#57)

To update, just drag+drop. Users running the German or Italian messages file may wish to regenerate their config file. No other config changes.

HuskSync - HuskSync 2.1 - Player death backups, data pagination, data dumps

Published by WiIIiam278 about 2 years ago

HuskSync v2.1 makes a few quality-of-life improvements to the chat menu interface and adds some smaller requested features, such as the ability to create a data snapshot whenever a user dies.

  • Added a new option to create and rotate user data snapshots when a user dies
  • Added the ability to dump UserData snapshots to files or a web paste server in-game through a new /userdata dump command with a new permission node
  • The user data snapshot list for each user now presents snapshots in a paginated list for easier browsing and organisation
  • Improved error handling for rare DataSerialization exceptions
  • Significantly reduced the overheads of UserData storage through a modular approach, especially for servers which use less features
  • Improved the config handling system (via Annotaml)
  • Using the restore feature on snapshots that captured a dead user (<= 0 HP) will now restore them on half a heart
  • The latest Inventory and Ender Chest editor menus no longer update the user's current data when you close them even if you hadn't changed anything
  • The Ender Chest menu now supports Purpur's expanded inventory option and will dynamically resize beyond the three rows if necessary
  • Fixed it not being possible to creative-middle-click-clone item stacks from archived Inventory or Ender Chest menus that were uneditable
  • Updated the look of the about menu to match HuskHomes
  • Updated chat messaging logic to make use of the Adventure API via MineDown-adventure
  • Updated inventory handling to use TriumphGUI
  • API: Deprecated #getXData methods in the UserData class in favour of new #getX methods that return Optional<>s
  • API: Deprecated the full-fat constructor on the UserData class in favour of the new UserDataBuilder method

To update, regenerate your config and locale files and drag+drop the new jar file in.

HuskSync - HuskSync 2.0.2 - MariaDB comparability fix, rich command completions

Published by WiIIiam278 about 2 years ago

rich-syntax-highlighting
HuskSync v2.0.2 fixes a compatibility issue with MariaDB caused by a race condition in user data ensuring and adds rich command syntax highlighting via commodore.

  • Added rich command syntax highlighting via commodore (see image)
  • Fixed an SQLIntegrityConstraintViolationException that would occur sometimes on MariaDB setups with large amounts of user data, caused by a race condition in ensuring the correct user data records were present (#40)
  • Fixed an issue that meant the legacy and MPDB data migrators would not accurately track migration progress.
  • Made the error that is logged when HuskSync fails to initialize larger and more obvious (#47)
  • Shrunk the jar file; the Jedis driver is now downloaded at runtime and boosted-yaml is now bundled in
  • Corrected the player persistent data container synchronization logic to fix various data types not synchronizing correctly
  • Added a config option to determine whether the plugin will synchronize dead player inventories; off by default (recommended for servers who want to use keepInventory)
  • Added Bulgarian (bg-bg) locales, courtesy of Pukejoy_1
  • API: Fixed an issue that prevented developers from being able to listen to HuskSync events

To update from HuskSync v2.0(.x), just drag+drop. Users upgrading from v1.x will need to follow the legacy migration documentation.

HuskSync - HuskSync 2.0.1 - Fixes & locale updates

Published by WiIIiam278 over 2 years ago

HuskSync 2.0.1 fixes a few outstanding issues from the initial v2.0 release and updates the zh-tw (Traditional Chinese) locales.

  • Updated the Traditional Chinese (zh-tw) locale, courtesy of davgo0103
  • Tweaked the synchronization logic related to dead players; the plugin will now synchronize dead players correctly.
    • Fixed an IllegalArgumentException that could occur when synchronising a dead player (courtesy of HookWoods)
  • Fixed a crash that could occur in rare cases, caused by exceptional synchronous PlayerQuitEvent execution
  • Tweaked player event handling during player disconnections
  • Increased the maximum blob size in the MySQL Database schema (mediumblob --> longblob) to accommodate servers that utilize complex item tagging and metadata
  • Improved debug logging messages and exception handling when setting and saving player data

To update from HuskSync v2.0, just drag+drop. Users upgrading from v1.x will need to follow the legacy migration documentation.