9
0
mirror of https://github.com/WiIIiam278/HuskSync.git synced 2025-12-19 14:59:21 +00:00

docs: improve plugin setup documentation

This commit is contained in:
William278
2024-12-08 14:12:03 +00:00
parent 8e4678468e
commit 2d547507d5
12 changed files with 265 additions and 61 deletions

View File

@@ -1,7 +1,7 @@
> **Warning:** API v2 is no longer supported or compatible with HuskSync v3.0. See [[Data Snapshot API]] for the equivalent v3 API. 🚨
HuskSync v2.0 provides an API for fetching and retrieving `UserData`; a snapshot of a user's synchronization. HuskSync v2.0 provides an API for fetching and retrieving `UserData`; a snapshot of a user's synchronization.
> **Warning:** API v2 is no longer supported or compatible with HuskSync v3.0. See [[Data Snapshot API]] for the equivalent v3 API. 🚨
This page assumes you've read the general [[API]] introduction and imported HuskSync (v2.x) into your project, and added it as a dependency. This page assumes you've read the general [[API]] introduction and imported HuskSync (v2.x) into your project, and added it as a dependency.
🚨 HuskSync API v2 only targets HuskSync v2.0-2.2.8. It is **not compatible with HuskSync v3.0+**. The equivalent API for HuskSync v3 is the [[Data Snapshot API]]. 🚨 HuskSync API v2 only targets HuskSync v2.0-2.2.8. It is **not compatible with HuskSync v3.0+**. The equivalent API for HuskSync v3 is the [[Data Snapshot API]].

View File

@@ -26,4 +26,10 @@ This plugin does not support the following software-Minecraft version combinatio
| 1.16.5 | _All_ | Please use v3.3.1 or lower | | 1.16.5 | _All_ | Please use v3.3.1 or lower |
| below 1.16.5 | _All_ | Upgrade to Minecraft 1.16.5 | | below 1.16.5 | _All_ | Upgrade to Minecraft 1.16.5 |
†Further downstream forks of this server software are also affected. †Further downstream forks of this server software are also affected.
## Incompatible plugins / mods
Please note the following plugins / mods can cause issues with HuskSync:
* Restart plugins / mods are not supported. These will cause [player data to not save correctly when your server restarts](troubleshooting#issues-with-player-data-going-out-of-sync-during-a-server-restart) due to the way these plugins utilise bash scripts. It's important to understand that restart plugins don't actually restart yur server, they just trigger some (often unstable) process-killing scripting logic to occur!
* Combat logging plugins / mods are not supported. Some have built-in support for HuskSync and should work as expected, but for others you may wish to modify the [[Event Priorities]]

View File

@@ -65,7 +65,7 @@ database:
user_data: husksync_user_data user_data: husksync_user_data
# Redis settings # Redis settings
redis: redis:
# Specify the credentials of your Redis database here. Set "password" to '' if you don't have one # Specify the credentials of your Redis server here. Set "password" to '' if you don't have one
credentials: credentials:
host: localhost host: localhost
port: 6379 port: 6379

73
docs/Database.md Normal file
View File

@@ -0,0 +1,73 @@
HuskSync persists player data and snapshots in a database of your choice. This is separate from a [[Redis]] server, which HuskSync uses for caching and inter-server messaging, which is also required to use HuskSync.
## Database types
> **Warning:** There is no automatic way of migrating between _database_ types. Changing the database type will cause data to be lost.
| Type | Database Software |
|:--------------------------|:--------------------------|
| `MYSQL` | MySQL 8.0 or newer |
| `MARIADB` | MariaDB 5.0 or newer |
| `POSTGRES` | PostgreSQL |
| [`MONGO`](#mongodb-setup) | MongoDB |
## Configuring
To change the database type, navigate to your [`config.yml`](Config-File) file and modify the properties under `database`.
<details>
<summary>Database options (config.yml)</summary>
```yaml
# Database settings
database:
# Type of database to use (MYSQL, MARIADB, POSTGRES, MONGO)
type: MYSQL
# Specify credentials here for your MYSQL, MARIADB, POSTGRES OR MONGO database
credentials:
host: localhost
port: 3306
database: minecraft
username: root
password: ''
# Only change this if you're using MARIADB or POSTGRES
parameters: ?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8
# MYSQL, MARIADB, POSTGRES database Hikari connection pool properties. Don't modify this unless you know what you're doing!
connection_pool:
maximum_pool_size: 10
minimum_idle: 10
maximum_lifetime: 1800000
keepalive_time: 0
connection_timeout: 5000
# Advanced MongoDB settings. Don't modify unless you know what you're doing!
mongo_settings:
using_atlas: false
parameters: ?retryWrites=true&w=majority&authSource=HuskSync
# Names of tables to use on your database. Don't modify this unless you know what you're doing!
table_names:
users: husksync_users
user_data: husksync_user_data
```
</details>
### Credentials
You will need to specify the credentials (hostname, port, username, password and the database). These credentials are used to connect to your database server.
If your database server account doesn't have a password (not recommended), leave the password field blank (`password: ''`') and the plugin will attempt to connect without a password.
### Connection Pool properties
If you're using MySQL, MariaDB, or PostgreSQL as your database type, you can modify the HikariCP connection pool properties if you know what you're doing.
Please note that modifying these values can cause issues if you don't know what you're doing. The default values should be fine for most users.
## MongoDB Setup
If you're using a MongoDB database, in addition to setting the database type to `MONGO`, you'll need to perform slightly different configuration steps.
- Under `credentials` in the `database` section, enter the credentials of your MongoDB Database. You shouldn't touch the `connection_pool` properties.
- Under `parameters` in the `mongo_settings` section, ensure the specified `&authSource=` matches the database you are using (default is `HuskSync`).
### MongoDB Atlas setup
If you're using a MongoDB Atlas database, you'll also need to set the Atlas settings and adjust the connection parameters string.
- Set `using_atlas` in the `mongo_settings` section to `true`.
- Remove `&authSource=HuskSync` from `parameters` in the `mongo_settings`.
Note that the `port` setting in `credentials` is ignored when using Atlas.

View File

@@ -1,9 +1,9 @@
This page addresses a number of frequently asked questions about the plugin. This page addresses a number of frequently asked questions about HuskSync.
## Frequently Asked Questions ## Frequently Asked Questions
<details> <details>
<summary>&nbsp;<b>What data can be synchronized?</b></summary> <summary>&nbsp;<b>What data can be synced?</b></summary>
HuskSync supports synchronising a wide range of different data elements, each of which can be toggled to your liking. Please check out the [[Sync Features]] page for a full list. HuskSync supports synchronising a wide range of different data elements, each of which can be toggled to your liking. Please check out the [[Sync Features]] page for a full list.
@@ -30,16 +30,56 @@ Please note we cannot guarantee compatibility with everything &mdash; test thoro
</details> </details>
<details> <details>
<summary>&nbsp;<b>Is Redis required? What is Redis?</b></summary> <summary>&nbsp;<b>What versions of Minecraft does HuskSync support?</b></summary>
Yes! HuskSync requires Redis to operate (for reasons demonstrated below). Check the [[Compatibility]] table. In addition to the latest release of Minecraft, the latest version of HuskSync will support specific older versions based on popularity and mod support.
Redis is an in-memory database server used for caching data at scale and sending messages across a network. You have a Redis server in a similar fashion to the way you have a MySQL database server. If you're using a Minecraft hosting company, you'll want to contact their support and ask if they offer Redis. If you're looking for a host, I have a list of some popular hosts and whether they support Redis [available to read here.](https://william278.net/redis-hosts) If your server's version of Minecraft isn't supported by the latest release, there's plenty of older, stable versions of HuskSync you can download, though note support for these versions will be limited.
</details> </details>
<details> <details>
<summary>&nbsp;<b>How does the plugin synchronize data?</b></summary> <summary>&nbsp;<b>What do I need to run HuskSync?</b></summary>
See the [Requirements](setup#requirements) section under Setup.
You need a [[Database]] server, a [[Redis]] server, and [compatible Minecraft servers](compatibility).
</details>
<details>
<summary>&nbsp;<b>Is Redis required? What is Redis?</b></summary>
Yes, HuskSync requires a [[Redis]] server **in addition to a [[Database]] server** to operate.
Redis is an in-memory database server used for caching data at scale and sending messages across a network. You have a Redis server in a similar fashion to the way you have a MySQL database server. If you're using a Minecraft hosting company, you'll want to contact their support and ask if they offer Redis. If you're looking for a host, I have a list of some popular hosts and whether they support Redis [available to view here.](https://william278.net/docs/website/redis-hosts)
For more information, check our [Redis setup instructions](redis).
</details>
<details>
<summary>&nbsp;<b>How much RAM does my Redis server need?</b></summary>
We recommend your Redis server has 1GB of RAM, and that your Redis server is installed locally (on the same server as your game servers, or at least on the server running your Velocity/BungeeCord/Waterfall proxy).
</details>
<details>
<summary>&nbsp;<b>Is a Database required? What Databases are supported?</b></summary>
Yes. HuskSync requires both a [[Database]] server and a [[Redis]] server to operate.
HuskSync supports the following database types:
* MySQL v8.0+
* MariaDB v5.0+
* PostgreSQL
* MongoDB
</details>
<details>
<summary>&nbsp;<b>How does data syncing work?</b></summary>
HuskSync makes use of both MySQL and Redis for optimal data synchronization. You have the option of using one of two [[Sync Modes]], which synchronize data between servers (`DELAY` or `LOCKSTEP`) HuskSync makes use of both MySQL and Redis for optimal data synchronization. You have the option of using one of two [[Sync Modes]], which synchronize data between servers (`DELAY` or `LOCKSTEP`)
@@ -71,9 +111,10 @@ Indeed, there exist economy plugins &mdash; such as [XConomy](https://github.com
</details> </details>
<details> <details>
<summary>&nbsp;<b>Is this better than MySQLPlayerDataBridge?</b></summary> <summary>&nbsp;<b>Is HuskSync better than MySQLPlayerDataBridge?</b></summary>
I can't provide a fair answer to this question! What I can say is that your mileage will of course vary. I can't provide a fair answer to this question! What I can say is that your mileage will of course vary.
The performance improvements offered by HuskSync's synchronization method will depend on your network environment and the economies of scale that come with your player count. In terms of featureset, HuskSync does feature greater rollback and snapshot backup/management features if this is something you are looking for. The performance improvements offered by HuskSync's synchronization method will depend on your network environment and the economies of scale that come with your player count. In terms of featureset, HuskSync does feature greater rollback and snapshot backup/management features if this is something you are looking for.
</details> </details>

View File

@@ -1,25 +1,31 @@
# [![HuskSync banner](https://raw.githubusercontent.com/WiIIiam278/HuskSync/master/images/banner.png)](https://github.com/WiIIiam278/HuskSync) # [![HuskSync banner](https://raw.githubusercontent.com/WiIIiam278/HuskSync/master/images/banner.png)](https://github.com/WiIIiam278/HuskSync)
Welcome! This is the plugin documentation for HuskSync v3.x+. Please click through to the topic you'd like to read about. Welcome! This is the plugin documentation for HuskSync v3.x+. Please click through to the topic you'd like to read about.
## Guides ## Setup
* 📚 [[Setup]] * 📚 [[Setup]]
* 💾 [[Database]]
* ✨ [[Redis]]
* ⚠️ [[Compatibility]] * ⚠️ [[Compatibility]]
* 📄 [[Config File]] * 📄 [[Config File]]
* 🔗 [[Troubleshooting]] * 🔗 [[Troubleshooting]]
* ↪️ [[Data Rotation]]
* ↗️ [[Legacy Migration]]
* ✨ [[MPDB Migration]]
* 🎏 [[Translations]]
* ❓ [[FAQs]]
## Documentation ## Features
* 🖥️ [[Commands]] * 🖥️ [[Commands]]
* ✅ [[Sync Features]] * ✅ [[Sync Features]]
* ⚙️ [[Sync Modes]] * ⚙️ [[Sync Modes]]
* 🟩 [[Plan Hook]] * ↪️ [[Data Rotation]]
* ❓ [[FAQs]]
## Guides
* ↗️ [[Legacy Migration]]
* ✨ [[MPDB Migration]]
* ☂️ [[Dumping UserData]] * ☂️ [[Dumping UserData]]
* 🟩 [[Plan Hook]]
* 📋 [[Event Priorities]] * 📋 [[Event Priorities]]
* ⚔️ [[Keep Inventory]] * ⚔️ [[Keep Inventory]]
* 🎏 [[Translations]]
## Developers
* 📦 [[API]] v3 * 📦 [[API]] v3
* 📝 [[Data Snapshot API]] * 📝 [[Data Snapshot API]]
* 📝 [[Custom Data API]] * 📝 [[Custom Data API]]

View File

@@ -1,4 +1,4 @@
If your server uses the `keepInventory` gamerule, where players keep the contents of their inventory after dying, HuskSync's built-in snapshot-on-death and dead-player synchronization features can saveCause a conflict leading to synchronization issues. If your server uses the [`keepInventory` game rule](https://minecraft.wiki/w/Keep_inventory), where players keep the contents of their inventory after dying, HuskSync's built-in snapshot-on-death and dead-player synchronization features can saveCause a conflict leading to synchronization issues.
To solve this issue, you will need to adjust three settings in your `config.yml` file, as described below. To solve this issue, you will need to adjust three settings in your `config.yml` file, as described below.

80
docs/Redis.md Normal file
View File

@@ -0,0 +1,80 @@
Redis is a piece of server used for data caching and cross-server messaging. A Redis server running Redis v5.0+ is **required** in addition to a compatible [[Database]] to use HuskSync. There are a number of ways of [installing or getting a Redis server](#getting-a-redis-server).
For the best results, we recommend a Redis server with 1GB of RAM, hosted locally (on the same machine as all your other servers). If your setup has multiple machines, install Redis on the machine with your Velocity/BungeeCord/Waterfall proxy server and ensure lockstep syncing mode is in use.
## What is Redis?
[Redis](http://redis.io/) (**RE**mote **DI**ctionary **S**erver) is an open-source, in-memory data store server that can be used as a cache, message broker, streaming engine, or database.
HuskSync requires Redis and uses it for caching player data when they change server, and for pub/sub messaging to facilitate cross-server admin actions (such as the [`/invsee` command](Commands) to update a player's data on other servers). Check the [[FAQs]] for more details.
## Configuring
To configure Redis, navigate to your [`config.yml`](Config-File) file and modify the properties under `redis`.
<details>
<summary>Database options (config.yml)</summary>
```yaml
# Redis settings
redis:
# Specify the credentials of your Redis server here. Set "password" to '' if you don't have one
credentials:
host: localhost
port: 6379
password: ''
use_ssl: false
# Options for if you're using Redis sentinel. Don't modify this unless you know what you're doing!
sentinel:
# The master set name for the Redis sentinel.
master: ''
# List of host:port pairs
nodes: []
password: ''
```
</details>
### Credentials
Enter the hostname, port, and default user password of your Redis server.
If your Redis default user doesn't have a password, leave the password field blank (`password: ''`') and the plugin will attempt to connect without a password.
### Default user password
Depending on the version of Redis you've installed, Redis may or may not set a random default user password. Please check this in your Redis server config. You can clear the password of the default user with the below command in `redis-cli`.
```bash
requirepass thepassword
user default on nopass ~* &* +@all
```
### Using Redis Sentinel
If you're using [Redis Sentinel](https://redis.io/docs/latest/operate/oss_and_stack/management/sentinel/), set this up by filling out the properties under the `sentinel` subsection.
You'll need to supply your master set name, your sentinel password, and a list of hosts/ports in the format `host:port`.
## Getting a Redis Server
HuskSync requires a Redis server. Instructions for getting Redis on different servers are detailed below. HuskSync is tested for the official Redis package, but should also work with Redis forks or other compatible software.
For the best results, we recommend a Redis server with 1GB of RAM, hosted locally (on the same machine as all your other servers). If your setup has multiple machines, install Redis on the machine with your Velocity/BungeeCord/Waterfall proxy server and ensure lockstep syncing mode is in use.
### If you're using a Minecraft server hosting provider
Please contact your host's customer support and request Redis. You can direct them to this page if you wish. Looking for a Minecraft Server host that supports Redis? We maintain a list of [server hosts which offer Redis](https://william278.net/docs/website/redis-hosts).
If your host doesn't offer Redis, you should consider whether HuskSync is the right plugin for you. If you still want to use HuskSync, you could choose to rent a cheap Redis server externally from a provider such as DigitalOcean, though note we don't recommend this as it increases the latency between your game servers and cache, which will impact syncing performance.
### Redis on Linux or macOS
You can [install Redis](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/) on your distribution of Linux. Redis is widely available on most package manager repositories.
You can also [install Redis](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-mac-os/) on your macOS server.
### Redis on Windows
Redis isn't officially supported on Windows, but there's a number of [unofficial ports](https://github.com/tporadowski/redis/releases) you can install which work great and run Redis as a Windows service.
You can also [install Redis via WSL](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-windows/) if you prefer.
### Pterodactyl / Pelican panel hosts
If you're self-hosting your server on a Pterodactyl or Pelican panel, you will already have Redis installed and can use this server for HuskSync, too.
If you are hosting your Redis server on the same node as your servers, you need to use `172.18.0.1` as your host (or equivalent if you changed your network settings), and bind it in the Redis config `nano /etc/redis/redis.conf`.
You will also need to uncomment the `requirepass` directive and set a password to allow outside connections, or disable `protected-mode`. Once a password is set and Redis is restarted `systemctl restart redis`, you will also need to update the password in your pterodactyl `.env` (`nano /var/www/pterodactyl/.env`) and refresh the cache `cd /var/www/pterodactyl && php artisan config:clear`.
You may also need to allow connections from your firewall depending on your Linux distribution.

View File

@@ -1,18 +1,18 @@
This will walk you through installing HuskSync on your network of Spigot or Fabric servers. Please check your server's [[Compatibility]] and download the correct version of HuskSync for your server. This will walk you through installing HuskSync on your network of Spigot or Fabric servers. Please check your server's [[Compatibility]] and download the correct version of HuskSync for your server.
## Requirements ## Requirements
> **Warning:** Mixing and matching Fabric/Spigot servers is not supported, and all servers must be running the same Minecraft version. HuskSync requires a Database server, a Redis server, and any number of compatible Minecraft servers:
> **Note:** Please also note some specific legacy Paper/Purpur versions are [not compatible](Compatibility) with HuskSync. * Any number of [compatible Fabric or Spigot/Paper-based](Compatibility) servers
* Each server must be running the same exact version of Minecraft
* A MySQL Database (v8.0+) * It is not possible to sync data between a mixture of Fabric and Spigot servers
* **OR** a MariaDB, PostrgreSQL or MongoDB database, which are also supported * HuskSync does not need to be installed on your Velocity, BungeeCord, or Waterfall proxy
* A Redis Database (v5.0+) &mdash; see [[FAQs]] for more details. * A [[Database]] server running MySQL v8.0+, MariaDB v5.0+, PostgreSQL or MongoDB
* Any number of Spigot servers, connected by a BungeeCord or Velocity-based proxy (see [[Compatibility]]) * A [[Redis]] server running Redis v5.0+
* **OR** a network of Fabric servers, connected by a Velocity-based proxy
## Setup Instructions ## Setup Instructions
Before you begin, switch off all servers on your network. It is recommended that you also take a backup.
### 1. Install the jar ### 1. Install the jar
- Place the plugin jar file in the `/plugins/` or `/mods/` directory of each Spigot/Fabric server respectively. - Place the plugin jar file in the `/plugins/` or `/mods/` directory of each Spigot/Fabric server respectively.
- You do not need to install HuskSync as a proxy plugin. - You do not need to install HuskSync as a proxy plugin.
@@ -23,10 +23,10 @@ This will walk you through installing HuskSync on your network of Spigot or Fabr
- Start, then stop every server to let HuskSync generate the [[config file]]. - Start, then stop every server to let HuskSync generate the [[config file]].
- HuskSync will throw an error in the console and disable itself as it is unable to connect to the database. You haven't set the credentials yet, so this is expected. - HuskSync will throw an error in the console and disable itself as it is unable to connect to the database. You haven't set the credentials yet, so this is expected.
### 3. Enter Mysql & Redis database credentials ### 3. Enter Database & Redis server credentials
- Navigate to the new config file on each server (`~/plugins/HuskSync/config.yml` on Spigot, `~/config/husksync/config.yml` on Fabric) - Navigate to the new config file on each server (`~/plugins/HuskSync/config.yml` on Spigot, `~/config/husksync/config.yml` on Fabric)
- Under `credentials` in the `database` section, enter the credentials of your (MySQL/MariaDB/MongoDB/PostgreSQL) Database. You shouldn't touch the `connection_pool` properties. - Under `credentials` in the [`database`](Database) section, enter your database credentials. If you're using a Mongo database, [follow the instructions](database#mongodb-setup) here. You shouldn't need to modify the `connection_pool` properties.
- Under `credentials` in the `redis` section, enter the credentials of your Redis Database. If your Redis server doesn't have a password, leave the password blank as it is. - Under `credentials` in the [`redis`](Redis) section, enter the credentials of your Redis server. If your Redis server doesn't have a password, leave the password blank as it is.
- Unless you want to have multiple clusters of servers within your network, each with separate user data, you should not change the value of `cluster_id`. - Unless you want to have multiple clusters of servers within your network, each with separate user data, you should not change the value of `cluster_id`.
<details> <details>
@@ -45,15 +45,7 @@ This will walk you through installing HuskSync on your network of Spigot or Fabr
(The `port` setting in `credentials` is disregarded when using Atlas.) (The `port` setting in `credentials` is disregarded when using Atlas.)
</details> </details>
<details>
<summary>Pterodactyl self-hosts &mdash; Redis setup instructions</summary>
If you are hosting your Redis server on the same node as your servers, you need to use `172.18.0.1` as your host (or equivalent if you changed your network settings), and bind it in the Redis config `nano /etc/redis/redis.conf`.
You will also need to uncomment the `requirepass` directive and set a password to allow outside connections, or disable `protected-mode`. Once a password is set and Redis is restarted `systemctl restart redis`, you will also need to update the password in your pterodactyl `.env` (`nano /var/www/pterodactyl/.env`) and refresh the cache `cd /var/www/pterodactyl && php artisan config:clear`.
You may also need to allow connections from your firewall depending on your distribution.
</details>
### 4. Set server names in server.yml files ### 4. Set server names in server.yml files
- Navigate to the server name file on each server (`~/plugins/HuskSync/server.yml` on Spigot, `~/config/husksync/server.yml` on Fabric) - Navigate to the server name file on each server (`~/plugins/HuskSync/server.yml` on Spigot, `~/config/husksync/server.yml` on Fabric)

View File

@@ -1,4 +1,4 @@
This page contains a list of the features HuskSync is and isn't able to syncrhonise on your server. This page contains a list of the features HuskSync is and isn't able to synchronise on your server.
You can customise how much data HuskSync saves about a player by [turning each synchronization feature on or off](#toggling-sync-features). When a synchronization feature is turned off, HuskSync won't touch that part of a player's profile; in other words, the data they will inherit when changing servers will be read from their player data file on the local server. You can customise how much data HuskSync saves about a player by [turning each synchronization feature on or off](#toggling-sync-features). When a synchronization feature is turned off, HuskSync won't touch that part of a player's profile; in other words, the data they will inherit when changing servers will be read from their player data file on the local server.

View File

@@ -1,35 +1,35 @@
This page contains a number of common issues and how you can troubleshoot and resolve them. This page contains a number of common issues when using HuskSync and how you can troubleshoot and resolve them.
## Topics ## Topics
### Duplicate UUIDs in database ### Duplicate UUIDs in database
This is most frequently caused by running a cracked "offline mode" network of servers. We [don't provide support](https://william278.net/terms) for problems caused by cracked servers and the most advice we can offer you is: This is most frequently caused by running a cracked "offline mode" network of servers. We [don't provide support](https://william278.net/terms) for problems caused by cracked servers and the most advice we can offer you is:
- Ensure `bungee_online_mode` is set to the correct value in the `paper.yml` config file on each of your Bukkit servers - Ensure `bungee_online_mode` is set to the correct value in the `paper.yml` config file on each of your Bukkit servers
- Ensure your authenticator plugin is passing valid, unique IDs to each backend Spigot server. - Ensure your authenticator plugin is passing valid, unique IDs to each backend Spigot/Fabric server.
### Cannot set data with newer Minecraft version than the server ### Cannot set data with newer Minecraft version than the server
This is caused when you attempt to downgrade user data from a newer version of Minecraft to an older one, or when your Spigot servers are running mismatched Minecraft versions. This is caused when you attempt to downgrade user data from a newer version of Minecraft to an older one, or when your Spigot/Fabric servers are running mismatched Minecraft versions.
HuskSync will identify this and safely prevent the synchronization from occuring. Your Spigot servers must be running the same version of both Minecraft and HuskSync. HuskSync will identify this and safely prevent the synchronization from occurring. Your Spigot/Fabric servers must be running the same version of both Minecraft and HuskSync.
### User data failing to synchronize ### User data failing to synchronize
This can occur due to misaligned timings between your Spigot servers and your Redis server. HuskSync has a built in way of tuning this. Try continously increasing the `network_latency_milliseconds` option in your config to a higher value. This can occur due to misaligned timings between your Spigot/Fabric servers and your Redis server. HuskSync has a built in way of tuning this. Try continously increasing the `network_latency_milliseconds` option in your config to a higher value.
### Synchronization issues with Keep Inventory enabled ### Synchronization issues with Keep Inventory enabled
On servers that use Keep Inventory move (where players keep their items when they die), you can run into synchronization issues. See [[Keep Inventory]] for details on why this happens and how to resolve it. On servers that use [[Keep Inventory]] (where players keep their items when they die), you can run into synchronization issues. See [[Keep Inventory]] for details on why this happens and how to resolve it.
### Exceptions when compressing data via Snappy (lightweight Linux distros) ### Exceptions when compressing data via Snappy (lightweight Linux distros)
Some lightweight Linux distros such as Alpine Linux (used on Pterodactyl) might not have the dependencies needed for the [Snappy](https://github.com/xerial/snappy-java) compressor. It's possible to disable data compression by changing `compress_data` to false in your config. Note that after changing this setting you will need to reset your database. Alternatively, find the right libraries for your distro! Some lightweight Linux distros such as Alpine Linux (used on Pterodactyl) might not have the dependencies needed for the [Snappy](https://github.com/xerial/snappy-java) compressor. It's possible to disable data compression by changing `compress_data` to false in your config. Note that after changing this setting you will need to reset your database. Alternatively, find the right libraries for your distro!
### Redis connection problems on Pterodactyl ### Redis connection problems on Pterodactyl / Pelican
If you are hosting your Redis server on the same node as your servers, you need to use 172.18.0.1 (or equivelant if you changed your network settings) as your host. You may also need to [allow connections from your firewall](https://pterodactyl.io/community/games/minecraft.html#firewalls) depending on your distribution. If you are hosting your [[Redis]] server on the same node as your servers, you need to use 172.18.0.1 (or equivelant if you changed your network settings) as your host. You may also need to [allow connections from your firewall](https://pterodactyl.io/community/games/minecraft.html#firewalls) depending on your distribution. See our tips for running [Redis on a Pterodactyl or Pelican panel](Redis#pterodactyl--pelican-panel-hosts)
### MySQL connection problems on Pterodactyl ### Database connection problems on Pterodactyl / Pelican
If you have more than one MySQL server connected to your panel, you may need to set `useSSL=true` in the parameters. If you have more than one [[Database]] server connected to your panel, you may need to set `useSSL=true` in the parameters.
### Issues with player data going out of sync during a server restart ### Issues with player data going out of sync during a server restart
This can happen due to the way in which your server restarts. If your server uses either: This can happen due to the way in which your server restarts. If your server uses either:
* `/restart` (this is a weird Spigot command that uses legacy bash scripting) * `/restart` (this is a weird Spigot/Fabric command that uses legacy bash scripting)
* ANY restart plugin, e.g. UltimateAutoRestart (these basically execute an API-called restart using the same legacy bash logic as per above) * ANY restart plugin, e.g. UltimateAutoRestart (these basically execute an API-called restart using the same legacy bash logic as per above)
These are **not compatible** with HuskSync in most cases due to the way in which this causes restart servers causing shutdown logic to process in strange and unpredictable orders, usually before HuskSync has had a chance to scan and perform its shutdown logic. To safely restart your server, please use: These are **not compatible** with HuskSync in most cases due to the way in which this causes restart servers causing shutdown logic to process in strange and unpredictable orders, usually before HuskSync has had a chance to scan and perform its shutdown logic. To safely restart your server, please use:

View File

@@ -1,22 +1,28 @@
## Guides ## Setup
* 📚 [[Setup]] * 📚 [[Setup]]
* 💾 [[Database]]
* ✨ [[Redis]]
* ⚠️ [[Compatibility]] * ⚠️ [[Compatibility]]
* 📄 [[Config File]] * 📄 [[Config File]]
* 🔗 [[Troubleshooting]] * 🔗 [[Troubleshooting]]
* ↪️ [[Data Rotation]]
* ↗️ [[Legacy Migration]]
* ✨ [[MPDB Migration]]
* 🎏 [[Translations]]
* ❓ [[FAQs]]
## Documentation ## Features
* 🖥️ [[Commands]] * 🖥️ [[Commands]]
* ✅ [[Sync Features]] * ✅ [[Sync Features]]
* ⚙️ [[Sync Modes]] * ⚙️ [[Sync Modes]]
* 🟩 [[Plan Hook]] * ↪️ [[Data Rotation]]
* ❓ [[FAQs]]
## Guides
* ↗️ [[Legacy Migration]]
* ✨ [[MPDB Migration]]
* ☂️ [[Dumping UserData]] * ☂️ [[Dumping UserData]]
* 🟩 [[Plan Hook]]
* 📋 [[Event Priorities]] * 📋 [[Event Priorities]]
* ⚔️ [[Keep Inventory]] * ⚔️ [[Keep Inventory]]
* 🎏 [[Translations]]
## Developers
* 📦 [[API]] v3 * 📦 [[API]] v3
* 📝 [[Data Snapshot API]] * 📝 [[Data Snapshot API]]
* 📝 [[Custom Data API]] * 📝 [[Custom Data API]]
@@ -29,4 +35,4 @@
* 🚰 [Spigot](https://www.spigotmc.org/resources/husksync.97144/) * 🚰 [Spigot](https://www.spigotmc.org/resources/husksync.97144/)
* 🛒 [Polymart](https://polymart.org/resource/husksync.1634) * 🛒 [Polymart](https://polymart.org/resource/husksync.1634)
* ⚒️ [BuiltByBit](https://craftaro.com/marketplace/product/husksync.758) * ⚒️ [BuiltByBit](https://craftaro.com/marketplace/product/husksync.758)
* 💬 [Discord Support](https://discord.gg/tVYhJfyDWG) * 💬 [Discord Support](https://discord.gg/tVYhJfyDWG)