From f7f1dc50ebede3cf561551e201fa7a7fee7b0b3a Mon Sep 17 00:00:00 2001 From: William Date: Sun, 24 Oct 2021 21:46:48 +0100 Subject: [PATCH] 1.0 release progress --- README.md | 87 ++++- build.gradle | 2 +- bukkit/build.gradle | 1 + .../william278/husksync/HuskSyncBukkit.java | 79 ++++- .../husksync/bukkit/PlayerSetter.java | 102 +++--- .../husksync/bukkit/data/BukkitDataCache.java | 56 +++- .../bukkit/{ => data}/DataSerializer.java | 11 +- .../husksync/bukkit/data/DataViewer.java | 115 +++++++ .../bukkit/listener/BukkitRedisListener.java | 118 ++++++- .../bukkit/listener/EventListener.java | 124 +++++++- .../bukkit/migrator/MPDBDeserializer.java | 81 +++++ .../husksync/HuskSyncBungeeCord.java | 55 +++- .../bungeecord/command/HuskSyncCommand.java | 298 +++++++++++++++++- .../bungeecord/config/ConfigLoader.java | 13 +- .../bungeecord/config/ConfigManager.java | 29 +- .../husksync/bungeecord/data/DataManager.java | 123 +++++--- .../bungeecord/data/sql/Database.java | 10 +- .../husksync/bungeecord/data/sql/MySQL.java | 24 +- .../husksync/bungeecord/data/sql/SQLite.java | 32 +- .../listener/BungeeEventListener.java | 4 +- .../listener/BungeeRedisListener.java | 101 +++++- .../bungeecord/migrator/MPDBMigrator.java | 278 ++++++++++++++++ .../src/main/resources/bungee-config.yml | 2 +- .../william278/husksync/MessageManager.java | 28 ++ .../william278/husksync/MessageStrings.java | 16 - .../me/william278/husksync/PlayerData.java | 122 +++++-- .../java/me/william278/husksync/Settings.java | 3 + .../husksync/migrator/MPDBPlayerData.java | 35 ++ .../husksync/redis/RedisListener.java | 7 + .../husksync/redis/RedisMessage.java | 37 ++- common/src/main/resources/bungee.yml | 2 +- common/src/main/resources/languages/en-gb.yml | 13 + common/src/main/resources/plugin.yml | 5 +- images/banner-graphic.png | Bin 0 -> 68460 bytes images/flow-chart.png | Bin 186874 -> 163203 bytes 35 files changed, 1774 insertions(+), 239 deletions(-) rename bukkit/src/main/java/me/william278/husksync/bukkit/{ => data}/DataSerializer.java (97%) create mode 100644 bukkit/src/main/java/me/william278/husksync/bukkit/data/DataViewer.java create mode 100644 bukkit/src/main/java/me/william278/husksync/bukkit/migrator/MPDBDeserializer.java create mode 100644 bungeecord/src/main/java/me/william278/husksync/bungeecord/migrator/MPDBMigrator.java create mode 100644 common/src/main/java/me/william278/husksync/MessageManager.java delete mode 100644 common/src/main/java/me/william278/husksync/MessageStrings.java create mode 100644 common/src/main/java/me/william278/husksync/migrator/MPDBPlayerData.java create mode 100644 common/src/main/resources/languages/en-gb.yml create mode 100644 images/banner-graphic.png diff --git a/README.md b/README.md index 9d2e3961..d0cbbc42 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,89 @@ +[![HuskSync Banner](images/banner-graphic.png)](https://github.com/WiIIiam278/HuskSync) # HuskSync -**HuskSync** is a robust solution for synchronising player data (inventories, health, hunger & status effects) between servers. It was designed as a much faster alternative to MySQLPlayerDataBridge, +[![Discord](https://img.shields.io/discord/818135932103557162?color=7289da&logo=discord)](https://discord.gg/tVYhJfyDWG) -## Installation -Install HuskSync in the `/plugins/` folder of your Spigot (and derivatives) servers and Proxy (BungeeCord and derivatives) server. -Start your servers, then stop them again to allow the configuration files to generate. +**HuskSync** is a modern, cross-server player data synchronisation system that allows player data (inventories, health, hunger & status effects) to be synchronised across servers through the use of **Redis**. -Navigate to the generated config.yml files on your Spigot server and Proxy (located in `/plugins/HuskSync/`) and fill in the credentials of your redis server. On the Proxy server, you can additionally configure a MySQL database to save player data in, as by default the plugin will create a SQLite database for this. +## Disclaimer +This source code is provided as reference to licensed individuals that have purchased the HuskSync plugin once from any of the official sources it is provided. The availability of this code does not grant you the rights to re-distribute, compile or share this source code outside this intended purpose. -If you have multiple proxy servers (i.e. via RedisBungee), you need to install the plugin on all of them and make use of the MySQL option and ensure the proxies are using the same database. +Are you a developer? [Read below for information about code bounty licensing](#Contributing). + +## Setup +### Requirements +* A BungeeCord-based proxy server +* A Spigot-based game server +* A Redis server + +### Installation +1. Install HuskSync in the `/plugins/` folder of both your Spigot and Proxy servers. +2. Start your servers, then stop them again to allow the configuration files to generate. +3. Navigate to the generated `config.yml` files on your Spigot server and Proxy (located in `/plugins/HuskSync/`) and fill in the credentials of your redis server. + 1. On the Proxy server, you can additionally configure a MySQL database to save player data in, as by default the plugin will create a SQLite database. + 2. If you have multiple proxy servers (i.e. via RedisBungee), you need to install the plugin on all of them and make use of the MySQL option and ensure the proxies are using the same database. + 3. By default, everything except player locations are synchronised. If you would like to change what gets synchronised, you can do this by editing the `config.yml` files of each Spigot server. +4. Once you have finished setting everything up, make sure to restart all of your servers and proxy server. Then, log in and data should be synchronised! + +### Migration from MySQLPlayerDataBridge +HuskSync supports the migration of player data from [MySQLPlayerDataBridge](https://www.spigotmc.org/resources/mysql-player-data-bridge.8117/). Please note that HuskSync is not compatible with MySQLPlayerInventoryBridge, as that has a different system for data handling. + +To migrate from MySQLPLayerDataBridge, you need a Proxy server with HuskSync installed and one Spigot server with both HuskSync and MySQLPlayerDataBridge installed. To migrate: +1. Make sure HuskSync is set up correctly on the Proxy and Spigot server, making sure that the two are able to communicate with Redis (it will display a handshake confirmation message in both consoles when communications have been established) +2. Make sure your database is configured correctly on your Proxy server. For example, if you would like to change from SQLite to MySQL, you should do this now because the data from MySQLPlayerDataBridge will be moved into it. +3. Make sure no players are online, then in the Proxy server's console run `husksync migrate` +4. Follow the steps in the Migration wizard to ensure the connection credentials and details of the database containing your MySQLPlayerDataBridge are correct, changing settings with `husksync migrate setting ` as necessary. +5. Run `husksync migrate start` in the Proxy server's console to start the migration. This could take some time, depending on the amount of data that needs migrating and the speed of your database/server. When the migration is complete, it will display a "Migration complete" message. ## How it works ![Flow chart showing different processes of how the plugin works](images/flow-chart.png) -HuskSync synchronises player data between servers using Redis to transfer cached data, loaded from a central database as necessary. +HuskSync saves a player's data when they log out to a cache on your proxy server, and redistributes that data to players when they join another HuskSync-enabled server. Player data in the cache is then saved to a database (be it SQLite or MySQL) and this is loaded from when a player joins your network. + +To facilitate the transfer of data between servers, HuskSync serializes player data and then makes use of Redis to communicate between the Proxy and Spigot servers. + +### What is synchronised +Everything except player locations are synchronised by default. You can enable or disable what data is loaded on a server by modifying these values in the `/plugins/HuskSync/config.yml` file on each Spigot server. +* Player inventory + * Player armour and off-hand + * Player currently selected hotbar slot +* Player ender chest +* Player experience points & levels +* Player health + * Player max health + * Player health scale +* Player hunger + * Player saturation + * Player exhaustion +* Player game mode +* Player advancements +* Player statistics (ESC → Statistics menu) +* Player location + * Player flight status + +### Commands +Commands are handled by the proxy server, rather than each spigot server. Some will only work on Spigot servers with HuskSync installed. Please remember that you will need a Proxy permission plugin (e.g. LuckPermsBungee) to set permissions for proxy commands. + +Command | Description | Permission +------- | ----------- | ---------- +`/husksync about` | View plugin information | N/A +`/husksync status` | View system status information | `husksync.command.admin` +`/husksync reload` | Reload config & message files | `husksync.command.admin` +`/husksync invsee` | View an offline player's inventory | `husksync.command.inventory` +`/husksync echest` | View an offline player's ender chest | `husksync.command.ender_chest` + +## Developers +### API +Coming soon! + +### Contributing +A code bounty program is in place for HuskSync, where developers making significant code contributions to HuskSync may be entitled to a discretionary license to use HuskSync in commercial contexts without having to purchase the resource, so please feel free to submit pull requests with improvements, fixes and features! + +### Building +To build HuskSync you will first need to download MySqlPlayerDataBridge and `mvn install:install-file` the jar file to your local maven repository. +``` +mvn install:install-file -Dfile=MysqlPlayerDataBridge-v3.36.3.jar -DgroupId=net.craftersland.data -DartifactId=bridge -Dversion=3.36.3 -Dpackaging=jar +``` -## Building -To build HuskSync, run the following in the root of the repository: +Then, to build the plugin, run the following in the root of the repository: ``` ./gradlew clean build ``` \ No newline at end of file diff --git a/build.gradle b/build.gradle index 605e4b97..ad9d2be4 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ plugins { allprojects { group 'me.William278' - version '0.1' + version '1.0-dev' compileJava { options.encoding = 'UTF-8' } tasks.withType(JavaCompile) { options.encoding = 'UTF-8' } diff --git a/bukkit/build.gradle b/bukkit/build.gradle index 592d1ad6..6df6f69c 100644 --- a/bukkit/build.gradle +++ b/bukkit/build.gradle @@ -6,6 +6,7 @@ dependencies { implementation 'redis.clients:jedis:3.7.0' implementation 'de.themoep:minedown:1.7.1-SNAPSHOT' + compileOnly 'net.craftersland.data:bridge:3.36.3' compileOnly 'org.spigotmc:spigot-api:1.16.5-R0.1-SNAPSHOT' } diff --git a/bukkit/src/main/java/me/william278/husksync/HuskSyncBukkit.java b/bukkit/src/main/java/me/william278/husksync/HuskSyncBukkit.java index 307ec5a2..54c4e825 100644 --- a/bukkit/src/main/java/me/william278/husksync/HuskSyncBukkit.java +++ b/bukkit/src/main/java/me/william278/husksync/HuskSyncBukkit.java @@ -4,17 +4,76 @@ import me.william278.husksync.bukkit.config.ConfigLoader; import me.william278.husksync.bukkit.data.BukkitDataCache; import me.william278.husksync.bukkit.listener.BukkitRedisListener; import me.william278.husksync.bukkit.listener.EventListener; +import me.william278.husksync.bukkit.migrator.MPDBDeserializer; +import me.william278.husksync.redis.RedisMessage; +import org.bukkit.Bukkit; +import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.scheduler.BukkitTask; + +import java.io.IOException; +import java.util.UUID; +import java.util.logging.Level; public final class HuskSyncBukkit extends JavaPlugin { private static HuskSyncBukkit instance; + public static HuskSyncBukkit getInstance() { return instance; } public static BukkitDataCache bukkitCache; + // Used for establishing a handshake with redis + public static UUID serverUUID; + + // Has a handshake been established with the Bungee? + public static boolean handshakeCompleted = false; + + // THe handshake task to execute + private static BukkitTask handshakeTask; + + // Whether MySqlPlayerDataBridge is installed + public static boolean isMySqlPlayerDataBridgeInstalled; + + // Establish the handshake with the proxy + public static void establishRedisHandshake() { + serverUUID = UUID.randomUUID(); + getInstance().getLogger().log(Level.INFO, "Executing handshake with Proxy server..."); + final int[] attempts = {0}; // How many attempts to establish communication have been made + handshakeTask = Bukkit.getScheduler().runTaskTimerAsynchronously(getInstance(), () -> { + if (handshakeCompleted) { + handshakeTask.cancel(); + return; + } + try { + new RedisMessage(RedisMessage.MessageType.CONNECTION_HANDSHAKE, + new RedisMessage.MessageTarget(Settings.ServerType.BUNGEECORD, null), + serverUUID.toString(), + Boolean.toString(isMySqlPlayerDataBridgeInstalled), + Bukkit.getName()).send(); + attempts[0]++; + if (attempts[0] == 10) { + getInstance().getLogger().log(Level.WARNING, "Failed to complete handshake with the Proxy server; Please make sure your Proxy server is online and has HuskSync installed in its' /plugins/ folder. HuskSync will continue to try and establish a connection."); + } + } catch (IOException e) { + getInstance().getLogger().log(Level.SEVERE, "Failed to serialize Redis message for handshake establishment", e); + } + }, 0, 60); + } + + private void closeRedisHandshake() { + try { + new RedisMessage(RedisMessage.MessageType.TERMINATE_HANDSHAKE, + new RedisMessage.MessageTarget(Settings.ServerType.BUNGEECORD, null), + serverUUID.toString(), + Bukkit.getName()).send(); + } catch (IOException e) { + getInstance().getLogger().log(Level.SEVERE, "Failed to serialize Redis message for handshake termination", e); + } + } + @Override public void onLoad() { instance = this; @@ -31,6 +90,14 @@ public final class HuskSyncBukkit extends JavaPlugin { reloadConfig(); ConfigLoader.loadSettings(getConfig()); + // Check if MySqlPlayerDataBridge is installed + Plugin mySqlPlayerDataBridge = Bukkit.getPluginManager().getPlugin("MySqlPlayerDataBridge"); + if (mySqlPlayerDataBridge != null) { + isMySqlPlayerDataBridgeInstalled = mySqlPlayerDataBridge.isEnabled(); + MPDBDeserializer.setMySqlPlayerDataBridge(); + getLogger().info("MySQLPlayerDataBridge detected! Disabled data synchronisation to prevent data loss. To perform a migration, run \"husksync migrate\" in your Proxy (Bungeecord, Waterfall, etc) server console."); + } + // Initialize last data update UUID cache bukkitCache = new BukkitDataCache(); @@ -38,7 +105,14 @@ public final class HuskSyncBukkit extends JavaPlugin { getServer().getPluginManager().registerEvents(new EventListener(), this); // Initialize the redis listener - new BukkitRedisListener(); + if (!new BukkitRedisListener().isActiveAndEnabled) { + getPluginLoader().disablePlugin(this); + getLogger().severe("Failed to initialize Redis; disabling HuskSync (" + getServer().getName() + ") v" + getDescription().getVersion()); + return; + } + + // Ensure redis is connected; establish a handshake + establishRedisHandshake(); // Log to console getLogger().info("Enabled HuskSync (" + getServer().getName() + ") v" + getDescription().getVersion()); @@ -46,6 +120,9 @@ public final class HuskSyncBukkit extends JavaPlugin { @Override public void onDisable() { + // Send termination handshake to proxy + closeRedisHandshake(); + // Plugin shutdown logic getLogger().info("Disabled HuskSync (" + getServer().getName() + ") v" + getDescription().getVersion()); } diff --git a/bukkit/src/main/java/me/william278/husksync/bukkit/PlayerSetter.java b/bukkit/src/main/java/me/william278/husksync/bukkit/PlayerSetter.java index df0dee3d..0e768b1f 100644 --- a/bukkit/src/main/java/me/william278/husksync/bukkit/PlayerSetter.java +++ b/bukkit/src/main/java/me/william278/husksync/bukkit/PlayerSetter.java @@ -1,17 +1,17 @@ package me.william278.husksync.bukkit; -import de.themoep.minedown.MineDown; import me.william278.husksync.HuskSyncBukkit; -import me.william278.husksync.MessageStrings; import me.william278.husksync.PlayerData; import me.william278.husksync.Settings; -import net.md_5.bungee.api.ChatMessageType; +import me.william278.husksync.bukkit.data.DataSerializer; +import me.william278.husksync.redis.RedisMessage; import org.bukkit.*; import org.bukkit.advancement.Advancement; import org.bukkit.advancement.AdvancementProgress; import org.bukkit.attribute.Attribute; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; @@ -19,12 +19,19 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.Objects; +import java.util.UUID; import java.util.logging.Level; public class PlayerSetter { private static final HuskSyncBukkit plugin = HuskSyncBukkit.getInstance(); + public static void requestPlayerData(UUID playerUUID) throws IOException { + new RedisMessage(RedisMessage.MessageType.PLAYER_DATA_REQUEST, + new RedisMessage.MessageTarget(Settings.ServerType.BUNGEECORD, null), + playerUUID.toString()).send(); + } + /** * Set a player from their PlayerData, based on settings * @@ -34,15 +41,23 @@ public class PlayerSetter { public static void setPlayerFrom(Player player, PlayerData data) { // If the data is flagged as being default data, skip setting if (data.isUseDefaultData()) { + HuskSyncBukkit.bukkitCache.removeAwaitingDataFetch(player.getUniqueId()); return; } + // Clear player + player.getInventory().clear(); + player.getEnderChest().clear(); + player.setExp(0); + player.setLevel(0); + + HuskSyncBukkit.bukkitCache.removeAwaitingDataFetch(player.getUniqueId()); + // Set the player's data from the PlayerData Bukkit.getScheduler().runTask(plugin, () -> { try { if (Settings.syncAdvancements) { - // Sync advancements first so that any rewards will be overridden - setPlayerAdvancements(player, DataSerializer.deserializeAdvancementData(data.getSerializedAdvancements())); + setPlayerAdvancements(player, DataSerializer.deserializeAdvancementData(data.getSerializedAdvancements()), data); } if (Settings.syncInventories) { setPlayerInventory(player, DataSerializer.itemStackArrayFromBase64(data.getSerializedInventory())); @@ -52,6 +67,7 @@ public class PlayerSetter { setPlayerEnderChest(player, DataSerializer.itemStackArrayFromBase64(data.getSerializedEnderChest())); } if (Settings.syncHealth) { + player.setHealthScale(data.getHealthScale() > 0 ? data.getHealthScale() : 0D); Objects.requireNonNull(player.getAttribute(Attribute.GENERIC_MAX_HEALTH)).setBaseValue(data.getMaxHealth()); player.setHealth(data.getHealth()); } @@ -61,9 +77,8 @@ public class PlayerSetter { player.setExhaustion(data.getSaturationExhaustion()); } if (Settings.syncExperience) { - player.setTotalExperience(data.getTotalExperience()); - player.setLevel(data.getExpLevel()); - player.setExp(data.getExpProgress()); + // This is also handled when syncing advancements to ensure its correct + setPlayerExperience(player, data); } if (Settings.syncPotionEffects) { setPlayerPotionEffects(player, DataSerializer.potionEffectArrayFromBase64(data.getSerializedEffectData())); @@ -78,9 +93,6 @@ public class PlayerSetter { player.setFlying(player.getAllowFlight() && data.isFlying()); setPlayerLocation(player, DataSerializer.deserializePlayerLocationData(data.getSerializedLocation())); } - - // Send action bar synchronisation message - player.spigot().sendMessage(ChatMessageType.ACTION_BAR, new MineDown(MessageStrings.SYNCHRONISATION_COMPLETE).toComponent()); } catch (IOException e) { plugin.getLogger().log(Level.SEVERE, "Failed to deserialize PlayerData", e); } @@ -94,14 +106,7 @@ public class PlayerSetter { * @param items The array of {@link ItemStack}s to set */ private static void setPlayerEnderChest(Player player, ItemStack[] items) { - player.getEnderChest().clear(); - int index = 0; - for (ItemStack item : items) { - if (item != null) { - player.getEnderChest().setItem(index, item); - } - index++; - } + setInventory(player.getEnderChest(), items); } /** @@ -111,11 +116,21 @@ public class PlayerSetter { * @param items The array of {@link ItemStack}s to set */ private static void setPlayerInventory(Player player, ItemStack[] items) { - player.getInventory().clear(); + setInventory(player.getInventory(), items); + } + + /** + * Sets an inventory's contents from an array of {@link ItemStack}s + * + * @param inventory The inventory to set + * @param items The {@link ItemStack}s to fill it with + */ + public static void setInventory(Inventory inventory, ItemStack[] items) { + inventory.clear(); int index = 0; for (ItemStack item : items) { if (item != null) { - player.getInventory().setItem(index, item); + inventory.setItem(index, item); } index++; } @@ -142,7 +157,7 @@ public class PlayerSetter { * @param player The player to set the advancements of * @param advancementData The ArrayList of {@link DataSerializer.AdvancementRecord}s to set */ - private static void setPlayerAdvancements(Player player, ArrayList advancementData) { + private static void setPlayerAdvancements(Player player, ArrayList advancementData, PlayerData data) { // Temporarily disable advancement announcing if needed boolean announceAdvancementUpdate = false; if (Boolean.TRUE.equals(player.getWorld().getGameRuleValue(GameRule.ANNOUNCE_ADVANCEMENTS))) { @@ -153,36 +168,39 @@ public class PlayerSetter { // Run async because advancement loading is very slow Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + // Apply the advancements to the player Iterator serverAdvancements = Bukkit.getServer().advancementIterator(); - while (serverAdvancements.hasNext()) { + while (serverAdvancements.hasNext()) { // Iterate through all advancements + boolean correctExperienceCheck = false; // Determines whether the experience might have changed warranting an update Advancement advancement = serverAdvancements.next(); AdvancementProgress playerProgress = player.getAdvancementProgress(advancement); - boolean hasAdvancement = false; for (DataSerializer.AdvancementRecord record : advancementData) { + // If the advancement is one on the data if (record.advancementKey().equals(advancement.getKey().getNamespace() + ":" + advancement.getKey().getKey())) { - hasAdvancement = true; - // Save the experience before granting the advancement - final int expLevel = player.getLevel(); - final float expProgress = player.getExp(); - - // Grant advancement criteria if the player does not have it + // Award all criteria that the player does not have that they do on the cache + ArrayList currentlyAwardedCriteria = new ArrayList<>(playerProgress.getAwardedCriteria()); for (String awardCriteria : record.awardedAdvancementCriteria()) { if (!playerProgress.getAwardedCriteria().contains(awardCriteria)) { Bukkit.getScheduler().runTask(plugin, () -> player.getAdvancementProgress(advancement).awardCriteria(awardCriteria)); + correctExperienceCheck = true; } + currentlyAwardedCriteria.remove(awardCriteria); } - // Set experience back to before granting advancement; nullify exp gained from it - player.setLevel(expLevel); - player.setExp(expProgress); + // Revoke all criteria that the player does have but should not + for (String awardCriteria : currentlyAwardedCriteria) { + Bukkit.getScheduler().runTask(plugin, () -> player.getAdvancementProgress(advancement).revokeCriteria(awardCriteria)); + } break; } } - if (!hasAdvancement) { - for (String awardCriteria : playerProgress.getAwardedCriteria()) { - Bukkit.getScheduler().runTask(plugin, () -> player.getAdvancementProgress(advancement).revokeCriteria(awardCriteria)); + + // Update the player's experience in case the advancement changed that + if (correctExperienceCheck) { + if (Settings.syncExperience) { + setPlayerExperience(player, data); } } } @@ -230,6 +248,18 @@ public class PlayerSetter { } } + /** + * Set a player's exp level, exp points & score + * + * @param player The {@link Player} to set + * @param data The {@link PlayerData} to set them + */ + private static void setPlayerExperience(Player player, PlayerData data) { + player.setTotalExperience(data.getTotalExperience()); + player.setLevel(data.getExpLevel()); + player.setExp(data.getExpProgress()); + } + /** * Set a player's location from {@link DataSerializer.PlayerLocation} data * diff --git a/bukkit/src/main/java/me/william278/husksync/bukkit/data/BukkitDataCache.java b/bukkit/src/main/java/me/william278/husksync/bukkit/data/BukkitDataCache.java index 82374d00..441e31e2 100644 --- a/bukkit/src/main/java/me/william278/husksync/bukkit/data/BukkitDataCache.java +++ b/bukkit/src/main/java/me/william278/husksync/bukkit/data/BukkitDataCache.java @@ -1,5 +1,6 @@ package me.william278.husksync.bukkit.data; +import java.util.HashMap; import java.util.HashSet; import java.util.UUID; @@ -10,10 +11,6 @@ public class BukkitDataCache { */ private static HashSet requestOnJoin; - public BukkitDataCache() { - requestOnJoin = new HashSet<>(); - } - public boolean isPlayerRequestingOnJoin(UUID uuid) { return requestOnJoin.contains(uuid); } @@ -25,4 +22,53 @@ public class BukkitDataCache { public void removeRequestOnJoin(UUID uuid) { requestOnJoin.remove(uuid); } -} + + /** + * Map of Player UUIDs whose data has not been set yet + */ + private static HashSet awaitingDataFetch; + + public boolean isAwaitingDataFetch(UUID uuid) { + return awaitingDataFetch.contains(uuid); + } + + public void setAwaitingDataFetch(UUID uuid) { + awaitingDataFetch.add(uuid); + } + + public void removeAwaitingDataFetch(UUID uuid) { + awaitingDataFetch.remove(uuid); + } + + public HashSet getAwaitingDataFetch() { + return awaitingDataFetch; + } + + /** + * Map of data being viewed by players + */ + private static HashMap viewingPlayerData; + + public void setViewing(UUID uuid, DataViewer.DataView dataView) { + viewingPlayerData.put(uuid, dataView); + } + + public void removeViewing(UUID uuid) { + viewingPlayerData.remove(uuid); + } + + public boolean isViewing(UUID uuid) { + return viewingPlayerData.containsKey(uuid); + } + + public DataViewer.DataView getViewing(UUID uuid) { + return viewingPlayerData.get(uuid); + } + + // Cache object + public BukkitDataCache() { + requestOnJoin = new HashSet<>(); + viewingPlayerData = new HashMap<>(); + awaitingDataFetch = new HashSet<>(); + } +} \ No newline at end of file diff --git a/bukkit/src/main/java/me/william278/husksync/bukkit/DataSerializer.java b/bukkit/src/main/java/me/william278/husksync/bukkit/data/DataSerializer.java similarity index 97% rename from bukkit/src/main/java/me/william278/husksync/bukkit/DataSerializer.java rename to bukkit/src/main/java/me/william278/husksync/bukkit/data/DataSerializer.java index 6f46c82f..8db70550 100644 --- a/bukkit/src/main/java/me/william278/husksync/bukkit/DataSerializer.java +++ b/bukkit/src/main/java/me/william278/husksync/bukkit/data/DataSerializer.java @@ -1,4 +1,4 @@ -package me.william278.husksync.bukkit; +package me.william278.husksync.bukkit.data; import me.william278.husksync.redis.RedisMessage; import org.bukkit.*; @@ -6,6 +6,7 @@ import org.bukkit.advancement.Advancement; import org.bukkit.advancement.AdvancementProgress; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; import org.bukkit.util.io.BukkitObjectInputStream; @@ -33,19 +34,19 @@ public final class DataSerializer { /** * Converts the player inventory to a Base64 encoded string. * - * @param player whose inventory will be turned into an array of strings. + * @param inventory the inventory to convert to Base64. * @return string with serialized Inventory * @throws IllegalStateException in the event the item stacks cannot be saved */ - public static String getSerializedInventoryContents(Player player) throws IllegalStateException { + public static String getSerializedInventoryContents(Inventory inventory) throws IllegalStateException { // This contains contents, armor and offhand (contents are indexes 0 - 35, armor 36 - 39, offhand - 40) - return itemStackArrayToBase64(player.getInventory().getContents()); + return itemStackArrayToBase64(inventory.getContents()); } /** * Converts the player inventory to a Base64 encoded string. * - * @param player whose Ender Chest will be turned into an array of strings. + * @param player whose Ender Chest will be turned into Base64. * @return string with serialized Ender Chest * @throws IllegalStateException in the event the item stacks cannot be saved */ diff --git a/bukkit/src/main/java/me/william278/husksync/bukkit/data/DataViewer.java b/bukkit/src/main/java/me/william278/husksync/bukkit/data/DataViewer.java new file mode 100644 index 00000000..3758d529 --- /dev/null +++ b/bukkit/src/main/java/me/william278/husksync/bukkit/data/DataViewer.java @@ -0,0 +1,115 @@ +package me.william278.husksync.bukkit.data; + +import me.william278.husksync.HuskSyncBukkit; +import me.william278.husksync.PlayerData; +import me.william278.husksync.Settings; +import me.william278.husksync.bukkit.PlayerSetter; +import me.william278.husksync.redis.RedisMessage; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import java.io.IOException; + +/** + * Class used for managing viewing inventories using inventory-see command + */ +public class DataViewer { + + /** + * Show a viewer's data to a viewer + * + * @param viewer The viewing {@link Player} who will see the data + * @param data The {@link DataView} to show the viewer + * @throws IOException If an exception occurred deserializing item data + */ + public static void showData(Player viewer, DataView data) throws IOException { + // Show an inventory with the viewer's inventory and equipment + viewer.closeInventory(); + viewer.openInventory(createInventory(viewer, data)); + + // Set the viewer as viewing + HuskSyncBukkit.bukkitCache.setViewing(viewer.getUniqueId(), data); + } + + /** + * Handles what happens after a data viewer finishes viewing data + * + * @param viewer The viewing {@link Player} who was looking at data + * @param inventory The {@link Inventory} that was being viewed + * @throws IOException If an exception occurred serializing item data + */ + public static void stopShowing(Player viewer, Inventory inventory) throws IOException { + // Get the DataView the player was looking at + DataView dataView = HuskSyncBukkit.bukkitCache.getViewing(viewer.getUniqueId()); + + // Set the player as no longer viewing an inventory + HuskSyncBukkit.bukkitCache.removeViewing(viewer.getUniqueId()); + + // Get and update the PlayerData with the new item data + PlayerData playerData = dataView.playerData(); + String serializedItemData = DataSerializer.itemStackArrayToBase64(inventory.getContents()); + switch (dataView.inventoryType()) { + case INVENTORY -> playerData.setSerializedInventory(serializedItemData); + case ENDER_CHEST -> playerData.setSerializedEnderChest(serializedItemData); + } + + // Send a redis message with the updated data after the viewing + new RedisMessage(RedisMessage.MessageType.PLAYER_DATA_UPDATE, + new RedisMessage.MessageTarget(Settings.ServerType.BUNGEECORD, null), + RedisMessage.serialize(playerData)) + .send(); + } + + /** + * Creates the inventory object that the viewer will see + * + * @param viewer The {@link Player} who will view the data + * @param data The {@link DataView} data to view + * @return The {@link Inventory} that the viewer will see + * @throws IOException If an exception occurred deserializing item data + */ + private static Inventory createInventory(Player viewer, DataView data) throws IOException { + Inventory inventory = switch (data.inventoryType) { + case INVENTORY -> Bukkit.createInventory(viewer, 45, data.ownerName + "'s Inventory"); + case ENDER_CHEST -> Bukkit.createInventory(viewer, 27, data.ownerName + "'s Ender Chest"); + }; + PlayerSetter.setInventory(inventory, data.getDeserializedData()); + return inventory; + } + + /** + * Represents Player Data being viewed by a {@link Player} + */ + public record DataView(PlayerData playerData, String ownerName, InventoryType inventoryType) { + /** + * What kind of item data is being viewed + */ + public enum InventoryType { + /** + * A player's inventory + */ + INVENTORY, + + /** + * A player's ender chest + */ + ENDER_CHEST + } + + /** + * Gets the deserialized data currently being viewed + * + * @return The deserialized item data, as an {@link ItemStack[]} array + * @throws IOException If an exception occurred deserializing item data + */ + public ItemStack[] getDeserializedData() throws IOException { + return switch (inventoryType) { + case INVENTORY -> DataSerializer.itemStackArrayFromBase64(playerData.getSerializedInventory()); + case ENDER_CHEST -> DataSerializer.itemStackArrayFromBase64(playerData.getSerializedEnderChest()); + }; + } + } + +} diff --git a/bukkit/src/main/java/me/william278/husksync/bukkit/listener/BukkitRedisListener.java b/bukkit/src/main/java/me/william278/husksync/bukkit/listener/BukkitRedisListener.java index 2d4ef0c3..01507e6f 100644 --- a/bukkit/src/main/java/me/william278/husksync/bukkit/listener/BukkitRedisListener.java +++ b/bukkit/src/main/java/me/william278/husksync/bukkit/listener/BukkitRedisListener.java @@ -1,12 +1,16 @@ package me.william278.husksync.bukkit.listener; import de.themoep.minedown.MineDown; -import me.william278.husksync.PlayerData; import me.william278.husksync.HuskSyncBukkit; +import me.william278.husksync.MessageManager; +import me.william278.husksync.PlayerData; +import me.william278.husksync.Settings; +import me.william278.husksync.bukkit.config.ConfigLoader; +import me.william278.husksync.bukkit.data.DataViewer; import me.william278.husksync.bukkit.PlayerSetter; +import me.william278.husksync.bukkit.migrator.MPDBDeserializer; +import me.william278.husksync.migrator.MPDBPlayerData; import me.william278.husksync.redis.RedisListener; -import me.william278.husksync.MessageStrings; -import me.william278.husksync.Settings; import me.william278.husksync.redis.RedisMessage; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -25,25 +29,74 @@ public class BukkitRedisListener extends RedisListener { } /** - * Handle an incoming {@link me.william278.husksync.redis.RedisMessage} + * Handle an incoming {@link RedisMessage} * - * @param message The {@link me.william278.husksync.redis.RedisMessage} to handle + * @param message The {@link RedisMessage} to handle */ @Override - public void handleMessage(me.william278.husksync.redis.RedisMessage message) { + public void handleMessage(RedisMessage message) { // Ignore messages for proxy servers if (!message.getMessageTarget().targetServerType().equals(Settings.ServerType.BUKKIT)) { return; } - // Handle the message for the player if (message.getMessageTarget().targetPlayerUUID() == null) { - if (message.getMessageType() == me.william278.husksync.redis.RedisMessage.MessageType.REQUEST_DATA_ON_JOIN) { - UUID playerUUID = UUID.fromString(message.getMessageDataElements()[1]); - switch (me.william278.husksync.redis.RedisMessage.RequestOnJoinUpdateType.valueOf(message.getMessageDataElements()[0])) { - case ADD_REQUESTER -> HuskSyncBukkit.bukkitCache.setRequestOnJoin(playerUUID); - case REMOVE_REQUESTER -> HuskSyncBukkit.bukkitCache.removeRequestOnJoin(playerUUID); + switch (message.getMessageType()) { + case REQUEST_DATA_ON_JOIN -> { + UUID playerUUID = UUID.fromString(message.getMessageDataElements()[1]); + switch (me.william278.husksync.redis.RedisMessage.RequestOnJoinUpdateType.valueOf(message.getMessageDataElements()[0])) { + case ADD_REQUESTER -> HuskSyncBukkit.bukkitCache.setRequestOnJoin(playerUUID); + case REMOVE_REQUESTER -> HuskSyncBukkit.bukkitCache.removeRequestOnJoin(playerUUID); + } + } + case CONNECTION_HANDSHAKE -> { + UUID serverUUID = UUID.fromString(message.getMessageDataElements()[0]); + String proxyBrand = message.getMessageDataElements()[1]; + if (serverUUID.equals(HuskSyncBukkit.serverUUID)) { + HuskSyncBukkit.handshakeCompleted = true; + log(Level.INFO, "Completed handshake with " + proxyBrand + " proxy (" + serverUUID + ")"); + + // If there are any players awaiting a data update, request it + for (UUID uuid : HuskSyncBukkit.bukkitCache.getAwaitingDataFetch()) { + try { + PlayerSetter.requestPlayerData(uuid); + } catch (IOException e) { + log(Level.SEVERE, "Failed to serialize handshake message data"); + } + } + } + } + case TERMINATE_HANDSHAKE -> { + UUID serverUUID = UUID.fromString(message.getMessageDataElements()[0]); + String proxyBrand = message.getMessageDataElements()[1]; + if (serverUUID.equals(HuskSyncBukkit.serverUUID)) { + HuskSyncBukkit.handshakeCompleted = false; + log(Level.WARNING, proxyBrand + " proxy has terminated communications; attempting to re-establish (" + serverUUID + ")"); + + // Attempt to re-establish communications via another handshake + Bukkit.getScheduler().runTaskLaterAsynchronously(plugin, HuskSyncBukkit::establishRedisHandshake, 20); + } + } + case DECODE_MPDB_DATA -> { + UUID serverUUID = UUID.fromString(message.getMessageDataElements()[0]); + String encodedData = message.getMessageDataElements()[1]; + if (serverUUID.equals(HuskSyncBukkit.serverUUID)) { + try { + MPDBPlayerData data = (MPDBPlayerData) RedisMessage.deserialize(encodedData); + new RedisMessage(RedisMessage.MessageType.DECODED_MPDB_DATA_SET, + new RedisMessage.MessageTarget(Settings.ServerType.BUNGEECORD, null), + RedisMessage.serialize(MPDBDeserializer.convertMPDBData(data)), + data.playerName) + .send(); + } catch (IOException | ClassNotFoundException e) { + log(Level.SEVERE, "Failed to serialize encoded MPDB data"); + } + } + } + case RELOAD_CONFIG -> { + plugin.reloadConfig(); + ConfigLoader.loadSettings(plugin.getConfig()); } } } else { @@ -51,6 +104,7 @@ public class BukkitRedisListener extends RedisListener { if (player.getUniqueId().equals(message.getMessageTarget().targetPlayerUUID())) { switch (message.getMessageType()) { case PLAYER_DATA_SET -> { + if (HuskSyncBukkit.isMySqlPlayerDataBridgeInstalled) return; try { // Deserialize the received PlayerData PlayerData data = (PlayerData) RedisMessage.deserialize(message.getMessageData()); @@ -58,7 +112,7 @@ public class BukkitRedisListener extends RedisListener { // Set the player's data PlayerSetter.setPlayerFrom(player, data); } catch (IOException | ClassNotFoundException e) { - log(Level.SEVERE, "Failed to deserialize PlayerData when handling a reply from the proxy with PlayerData"); + log(Level.SEVERE, "Failed to deserialize PlayerData when handling data from the proxy"); e.printStackTrace(); } } @@ -66,7 +120,7 @@ public class BukkitRedisListener extends RedisListener { String proxyBrand = message.getMessageDataElements()[0]; String proxyVersion = message.getMessageDataElements()[1]; assert plugin.getDescription().getDescription() != null; - player.spigot().sendMessage(new MineDown(MessageStrings.PLUGIN_INFORMATION.toString() + player.spigot().sendMessage(new MineDown(MessageManager.PLUGIN_INFORMATION.toString() .replaceAll("%plugin_description%", plugin.getDescription().getDescription()) .replaceAll("%proxy_brand%", proxyBrand) .replaceAll("%proxy_version%", proxyVersion) @@ -74,6 +128,42 @@ public class BukkitRedisListener extends RedisListener { .replaceAll("%bukkit_version%", plugin.getDescription().getVersion())) .toComponent()); } + case OPEN_INVENTORY -> { + // Get the name of the inventory owner + String inventoryOwnerName = message.getMessageDataElements()[0]; + + // Synchronously do inventory setting, etc + Bukkit.getScheduler().runTask(plugin, () -> { + try { + // Get that player's data + PlayerData data = (PlayerData) RedisMessage.deserialize(message.getMessageDataElements()[1]); + + // Show the data to the player + DataViewer.showData(player, new DataViewer.DataView(data, inventoryOwnerName, DataViewer.DataView.InventoryType.INVENTORY)); + } catch (IOException | ClassNotFoundException e) { + log(Level.SEVERE, "Failed to deserialize PlayerData when handling inventory-see data from the proxy"); + e.printStackTrace(); + } + }); + } + case OPEN_ENDER_CHEST -> { + // Get the name of the inventory owner + String enderChestOwnerName = message.getMessageDataElements()[0]; + + // Synchronously do inventory setting, etc + Bukkit.getScheduler().runTask(plugin, () -> { + try { + // Get that player's data + PlayerData data = (PlayerData) RedisMessage.deserialize(message.getMessageDataElements()[1]); + + // Show the data to the player + DataViewer.showData(player, new DataViewer.DataView(data, enderChestOwnerName, DataViewer.DataView.InventoryType.ENDER_CHEST)); + } catch (IOException | ClassNotFoundException e) { + log(Level.SEVERE, "Failed to deserialize PlayerData when handling ender chest-see data from the proxy"); + e.printStackTrace(); + } + }); + } } return; } diff --git a/bukkit/src/main/java/me/william278/husksync/bukkit/listener/EventListener.java b/bukkit/src/main/java/me/william278/husksync/bukkit/listener/EventListener.java index a387ea2e..345f25ae 100644 --- a/bukkit/src/main/java/me/william278/husksync/bukkit/listener/EventListener.java +++ b/bukkit/src/main/java/me/william278/husksync/bukkit/listener/EventListener.java @@ -3,14 +3,22 @@ package me.william278.husksync.bukkit.listener; import me.william278.husksync.HuskSyncBukkit; import me.william278.husksync.PlayerData; import me.william278.husksync.Settings; -import me.william278.husksync.bukkit.DataSerializer; +import me.william278.husksync.bukkit.data.DataSerializer; +import me.william278.husksync.bukkit.data.DataViewer; +import me.william278.husksync.bukkit.PlayerSetter; import me.william278.husksync.redis.RedisMessage; +import org.bukkit.Bukkit; import org.bukkit.attribute.Attribute; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.entity.EntityPickupItemEvent; +import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.event.inventory.InventoryOpenEvent; +import org.bukkit.event.player.*; import java.io.IOException; import java.util.Objects; @@ -28,11 +36,12 @@ public class EventListener implements Listener { * @throws IOException If the serialization fails */ private static String getNewSerializedPlayerData(Player player) throws IOException { - return me.william278.husksync.redis.RedisMessage.serialize(new PlayerData(player.getUniqueId(), - DataSerializer.getSerializedInventoryContents(player), + return RedisMessage.serialize(new PlayerData(player.getUniqueId(), + DataSerializer.getSerializedInventoryContents(player.getInventory()), DataSerializer.getSerializedEnderChestContents(player), player.getHealth(), Objects.requireNonNull(player.getAttribute(Attribute.GENERIC_MAX_HEALTH)).getBaseValue(), + player.getHealthScale(), player.getFoodLevel(), player.getSaturation(), player.getExhaustion(), @@ -53,11 +62,19 @@ public class EventListener implements Listener { // When a player leaves a Bukkit server final Player player = event.getPlayer(); + // If the player was awaiting data fetch, remove them and prevent data from being overwritten + if (HuskSyncBukkit.bukkitCache.isAwaitingDataFetch(player.getUniqueId())) { + HuskSyncBukkit.bukkitCache.removeAwaitingDataFetch(player.getUniqueId()); + return; + } + + if (!plugin.isEnabled() || !HuskSyncBukkit.handshakeCompleted || HuskSyncBukkit.isMySqlPlayerDataBridgeInstalled) return; // If the plugin has not been initialized correctly + // Send a redis message with the player's last updated PlayerData version UUID and their new PlayerData try { final String serializedPlayerData = getNewSerializedPlayerData(player); - new me.william278.husksync.redis.RedisMessage(me.william278.husksync.redis.RedisMessage.MessageType.PLAYER_DATA_UPDATE, - new me.william278.husksync.redis.RedisMessage.MessageTarget(Settings.ServerType.BUNGEECORD, null), + new RedisMessage(RedisMessage.MessageType.PLAYER_DATA_UPDATE, + new RedisMessage.MessageTarget(Settings.ServerType.BUNGEECORD, null), serializedPlayerData).send(); } catch (IOException e) { plugin.getLogger().log(Level.SEVERE, "Failed to send a PlayerData update to the proxy", e); @@ -70,22 +87,101 @@ public class EventListener implements Listener { @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { + if (!plugin.isEnabled()) return; // If the plugin has not been initialized correctly + // When a player joins a Bukkit server final Player player = event.getPlayer(); - // Clear player inventory and ender chest - player.getInventory().clear(); - player.getEnderChest().clear(); + // Mark the player as awaiting data fetch + HuskSyncBukkit.bukkitCache.setAwaitingDataFetch(player.getUniqueId()); + + if (!HuskSyncBukkit.handshakeCompleted || HuskSyncBukkit.isMySqlPlayerDataBridgeInstalled) return; // If the data handshake has not been completed yet (or MySqlPlayerDataBridge is installed) + // Send a redis message requesting the player data (if they need to) if (HuskSyncBukkit.bukkitCache.isPlayerRequestingOnJoin(player.getUniqueId())) { try { - // Send a redis message requesting the player data - new me.william278.husksync.redis.RedisMessage(me.william278.husksync.redis.RedisMessage.MessageType.PLAYER_DATA_REQUEST, - new RedisMessage.MessageTarget(Settings.ServerType.BUNGEECORD, null), - player.getUniqueId().toString()).send(); + PlayerSetter.requestPlayerData(player.getUniqueId()); } catch (IOException e) { plugin.getLogger().log(Level.SEVERE, "Failed to send a PlayerData fetch request", e); } + } else { + // If the player's data wasn't set after 10 ticks, ensure it will be + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { + if (player.isOnline()) { + try { + if (HuskSyncBukkit.bukkitCache.isAwaitingDataFetch(player.getUniqueId())) { + PlayerSetter.requestPlayerData(player.getUniqueId()); + } + } catch (IOException e) { + plugin.getLogger().log(Level.SEVERE, "Failed to send a PlayerData fetch request", e); + } + } + }, 5); + } + } + + @EventHandler + public void onInventoryClose(InventoryCloseEvent event) { + if (!plugin.isEnabled() || !HuskSyncBukkit.handshakeCompleted || HuskSyncBukkit.bukkitCache.isAwaitingDataFetch(event.getPlayer().getUniqueId())) return; // If the plugin has not been initialized correctly + + // When a player closes an Inventory + final Player player = (Player) event.getPlayer(); + + // Handle a player who has finished viewing a player's item data + if (HuskSyncBukkit.bukkitCache.isViewing(player.getUniqueId())) { + try { + DataViewer.stopShowing(player, event.getInventory()); + } catch (IOException e) { + plugin.getLogger().log(Level.SEVERE, "Failed to serialize updated item data", e); + } + } + } + + /* + * Events to cancel if the player has not been set yet + */ + + @EventHandler(priority = EventPriority.MONITOR) + public void onDropItem(PlayerDropItemEvent event) { + if (!plugin.isEnabled() || !HuskSyncBukkit.handshakeCompleted || HuskSyncBukkit.bukkitCache.isAwaitingDataFetch(event.getPlayer().getUniqueId())) { + event.setCancelled(true); // If the plugin / player has not been set + } + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onPickupItem(EntityPickupItemEvent event) { + if (event.getEntity() instanceof Player player) { + if (!plugin.isEnabled() || !HuskSyncBukkit.handshakeCompleted || HuskSyncBukkit.bukkitCache.isAwaitingDataFetch(player.getUniqueId())) { + event.setCancelled(true); // If the plugin / player has not been set + } + } + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onPlayerInteract(PlayerInteractEvent event) { + if (!plugin.isEnabled() || !HuskSyncBukkit.handshakeCompleted || HuskSyncBukkit.bukkitCache.isAwaitingDataFetch(event.getPlayer().getUniqueId())) { + event.setCancelled(true); // If the plugin / player has not been set + } + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onBlockPlace(BlockPlaceEvent event) { + if (!plugin.isEnabled() || !HuskSyncBukkit.handshakeCompleted || HuskSyncBukkit.bukkitCache.isAwaitingDataFetch(event.getPlayer().getUniqueId())) { + event.setCancelled(true); // If the plugin / player has not been set + } + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onBlockBreak(BlockBreakEvent event) { + if (!plugin.isEnabled() || !HuskSyncBukkit.handshakeCompleted || HuskSyncBukkit.bukkitCache.isAwaitingDataFetch(event.getPlayer().getUniqueId())) { + event.setCancelled(true); // If the plugin / player has not been set + } + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onInventoryOpen(InventoryOpenEvent event) { + if (!plugin.isEnabled() || !HuskSyncBukkit.handshakeCompleted || HuskSyncBukkit.bukkitCache.isAwaitingDataFetch(event.getPlayer().getUniqueId())) { + event.setCancelled(true); // If the plugin / player has not been set } } } diff --git a/bukkit/src/main/java/me/william278/husksync/bukkit/migrator/MPDBDeserializer.java b/bukkit/src/main/java/me/william278/husksync/bukkit/migrator/MPDBDeserializer.java new file mode 100644 index 00000000..a028a4f5 --- /dev/null +++ b/bukkit/src/main/java/me/william278/husksync/bukkit/migrator/MPDBDeserializer.java @@ -0,0 +1,81 @@ +package me.william278.husksync.bukkit.migrator; + +import me.william278.husksync.HuskSyncBukkit; +import me.william278.husksync.PlayerData; +import me.william278.husksync.bukkit.PlayerSetter; +import me.william278.husksync.bukkit.data.DataSerializer; +import me.william278.husksync.migrator.MPDBPlayerData; +import net.craftersland.data.bridge.PD; +import org.bukkit.Bukkit; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.logging.Level; + +public class MPDBDeserializer { + + private static final HuskSyncBukkit plugin = HuskSyncBukkit.getInstance(); + + // Instance of MySqlPlayerDataBridge + private static PD mySqlPlayerDataBridge; + public static void setMySqlPlayerDataBridge() { + mySqlPlayerDataBridge = (PD) Bukkit.getPluginManager().getPlugin("MySqlPlayerDataBridge"); + } + + /** + * Convert MySqlPlayerDataBridge ({@link MPDBPlayerData}) data to HuskSync's {@link PlayerData} + * + * @param mpdbPlayerData The {@link MPDBPlayerData} to convert + * @return The converted {@link PlayerData} + */ + public static PlayerData convertMPDBData(MPDBPlayerData mpdbPlayerData) { + PlayerData playerData = PlayerData.DEFAULT_PLAYER_DATA(mpdbPlayerData.playerUUID); + playerData.useDefaultData = false; + if (!HuskSyncBukkit.isMySqlPlayerDataBridgeInstalled) { + plugin.getLogger().log(Level.SEVERE, "MySqlPlayerDataBridge is not installed, failed to serialize data!"); + return null; + } + + // Convert the data + try { + // Set inventory + Inventory inventory = Bukkit.createInventory(null, InventoryType.PLAYER); + PlayerSetter.setInventory(inventory, getItemStackArrayFromMPDBBase64String(mpdbPlayerData.inventoryData)); + + playerData.setSerializedInventory(DataSerializer.getSerializedInventoryContents(inventory)); + inventory.clear(); + + // Set ender chest + playerData.setSerializedEnderChest(DataSerializer.itemStackArrayToBase64( + getItemStackArrayFromMPDBBase64String(mpdbPlayerData.enderChestData))); + + // Set experience + playerData.setExpLevel(mpdbPlayerData.expLevel); + playerData.setExpProgress(mpdbPlayerData.expProgress); + playerData.setTotalExperience(mpdbPlayerData.totalExperience); + } catch (IOException | InvocationTargetException | IllegalAccessException e) { + plugin.getLogger().log(Level.WARNING, "Failed to convert MPDB data to HuskSync's format!"); + e.printStackTrace(); + } + return playerData; + } + + /** + * Returns an ItemStack array from a decoded base 64 string in MySQLPlayerDataBridge's format + * + * @param data The encoded ItemStack[] string from MySQLPlayerDataBridge + * @return The {@link ItemStack[]} array + * @throws IOException If an error occurs during decoding + * @throws InvocationTargetException If an error occurs during decoding + * @throws IllegalAccessException If an error occurs during decoding + */ + public static ItemStack[] getItemStackArrayFromMPDBBase64String(String data) throws IOException, InvocationTargetException, IllegalAccessException { + if (data.isEmpty()) { + return new ItemStack[0]; + } + return mySqlPlayerDataBridge.getItemStackSerializer().fromBase64(data); + } +} diff --git a/bungeecord/src/main/java/me/william278/husksync/HuskSyncBungeeCord.java b/bungeecord/src/main/java/me/william278/husksync/HuskSyncBungeeCord.java index 3e2b9d15..f269dfbc 100644 --- a/bungeecord/src/main/java/me/william278/husksync/HuskSyncBungeeCord.java +++ b/bungeecord/src/main/java/me/william278/husksync/HuskSyncBungeeCord.java @@ -9,11 +9,18 @@ import me.william278.husksync.bungeecord.data.sql.MySQL; import me.william278.husksync.bungeecord.data.sql.SQLite; import me.william278.husksync.bungeecord.listener.BungeeEventListener; import me.william278.husksync.bungeecord.listener.BungeeRedisListener; +import me.william278.husksync.bungeecord.migrator.MPDBMigrator; +import me.william278.husksync.redis.RedisMessage; +import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.plugin.Plugin; +import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; +import java.util.HashSet; import java.util.Objects; +import java.util.UUID; +import java.util.logging.Level; public final class HuskSyncBungeeCord extends Plugin { @@ -22,11 +29,18 @@ public final class HuskSyncBungeeCord extends Plugin { return instance; } + /** + Set of all the {@link Server}s that have completed the synchronisation handshake with HuskSync on the proxy + */ + public static HashSet synchronisedServers; + private static Database database; public static Connection getConnection() throws SQLException { return database.getConnection(); } + public static MPDBMigrator mpdbMigrator; + @Override public void onLoad() { instance = this; @@ -35,6 +49,7 @@ public final class HuskSyncBungeeCord extends Plugin { @Override public void onEnable() { // Plugin startup logic + synchronisedServers = new HashSet<>(); // Load config ConfigManager.loadConfig(); @@ -42,24 +57,43 @@ public final class HuskSyncBungeeCord extends Plugin { // Load settings from config ConfigLoader.loadSettings(Objects.requireNonNull(ConfigManager.getConfig())); + // Load messages + ConfigManager.loadMessages(Settings.language); + + // Load locales from messages + ConfigLoader.loadMessages(Objects.requireNonNull(ConfigManager.getMessages(Settings.language))); + // Initialize the database database = switch (Settings.dataStorageType) { case SQLITE -> new SQLite(this); case MYSQL -> new MySQL(this); }; database.load(); + database.createTables(); + + // Abort loading if the database failed to initialize + if (database.isInactive()) { + getLogger().severe("Failed to initialize the database; HuskSync will now abort loading itself (" + getProxy().getName() + ") v" + getDescription().getVersion()); + return; + } // Setup player data cache DataManager.playerDataCache = new DataManager.PlayerDataCache(); + // Initialize the redis listener + if (!new BungeeRedisListener().isActiveAndEnabled) { + getLogger().severe("Failed to initialize Redis; HuskSync will now abort loading itself (" + getProxy().getName() + ") v" + getDescription().getVersion()); + return; + } + // Register listener getProxy().getPluginManager().registerListener(this, new BungeeEventListener()); // Register command getProxy().getPluginManager().registerCommand(this, new HuskSyncCommand()); - // Initialize the redis listener - new BungeeRedisListener(); + // Prepare the migrator for use if needed + mpdbMigrator = new MPDBMigrator(); // Log to console getLogger().info("Enabled HuskSync (" + getProxy().getName() + ") v" + getDescription().getVersion()); @@ -69,10 +103,27 @@ public final class HuskSyncBungeeCord extends Plugin { public void onDisable() { // Plugin shutdown logic + // Send terminating handshake message + for (Server server: synchronisedServers) { + try { + new RedisMessage(RedisMessage.MessageType.TERMINATE_HANDSHAKE, + new RedisMessage.MessageTarget(Settings.ServerType.BUKKIT, null), + server.serverUUID().toString(), + ProxyServer.getInstance().getName()).send(); + } catch (IOException e) { + getInstance().getLogger().log(Level.SEVERE, "Failed to serialize Redis message for handshake termination", e); + } + } + // Close the database database.close(); // Log to console getLogger().info("Disabled HuskSync (" + getProxy().getName() + ") v" + getDescription().getVersion()); } + + /** + * A record representing a server synchronised on the network and whether it has MySqlPlayerDataBridge installed + */ + public record Server(UUID serverUUID, boolean hasMySqlPlayerDataBridge) { } } diff --git a/bungeecord/src/main/java/me/william278/husksync/bungeecord/command/HuskSyncCommand.java b/bungeecord/src/main/java/me/william278/husksync/bungeecord/command/HuskSyncCommand.java index 253d7a84..4e038d9a 100644 --- a/bungeecord/src/main/java/me/william278/husksync/bungeecord/command/HuskSyncCommand.java +++ b/bungeecord/src/main/java/me/william278/husksync/bungeecord/command/HuskSyncCommand.java @@ -2,52 +2,304 @@ package me.william278.husksync.bungeecord.command; import de.themoep.minedown.MineDown; import me.william278.husksync.HuskSyncBungeeCord; -import me.william278.husksync.MessageStrings; +import me.william278.husksync.MessageManager; +import me.william278.husksync.PlayerData; import me.william278.husksync.Settings; +import me.william278.husksync.bungeecord.config.ConfigLoader; +import me.william278.husksync.bungeecord.config.ConfigManager; +import me.william278.husksync.bungeecord.data.DataManager; +import me.william278.husksync.bungeecord.migrator.MPDBMigrator; import me.william278.husksync.redis.RedisMessage; import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; import net.md_5.bungee.api.plugin.TabExecutor; import java.io.IOException; -import java.util.Arrays; +import java.util.ArrayList; import java.util.Collections; import java.util.Locale; +import java.util.Objects; import java.util.logging.Level; import java.util.stream.Collectors; public class HuskSyncCommand extends Command implements TabExecutor { private final static HuskSyncBungeeCord plugin = HuskSyncBungeeCord.getInstance(); - private final static String[] COMMAND_TAB_ARGUMENTS = {"about", "reload"}; - private final static String PERMISSION = "husksync.command.csc"; + private final static SubCommand[] SUB_COMMANDS = {new SubCommand("about", null), + new SubCommand("status", "husksync.command.admin"), + new SubCommand("reload", "husksync.command.admin"), + new SubCommand("invsee", "husksync.command.inventory"), + new SubCommand("echest", "husksync.command.ender_chest")}; - //public HuskSyncCommand() { super("husksync", PERMISSION, "hs"); } - public HuskSyncCommand() { super("husksync"); } + public HuskSyncCommand() { + super("husksync", null, "hs"); + } @Override public void execute(CommandSender sender, String[] args) { if (sender instanceof ProxiedPlayer player) { - if (args.length == 1) { + if (HuskSyncBungeeCord.synchronisedServers.size() == 0) { + player.sendMessage(new MineDown(MessageManager.getMessage("error_no_servers_proxied")).toComponent()); + return; + } + if (args.length >= 1) { switch (args[0].toLowerCase(Locale.ROOT)) { case "about", "info" -> sendAboutInformation(player); + case "invsee", "openinv", "inventory" -> { + if (!player.hasPermission("husksync.command.inventory")) { + sender.sendMessage(new MineDown(MessageManager.getMessage("error_no_permission")).toComponent()); + return; + } + if (args.length == 2) { + String playerName = args[1]; + openInventory(player, playerName); + } else { + sender.sendMessage(new MineDown(MessageManager.getMessage("error_invalid_syntax").replaceAll("%1%", + "/husksync invsee ")).toComponent()); + } + } + case "echest", "enderchest" -> { + if (!player.hasPermission("husksync.command.ender_chest")) { + sender.sendMessage(new MineDown(MessageManager.getMessage("error_no_permission")).toComponent()); + return; + } + if (args.length == 2) { + String playerName = args[1]; + openEnderChest(player, playerName); + } else { + sender.sendMessage(new MineDown(MessageManager.getMessage("error_invalid_syntax") + .replaceAll("%1%", "/husksync echest ")).toComponent()); + } + } + case "migrate" -> { + if (!player.hasPermission("husksync.command.admin")) { + sender.sendMessage(new MineDown(MessageManager.getMessage("error_no_permission")).toComponent()); + return; + } + sender.sendMessage(new MineDown(MessageManager.getMessage("error_console_command_only") + .replaceAll("%1%", ProxyServer.getInstance().getName())).toComponent()); + } + case "status" -> { + if (!player.hasPermission("husksync.command.admin")) { + sender.sendMessage(new MineDown(MessageManager.getMessage("error_no_permission")).toComponent()); + return; + } + sender.sendMessage(new MineDown(MessageManager.PLUGIN_STATUS.toString() + .replaceAll("%1%", String.valueOf(HuskSyncBungeeCord.synchronisedServers.size())) + .replaceAll("%2%", String.valueOf(DataManager.playerDataCache.playerData.size()))).toComponent()); + } + case "reload" -> { + if (!player.hasPermission("husksync.command.admin")) { + sender.sendMessage(new MineDown(MessageManager.getMessage("error_no_permission")).toComponent()); + return; + } + ConfigManager.loadConfig(); + ConfigLoader.loadSettings(Objects.requireNonNull(ConfigManager.getConfig())); + ConfigManager.loadMessages(Settings.language); + ConfigLoader.loadMessages(Objects.requireNonNull(ConfigManager.getMessages(Settings.language))); + + // Send reload request to all bukkit servers + try { + new RedisMessage(RedisMessage.MessageType.RELOAD_CONFIG, + new RedisMessage.MessageTarget(Settings.ServerType.BUKKIT, null), + "reload") + .send(); + } catch (IOException e) { + plugin.getLogger().log(Level.WARNING, "Failed to serialize reload notification message data"); + } - default -> sender.sendMessage(new MineDown(MessageStrings.ERROR_INVALID_SYNTAX.replaceAll("%1%", "/csc ")).toComponent()); + sender.sendMessage(new MineDown(MessageManager.getMessage("reload_complete")).toComponent()); + } + default -> sender.sendMessage(new MineDown(MessageManager.getMessage("error_invalid_syntax").replaceAll("%1%", + "/husksync ")).toComponent()); } } else { sendAboutInformation(player); } + } else { + // Database migration wizard + if (args.length >= 1) { + if (args[0].equalsIgnoreCase("migrate")) { + if (args.length == 1) { + sender.sendMessage(new MineDown( + """ + === MySQLPlayerDataBridge Migration Wizard ========== + This will migrate data from the MySQLPlayerDataBridge + plugin to HuskSync. + + Data that will be migrated: + - Inventories + - Ender Chests + - Experience points + + Other non-vital data, such as current health, hunger + & potion effects will not be migrated to ensure that + migration does not take an excessive amount of time. + + To do this, you need to have MySqlPlayerDataBridge + and HuskSync installed on one Spigot server as well + as HuskSync installed on the proxy (which you have) + + >To proceed, type: husksync migrate setup""").toComponent()); + } else { + switch (args[1].toLowerCase()) { + case "setup" -> sender.sendMessage(new MineDown( + """ + === MySQLPlayerDataBridge Migration Wizard ========== + The following database settings will be used. + Please make sure they match the correct settings to + access your MySQLPlayerDataBridge Data + + sourceHost: %1% + sourcePort: %2% + sourceDatabase: %3% + sourceUsername: %4% + sourcePassword: %5% + + sourceInventoryTableName: %6% + sourceEnderChestTableName: %7% + sourceExperienceTableName: %8% + + To change a setting, type: + husksync migrate setting + + Please ensure no players are logged in to the network + and that at least one Spigot server is online with + both HuskSync AND MySqlPlayerDataBridge installed AND + that the server has been configured with the correct + Redis credentials. + + Warning: Data will be saved to your configured data + source, which is currently a %9% database. + Please make sure you are happy with this, or stop + the proxy server and edit this in config.yml + + Warning: Migration will overwrite any current data + saved by HuskSync. It will not, however, delete any + data from the source MySQLPlayerDataBridge database. + + >When done, type: husksync migrate start""" + .replaceAll("%1%", MPDBMigrator.migrationSettings.sourceHost) + .replaceAll("%2%", String.valueOf(MPDBMigrator.migrationSettings.sourcePort)) + .replaceAll("%3%", MPDBMigrator.migrationSettings.sourceDatabase) + .replaceAll("%4%", MPDBMigrator.migrationSettings.sourceUsername) + .replaceAll("%5%", MPDBMigrator.migrationSettings.sourcePassword) + .replaceAll("%6%", MPDBMigrator.migrationSettings.inventoryDataTable) + .replaceAll("%7%", MPDBMigrator.migrationSettings.enderChestDataTable) + .replaceAll("%8%", MPDBMigrator.migrationSettings.expDataTable) + .replaceAll("%9%", Settings.dataStorageType.toString()) + ).toComponent()); + case "setting" -> { + if (args.length == 4) { + String value = args[3]; + switch (args[2]) { + case "sourceHost", "host" -> MPDBMigrator.migrationSettings.sourceHost = value; + case "sourcePort", "port" -> { + try { + MPDBMigrator.migrationSettings.sourcePort = Integer.parseInt(value); + } catch (NumberFormatException e) { + sender.sendMessage(new MineDown("Error: Invalid value; port must be a number").toComponent()); + return; + } + } + case "sourceDatabase", "database" -> MPDBMigrator.migrationSettings.sourceDatabase = value; + case "sourceUsername", "username" -> MPDBMigrator.migrationSettings.sourceUsername = value; + case "sourcePassword", "password" -> MPDBMigrator.migrationSettings.sourcePassword = value; + case "sourceInventoryTableName", "inventoryTableName", "inventoryTable" -> MPDBMigrator.migrationSettings.inventoryDataTable = value; + case "sourceEnderChestTableName", "enderChestTableName", "enderChestTable" -> MPDBMigrator.migrationSettings.enderChestDataTable = value; + case "sourceExperienceTableName", "experienceTableName", "experienceTable" -> MPDBMigrator.migrationSettings.expDataTable = value; + default -> { + sender.sendMessage(new MineDown("Error: Invalid setting; please use \"husksync migrate setup\" to view a list").toComponent()); + return; + } + } + sender.sendMessage(new MineDown("Successfully updated setting: \"" + args[2] + "\" --> \"" + value + "\"").toComponent()); + } else { + sender.sendMessage(new MineDown("Error: Invalid usage. Syntax: husksync migrate setting ").toComponent()); + } + } + case "start" -> { + sender.sendMessage(new MineDown("Starting MySQLPlayerDataBridge migration!...").toComponent()); + HuskSyncBungeeCord.mpdbMigrator.start(); + } + default -> sender.sendMessage(new MineDown("Error: Invalid argument for migration. Use \"husksync migrate\" to start the process").toComponent()); + } + } + return; + } + } + sender.sendMessage(new MineDown("Error: Invalid syntax. Usage: husksync migrate ").toComponent()); + } + } + + // View the inventory of a player specified by their name + private void openInventory(ProxiedPlayer viewer, String targetPlayerName) { + if (viewer.getName().equalsIgnoreCase(targetPlayerName)) { + viewer.sendMessage(new MineDown(MessageManager.getMessage("error_cannot_view_own_ender_chest")).toComponent()); + return; + } + if (ProxyServer.getInstance().getPlayer(targetPlayerName) != null) { + viewer.sendMessage(new MineDown(MessageManager.getMessage("error_cannot_view_inventory_online")).toComponent()); + return; + } + ProxyServer.getInstance().getScheduler().runAsync(plugin, () -> { + PlayerData playerData = DataManager.getPlayerDataByName(targetPlayerName); + if (playerData == null) { + viewer.sendMessage(new MineDown(MessageManager.getMessage("error_invalid_player")).toComponent()); + return; + } + try { + new RedisMessage(RedisMessage.MessageType.OPEN_INVENTORY, + new RedisMessage.MessageTarget(Settings.ServerType.BUKKIT, viewer.getUniqueId()), + targetPlayerName, RedisMessage.serialize(playerData)) + .send(); + viewer.sendMessage(new MineDown(MessageManager.getMessage("viewing_inventory_of").replaceAll("%1%", + targetPlayerName)).toComponent()); + } catch (IOException e) { + plugin.getLogger().log(Level.WARNING, "Failed to serialize inventory-see player data", e); + } + }); + } + + // View the ender chest of a player specified by their name + private void openEnderChest(ProxiedPlayer viewer, String targetPlayerName) { + if (viewer.getName().equalsIgnoreCase(targetPlayerName)) { + viewer.sendMessage(new MineDown(MessageManager.getMessage("error_cannot_view_own_ender_chest")).toComponent()); + return; } + if (ProxyServer.getInstance().getPlayer(targetPlayerName) != null) { + viewer.sendMessage(new MineDown(MessageManager.getMessage("error_cannot_view_ender_chest_online")).toComponent()); + return; + } + ProxyServer.getInstance().getScheduler().runAsync(plugin, () -> { + PlayerData playerData = DataManager.getPlayerDataByName(targetPlayerName); + if (playerData == null) { + viewer.sendMessage(new MineDown(MessageManager.getMessage("error_invalid_player")).toComponent()); + return; + } + try { + new RedisMessage(RedisMessage.MessageType.OPEN_ENDER_CHEST, + new RedisMessage.MessageTarget(Settings.ServerType.BUKKIT, viewer.getUniqueId()), + targetPlayerName, RedisMessage.serialize(playerData)) + .send(); + viewer.sendMessage(new MineDown(MessageManager.getMessage("viewing_ender_chest_of").replaceAll("%1%", + targetPlayerName)).toComponent()); + } catch (IOException e) { + plugin.getLogger().log(Level.WARNING, "Failed to serialize inventory-see player data", e); + } + }); } /** * Send information about the plugin + * * @param player The player to send it to */ private void sendAboutInformation(ProxiedPlayer player) { try { - new me.william278.husksync.redis.RedisMessage(me.william278.husksync.redis.RedisMessage.MessageType.SEND_PLUGIN_INFORMATION, + new RedisMessage(RedisMessage.MessageType.SEND_PLUGIN_INFORMATION, new RedisMessage.MessageTarget(Settings.ServerType.BUKKIT, player.getUniqueId()), plugin.getProxy().getName(), plugin.getDescription().getVersion()).send(); } catch (IOException e) { @@ -55,14 +307,19 @@ public class HuskSyncCommand extends Command implements TabExecutor { } } + // Tab completion @Override public Iterable onTabComplete(CommandSender sender, String[] args) { if (sender instanceof ProxiedPlayer player) { - if (!player.hasPermission(PERMISSION)) { - return Collections.emptyList(); - } if (args.length == 1) { - return Arrays.stream(COMMAND_TAB_ARGUMENTS).filter(val -> val.startsWith(args[0])) + final ArrayList subCommands = new ArrayList<>(); + for (SubCommand subCommand : SUB_COMMANDS) { + if (subCommand.doesPlayerHavePermission(player)) { + subCommands.add(subCommand.command()); + } + } + // Automatically filter the sub commands' order in tab completion by what the player has typed + return subCommands.stream().filter(val -> val.startsWith(args[0])) .sorted().collect(Collectors.toList()); } else { return Collections.emptyList(); @@ -71,4 +328,19 @@ public class HuskSyncCommand extends Command implements TabExecutor { return Collections.emptyList(); } + /** + * A sub command, that may require a permission + */ + public record SubCommand(String command, String permission) { + /** + * Returns if the player can use the sub command + * + * @param player The {@link ProxiedPlayer} to check + * @return {@code true} if the player can use the sub command; {@code false} otherwise + */ + public boolean doesPlayerHavePermission(ProxiedPlayer player) { + return permission == null || player.hasPermission(permission); + } + } + } diff --git a/bungeecord/src/main/java/me/william278/husksync/bungeecord/config/ConfigLoader.java b/bungeecord/src/main/java/me/william278/husksync/bungeecord/config/ConfigLoader.java index 4e3f97c0..d8248554 100644 --- a/bungeecord/src/main/java/me/william278/husksync/bungeecord/config/ConfigLoader.java +++ b/bungeecord/src/main/java/me/william278/husksync/bungeecord/config/ConfigLoader.java @@ -1,8 +1,11 @@ package me.william278.husksync.bungeecord.config; +import me.william278.husksync.MessageManager; import me.william278.husksync.Settings; import net.md_5.bungee.config.Configuration; +import java.util.HashMap; + public class ConfigLoader { public static void loadSettings(Configuration config) throws IllegalArgumentException { @@ -14,7 +17,7 @@ public class ConfigLoader { Settings.dataStorageType = Settings.DataStorageType.valueOf(config.getString("data_storage_settings.database_type", "sqlite").toUpperCase()); if (Settings.dataStorageType == Settings.DataStorageType.MYSQL) { Settings.mySQLHost = config.getString("data_storage_settings.mysql_settings.host", "localhost"); - Settings.mySQLPort = config.getInt("data_storage_settings.mysql_settings.port", 8123); + Settings.mySQLPort = config.getInt("data_storage_settings.mysql_settings.port", 3306); Settings.mySQLDatabase = config.getString("data_storage_settings.mysql_settings.database", "HuskSync"); Settings.mySQLUsername = config.getString("data_storage_settings.mysql_settings.username", "root"); Settings.mySQLPassword = config.getString("data_storage_settings.mysql_settings.password", "pa55w0rd"); @@ -28,4 +31,12 @@ public class ConfigLoader { Settings.hikariConnectionTimeOut = config.getLong("data_storage_settings.hikari_pool_settings.connection_timeout", 5000); } + public static void loadMessages(Configuration config) { + final HashMap messages = new HashMap<>(); + for (String messageId : config.getKeys()) { + messages.put(messageId, config.getString(messageId)); + } + MessageManager.setMessages(messages); + } + } diff --git a/bungeecord/src/main/java/me/william278/husksync/bungeecord/config/ConfigManager.java b/bungeecord/src/main/java/me/william278/husksync/bungeecord/config/ConfigManager.java index 93fdfef1..93f4d4ea 100644 --- a/bungeecord/src/main/java/me/william278/husksync/bungeecord/config/ConfigManager.java +++ b/bungeecord/src/main/java/me/william278/husksync/bungeecord/config/ConfigManager.java @@ -24,13 +24,30 @@ public class ConfigManager { File configFile = new File(plugin.getDataFolder(), "config.yml"); if (!configFile.exists()) { Files.copy(plugin.getResourceAsStream("bungee-config.yml"), configFile.toPath()); - plugin.getLogger().info("Created HuskSync bungee-config.yml file"); + plugin.getLogger().info("Created HuskSync config file"); } } catch (Exception e) { plugin.getLogger().log(Level.CONFIG, "An exception occurred loading the configuration file", e); } } + public static void loadMessages(String language) { + try { + if (!plugin.getDataFolder().exists()) { + if (plugin.getDataFolder().mkdir()) { + plugin.getLogger().info("Created HuskSync data folder"); + } + } + File messagesFile = new File(plugin.getDataFolder(), "messages_ " + language + ".yml"); + if (!messagesFile.exists()) { + Files.copy(plugin.getResourceAsStream("languages" + File.separator + language + ".yml"), messagesFile.toPath()); + plugin.getLogger().info("Created HuskSync messages file"); + } + } catch (Exception e) { + plugin.getLogger().log(Level.CONFIG, "An exception occurred loading the messages file", e); + } + } + public static Configuration getConfig() { try { File configFile = new File(plugin.getDataFolder(), "config.yml"); @@ -41,5 +58,15 @@ public class ConfigManager { } } + public static Configuration getMessages(String language) { + try { + File configFile = new File(plugin.getDataFolder(), "messages-" + language + ".yml"); + return ConfigurationProvider.getProvider(YamlConfiguration.class).load(configFile); + } catch (IOException e) { + plugin.getLogger().log(Level.CONFIG, "An IOException occurred fetching the messages file", e); + return null; + } + } + } diff --git a/bungeecord/src/main/java/me/william278/husksync/bungeecord/data/DataManager.java b/bungeecord/src/main/java/me/william278/husksync/bungeecord/data/DataManager.java index 468a7b99..0712e604 100644 --- a/bungeecord/src/main/java/me/william278/husksync/bungeecord/data/DataManager.java +++ b/bungeecord/src/main/java/me/william278/husksync/bungeecord/data/DataManager.java @@ -16,13 +16,17 @@ public class DataManager { public static PlayerDataCache playerDataCache; /** - * Checks if the player is registered on the database; register them if not. + * Checks if the player is registered on the database. + * If not, register them to the database + * If they are, ensure that their player name is up-to-date on the database * * @param playerUUID The UUID of the player to register */ - public static void ensurePlayerExists(UUID playerUUID) { + public static void ensurePlayerExists(UUID playerUUID, String playerName) { if (!playerExists(playerUUID)) { - createPlayerEntry(playerUUID); + createPlayerEntry(playerUUID, playerName); + } else { + updatePlayerName(playerUUID, playerName); } } @@ -46,11 +50,12 @@ public class DataManager { } } - private static void createPlayerEntry(UUID playerUUID) { + private static void createPlayerEntry(UUID playerUUID, String playerName) { try (Connection connection = HuskSyncBungeeCord.getConnection()) { try (PreparedStatement statement = connection.prepareStatement( - "INSERT INTO " + Database.PLAYER_TABLE_NAME + " (`uuid`) VALUES(?);")) { + "INSERT INTO " + Database.PLAYER_TABLE_NAME + " (`uuid`,`username`) VALUES(?,?);")) { statement.setString(1, playerUUID.toString()); + statement.setString(2, playerName); statement.executeUpdate(); } } catch (SQLException e) { @@ -58,6 +63,47 @@ public class DataManager { } } + public static void updatePlayerName(UUID playerUUID, String playerName) { + try (Connection connection = HuskSyncBungeeCord.getConnection()) { + try (PreparedStatement statement = connection.prepareStatement( + "UPDATE " + Database.PLAYER_TABLE_NAME + " SET `username`=? WHERE `uuid`=?;")) { + statement.setString(1, playerName); + statement.setString(2, playerUUID.toString()); + statement.executeUpdate(); + } + } catch (SQLException e) { + plugin.getLogger().log(Level.SEVERE, "An SQL exception occurred", e); + } + } + + /** + * Returns a player's PlayerData by their username + * @param playerName The PlayerName of the data to get + * @return Their {@link PlayerData}; or {@code null} if the player does not exist + */ + public static PlayerData getPlayerDataByName(String playerName) { + PlayerData playerData = null; + try (Connection connection = HuskSyncBungeeCord.getConnection()) { + try (PreparedStatement statement = connection.prepareStatement( + "SELECT * FROM " + Database.PLAYER_TABLE_NAME + " WHERE `username`=? LIMIT 1;")) { + statement.setString(1, playerName); + ResultSet resultSet = statement.executeQuery(); + if (resultSet.next()) { + final UUID uuid = UUID.fromString(resultSet.getString("uuid")); + + // Get the player data from the cache if it's there, otherwise pull from SQL + playerData = playerDataCache.getPlayer(uuid); + if (playerData == null) { + playerData = getPlayerData(uuid); + } + } + } + } catch (SQLException e) { + plugin.getLogger().log(Level.SEVERE, "An SQL exception occurred", e); + } + return playerData; + } + public static PlayerData getPlayerData(UUID playerUUID) { try (Connection connection = HuskSyncBungeeCord.getConnection()) { try (PreparedStatement statement = connection.prepareStatement( @@ -66,11 +112,12 @@ public class DataManager { ResultSet resultSet = statement.executeQuery(); if (resultSet.next()) { final UUID dataVersionUUID = UUID.fromString(resultSet.getString("version_uuid")); - final Timestamp dataSaveTimestamp = resultSet.getTimestamp("timestamp"); + //final Timestamp dataSaveTimestamp = resultSet.getTimestamp("timestamp"); final String serializedInventory = resultSet.getString("inventory"); final String serializedEnderChest = resultSet.getString("ender_chest"); final double health = resultSet.getDouble("health"); final double maxHealth = resultSet.getDouble("max_health"); + final double healthScale = resultSet.getDouble("health_scale"); final int hunger = resultSet.getInt("hunger"); final float saturation = resultSet.getFloat("saturation"); final float saturationExhaustion = resultSet.getFloat("saturation_exhaustion"); @@ -87,7 +134,7 @@ public class DataManager { final String serializedStatisticData = resultSet.getString("statistics"); return new PlayerData(playerUUID, dataVersionUUID, serializedInventory, serializedEnderChest, - health, maxHealth, hunger, saturation, saturationExhaustion, selectedSlot, serializedStatusEffects, + health, maxHealth, healthScale, hunger, saturation, saturationExhaustion, selectedSlot, serializedStatusEffects, totalExperience, expLevel, expProgress, gameMode, serializedStatisticData, isFlying, serializedAdvancementData, serializedLocationData); } else { @@ -117,28 +164,29 @@ public class DataManager { private static void updatePlayerSQLData(PlayerData playerData) { try (Connection connection = HuskSyncBungeeCord.getConnection()) { try (PreparedStatement statement = connection.prepareStatement( - "UPDATE " + Database.DATA_TABLE_NAME + " SET `version_uuid`=?, `timestamp`=?, `inventory`=?, `ender_chest`=?, `health`=?, `max_health`=?, `hunger`=?, `saturation`=?, `saturation_exhaustion`=?, `selected_slot`=?, `status_effects`=?, `total_experience`=?, `exp_level`=?, `exp_progress`=?, `game_mode`=?, `statistics`=?, `is_flying`=?, `advancements`=?, `location`=? WHERE `player_id`=(SELECT `id` FROM " + Database.PLAYER_TABLE_NAME + " WHERE `uuid`=?);")) { + "UPDATE " + Database.DATA_TABLE_NAME + " SET `version_uuid`=?, `timestamp`=?, `inventory`=?, `ender_chest`=?, `health`=?, `max_health`=?, `health_scale`=?, `hunger`=?, `saturation`=?, `saturation_exhaustion`=?, `selected_slot`=?, `status_effects`=?, `total_experience`=?, `exp_level`=?, `exp_progress`=?, `game_mode`=?, `statistics`=?, `is_flying`=?, `advancements`=?, `location`=? WHERE `player_id`=(SELECT `id` FROM " + Database.PLAYER_TABLE_NAME + " WHERE `uuid`=?);")) { statement.setString(1, playerData.getDataVersionUUID().toString()); statement.setTimestamp(2, new Timestamp(Instant.now().getEpochSecond())); statement.setString(3, playerData.getSerializedInventory()); statement.setString(4, playerData.getSerializedEnderChest()); statement.setDouble(5, playerData.getHealth()); // Health statement.setDouble(6, playerData.getMaxHealth()); // Max health - statement.setInt(7, playerData.getHunger()); // Hunger - statement.setFloat(8, playerData.getSaturation()); // Saturation - statement.setFloat(9, playerData.getSaturationExhaustion()); // Saturation exhaustion - statement.setInt(10, playerData.getSelectedSlot()); // Current selected slot - statement.setString(11, playerData.getSerializedEffectData()); // Status effects - statement.setInt(12, playerData.getTotalExperience()); // Total Experience - statement.setInt(13, playerData.getExpLevel()); // Exp level - statement.setFloat(14, playerData.getExpProgress()); // Exp progress - statement.setString(15, playerData.getGameMode()); // GameMode - statement.setString(16, playerData.getSerializedStatistics()); // Statistics - statement.setBoolean(17, playerData.isFlying()); // Is flying - statement.setString(18, playerData.getSerializedAdvancements()); // Advancements - statement.setString(19, playerData.getSerializedLocation()); // Location - - statement.setString(20, playerData.getPlayerUUID().toString()); + statement.setDouble(7, playerData.getHealthScale()); // Health scale + statement.setInt(8, playerData.getHunger()); // Hunger + statement.setFloat(9, playerData.getSaturation()); // Saturation + statement.setFloat(10, playerData.getSaturationExhaustion()); // Saturation exhaustion + statement.setInt(11, playerData.getSelectedSlot()); // Current selected slot + statement.setString(12, playerData.getSerializedEffectData()); // Status effects + statement.setInt(13, playerData.getTotalExperience()); // Total Experience + statement.setInt(14, playerData.getExpLevel()); // Exp level + statement.setFloat(15, playerData.getExpProgress()); // Exp progress + statement.setString(16, playerData.getGameMode()); // GameMode + statement.setString(17, playerData.getSerializedStatistics()); // Statistics + statement.setBoolean(18, playerData.isFlying()); // Is flying + statement.setString(19, playerData.getSerializedAdvancements()); // Advancements + statement.setString(20, playerData.getSerializedLocation()); // Location + + statement.setString(21, playerData.getPlayerUUID().toString()); statement.executeUpdate(); } } catch (SQLException e) { @@ -149,7 +197,7 @@ public class DataManager { private static void insertPlayerData(PlayerData playerData) { try (Connection connection = HuskSyncBungeeCord.getConnection()) { try (PreparedStatement statement = connection.prepareStatement( - "INSERT INTO " + Database.DATA_TABLE_NAME + " (`player_id`,`version_uuid`,`timestamp`,`inventory`,`ender_chest`,`health`,`max_health`,`hunger`,`saturation`,`saturation_exhaustion`,`selected_slot`,`status_effects`,`total_experience`,`exp_level`,`exp_progress`,`game_mode`,`statistics`,`is_flying`,`advancements`,`location`) VALUES((SELECT `id` FROM " + Database.PLAYER_TABLE_NAME + " WHERE `uuid`=?),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);")) { + "INSERT INTO " + Database.DATA_TABLE_NAME + " (`player_id`,`version_uuid`,`timestamp`,`inventory`,`ender_chest`,`health`,`max_health`,`health_scale`,`hunger`,`saturation`,`saturation_exhaustion`,`selected_slot`,`status_effects`,`total_experience`,`exp_level`,`exp_progress`,`game_mode`,`statistics`,`is_flying`,`advancements`,`location`) VALUES((SELECT `id` FROM " + Database.PLAYER_TABLE_NAME + " WHERE `uuid`=?),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);")) { statement.setString(1, playerData.getPlayerUUID().toString()); statement.setString(2, playerData.getDataVersionUUID().toString()); statement.setTimestamp(3, new Timestamp(Instant.now().getEpochSecond())); @@ -157,19 +205,20 @@ public class DataManager { statement.setString(5, playerData.getSerializedEnderChest()); statement.setDouble(6, playerData.getHealth()); // Health statement.setDouble(7, playerData.getMaxHealth()); // Max health - statement.setInt(8, playerData.getHunger()); // Hunger - statement.setFloat(9, playerData.getSaturation()); // Saturation - statement.setFloat(10, playerData.getSaturationExhaustion()); // Saturation exhaustion - statement.setInt(11, playerData.getSelectedSlot()); // Current selected slot - statement.setString(12, playerData.getSerializedEffectData()); // Status effects - statement.setInt(13, playerData.getTotalExperience()); // Total Experience - statement.setInt(14, playerData.getExpLevel()); // Exp level - statement.setFloat(15, playerData.getExpProgress()); // Exp progress - statement.setString(16, playerData.getGameMode()); // GameMode - statement.setString(17, playerData.getSerializedStatistics()); // Statistics - statement.setBoolean(18, playerData.isFlying()); // Is flying - statement.setString(19, playerData.getSerializedAdvancements()); // Advancements - statement.setString(20, playerData.getSerializedLocation()); // Location + statement.setDouble(8, playerData.getHealthScale()); // Health scale + statement.setInt(9, playerData.getHunger()); // Hunger + statement.setFloat(10, playerData.getSaturation()); // Saturation + statement.setFloat(11, playerData.getSaturationExhaustion()); // Saturation exhaustion + statement.setInt(12, playerData.getSelectedSlot()); // Current selected slot + statement.setString(13, playerData.getSerializedEffectData()); // Status effects + statement.setInt(14, playerData.getTotalExperience()); // Total Experience + statement.setInt(15, playerData.getExpLevel()); // Exp level + statement.setFloat(16, playerData.getExpProgress()); // Exp progress + statement.setString(17, playerData.getGameMode()); // GameMode + statement.setString(18, playerData.getSerializedStatistics()); // Statistics + statement.setBoolean(19, playerData.isFlying()); // Is flying + statement.setString(20, playerData.getSerializedAdvancements()); // Advancements + statement.setString(21, playerData.getSerializedLocation()); // Location statement.executeUpdate(); } diff --git a/bungeecord/src/main/java/me/william278/husksync/bungeecord/data/sql/Database.java b/bungeecord/src/main/java/me/william278/husksync/bungeecord/data/sql/Database.java index dee32de3..1ce23bc9 100644 --- a/bungeecord/src/main/java/me/william278/husksync/bungeecord/data/sql/Database.java +++ b/bungeecord/src/main/java/me/william278/husksync/bungeecord/data/sql/Database.java @@ -19,9 +19,17 @@ public abstract class Database { public abstract Connection getConnection() throws SQLException; + public boolean isInactive() { + try { + return getConnection() == null; + } catch (SQLException e) { + return true; + } + } + public abstract void load(); - public abstract void backup(); + public abstract void createTables(); public abstract void close(); diff --git a/bungeecord/src/main/java/me/william278/husksync/bungeecord/data/sql/MySQL.java b/bungeecord/src/main/java/me/william278/husksync/bungeecord/data/sql/MySQL.java index f52fdb55..7d351110 100644 --- a/bungeecord/src/main/java/me/william278/husksync/bungeecord/data/sql/MySQL.java +++ b/bungeecord/src/main/java/me/william278/husksync/bungeecord/data/sql/MySQL.java @@ -15,6 +15,7 @@ public class MySQL extends Database { "CREATE TABLE IF NOT EXISTS " + PLAYER_TABLE_NAME + " (" + "`id` integer NOT NULL AUTO_INCREMENT," + "`uuid` char(36) NOT NULL UNIQUE," + + "`username` varchar(16) NOT NULL," + "PRIMARY KEY (`id`)" + ");", @@ -27,6 +28,7 @@ public class MySQL extends Database { "`ender_chest` longtext NOT NULL," + "`health` double NOT NULL," + "`max_health` double NOT NULL," + + "`health_scale` double NOT NULL," + "`hunger` integer NOT NULL," + "`saturation` float NOT NULL," + "`saturation_exhaustion` float NOT NULL," + @@ -47,12 +49,13 @@ public class MySQL extends Database { }; - final String host = me.william278.husksync.Settings.mySQLHost; - final int port = me.william278.husksync.Settings.mySQLPort; - final String database = me.william278.husksync.Settings.mySQLDatabase; - final String username = me.william278.husksync.Settings.mySQLUsername; - final String password = me.william278.husksync.Settings.mySQLPassword; - final String params = Settings.mySQLParams; + public String host = Settings.mySQLHost; + public int port = Settings.mySQLPort; + public String database = Settings.mySQLDatabase; + public String username = Settings.mySQLUsername; + public String password = Settings.mySQLPassword; + public String params = Settings.mySQLParams; + public String dataPoolName = DATA_POOL_NAME; private HikariDataSource dataSource; @@ -81,8 +84,11 @@ public class MySQL extends Database { dataSource.setMaxLifetime(hikariMaximumLifetime); dataSource.setKeepaliveTime(hikariKeepAliveTime); dataSource.setConnectionTimeout(hikariConnectionTimeOut); - dataSource.setPoolName(DATA_POOL_NAME); + dataSource.setPoolName(dataPoolName); + } + @Override + public void createTables() { // Create tables try (Connection connection = dataSource.getConnection()) { try (Statement statement = connection.createStatement()) { @@ -102,8 +108,4 @@ public class MySQL extends Database { } } - @Override - public void backup() { - plugin.getLogger().info("Remember to make backups of your HuskHomes Database before updating the plugin!"); - } } diff --git a/bungeecord/src/main/java/me/william278/husksync/bungeecord/data/sql/SQLite.java b/bungeecord/src/main/java/me/william278/husksync/bungeecord/data/sql/SQLite.java index 6f49029d..9e0bb2c5 100644 --- a/bungeecord/src/main/java/me/william278/husksync/bungeecord/data/sql/SQLite.java +++ b/bungeecord/src/main/java/me/william278/husksync/bungeecord/data/sql/SQLite.java @@ -5,15 +5,9 @@ import me.william278.husksync.HuskSyncBungeeCord; import java.io.File; import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.StandardCopyOption; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; -import java.time.Instant; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; -import java.util.Locale; import java.util.logging.Level; public class SQLite extends Database { @@ -24,7 +18,8 @@ public class SQLite extends Database { "CREATE TABLE IF NOT EXISTS " + PLAYER_TABLE_NAME + " (" + "`id` integer PRIMARY KEY," + - "`uuid` char(36) NOT NULL UNIQUE" + + "`uuid` char(36) NOT NULL UNIQUE," + + "`username` varchar(16) NOT NULL" + ");", "CREATE TABLE IF NOT EXISTS " + DATA_TABLE_NAME + " (" + @@ -35,6 +30,7 @@ public class SQLite extends Database { "`ender_chest` longtext NOT NULL," + "`health` double NOT NULL," + "`max_health` double NOT NULL," + + "`health_scale` double NOT NULL," + "`hunger` integer NOT NULL," + "`saturation` float NOT NULL," + "`saturation_exhaustion` float NOT NULL," + @@ -98,7 +94,10 @@ public class SQLite extends Database { dataSource.setKeepaliveTime(hikariKeepAliveTime); dataSource.setConnectionTimeout(hikariConnectionTimeOut); dataSource.setPoolName(DATA_POOL_NAME); + } + @Override + public void createTables() { // Create tables try (Connection connection = dataSource.getConnection()) { try (Statement statement = connection.createStatement()) { @@ -118,23 +117,4 @@ public class SQLite extends Database { } } - @Override - public void backup() { - final String BACKUPS_FOLDER_NAME = "database-backups"; - final String backupFileName = DATABASE_NAME + "Backup_" + DateTimeFormatter.ofPattern("yyyy-MM-dd_HH-mm-ss-SS") - .withLocale(Locale.getDefault()) - .withZone(ZoneId.systemDefault()) - .format(Instant.now()).replaceAll(" ", "-") + ".db"; - final File databaseFile = new File(plugin.getDataFolder(), DATABASE_NAME + ".db"); - if (new File(plugin.getDataFolder(), BACKUPS_FOLDER_NAME).mkdirs()) { - plugin.getLogger().info("Created backups directory in HuskSync plugin data folder."); - } - final File backUpFile = new File(plugin.getDataFolder(), BACKUPS_FOLDER_NAME + File.separator + backupFileName); - try { - Files.copy(databaseFile.toPath(), backUpFile.toPath(), StandardCopyOption.REPLACE_EXISTING); - plugin.getLogger().info("Created a backup of your database."); - } catch (IOException iox) { - plugin.getLogger().log(Level.WARNING, "An error occurred making a database backup", iox); - } - } } diff --git a/bungeecord/src/main/java/me/william278/husksync/bungeecord/listener/BungeeEventListener.java b/bungeecord/src/main/java/me/william278/husksync/bungeecord/listener/BungeeEventListener.java index 56b24afe..cbcd8eb9 100644 --- a/bungeecord/src/main/java/me/william278/husksync/bungeecord/listener/BungeeEventListener.java +++ b/bungeecord/src/main/java/me/william278/husksync/bungeecord/listener/BungeeEventListener.java @@ -22,8 +22,8 @@ public class BungeeEventListener implements Listener { public void onPostLogin(PostLoginEvent event) { final ProxiedPlayer player = event.getPlayer(); ProxyServer.getInstance().getScheduler().runAsync(plugin, () -> { - // Ensure the player has data on SQL - DataManager.ensurePlayerExists(player.getUniqueId()); + // Ensure the player has data on SQL and that it is up-to-date + DataManager.ensurePlayerExists(player.getUniqueId(), player.getName()); // Get the player's data from SQL final PlayerData data = DataManager.getPlayerData(player.getUniqueId()); diff --git a/bungeecord/src/main/java/me/william278/husksync/bungeecord/listener/BungeeRedisListener.java b/bungeecord/src/main/java/me/william278/husksync/bungeecord/listener/BungeeRedisListener.java index 4c0c1102..59290228 100644 --- a/bungeecord/src/main/java/me/william278/husksync/bungeecord/listener/BungeeRedisListener.java +++ b/bungeecord/src/main/java/me/william278/husksync/bungeecord/listener/BungeeRedisListener.java @@ -1,10 +1,13 @@ package me.william278.husksync.bungeecord.listener; +import de.themoep.minedown.MineDown; import me.william278.husksync.HuskSyncBungeeCord; +import me.william278.husksync.MessageManager; import me.william278.husksync.PlayerData; +import me.william278.husksync.Settings; import me.william278.husksync.bungeecord.data.DataManager; +import me.william278.husksync.bungeecord.migrator.MPDBMigrator; import me.william278.husksync.redis.RedisListener; -import me.william278.husksync.Settings; import me.william278.husksync.redis.RedisMessage; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; @@ -29,23 +32,20 @@ public class BungeeRedisListener extends RedisListener { return cachedData; } - // If the cache does not contain player data: - DataManager.ensurePlayerExists(uuid); // Make sure the player is registered on MySQL - final PlayerData data = DataManager.getPlayerData(uuid); // Get their player data from MySQL DataManager.playerDataCache.updatePlayer(data); // Update the cache return data; // Return the data } /** - * Handle an incoming {@link me.william278.husksync.redis.RedisMessage} + * Handle an incoming {@link RedisMessage} * - * @param message The {@link me.william278.husksync.redis.RedisMessage} to handle + * @param message The {@link RedisMessage} to handle */ @Override - public void handleMessage(me.william278.husksync.redis.RedisMessage message) { + public void handleMessage(RedisMessage message) { // Ignore messages destined for Bukkit servers - if (message.getMessageTarget().targetServerType() != me.william278.husksync.Settings.ServerType.BUNGEECORD) { + if (message.getMessageTarget().targetServerType() != Settings.ServerType.BUNGEECORD) { return; } @@ -56,16 +56,22 @@ public class BungeeRedisListener extends RedisListener { ProxyServer.getInstance().getScheduler().runAsync(plugin, () -> { try { // Send the reply, serializing the message data - new me.william278.husksync.redis.RedisMessage(me.william278.husksync.redis.RedisMessage.MessageType.PLAYER_DATA_SET, - new me.william278.husksync.redis.RedisMessage.MessageTarget(me.william278.husksync.Settings.ServerType.BUKKIT, requestingPlayerUUID), - me.william278.husksync.redis.RedisMessage.serialize(getPlayerCachedData(requestingPlayerUUID))) + new RedisMessage(RedisMessage.MessageType.PLAYER_DATA_SET, + new RedisMessage.MessageTarget(Settings.ServerType.BUKKIT, requestingPlayerUUID), + RedisMessage.serialize(getPlayerCachedData(requestingPlayerUUID))) .send(); // Send an update to all bukkit servers removing the player from the requester cache - new me.william278.husksync.redis.RedisMessage(me.william278.husksync.redis.RedisMessage.MessageType.REQUEST_DATA_ON_JOIN, - new me.william278.husksync.redis.RedisMessage.MessageTarget(me.william278.husksync.Settings.ServerType.BUKKIT, null), - me.william278.husksync.redis.RedisMessage.RequestOnJoinUpdateType.REMOVE_REQUESTER.toString(), requestingPlayerUUID.toString()) + new RedisMessage(RedisMessage.MessageType.REQUEST_DATA_ON_JOIN, + new RedisMessage.MessageTarget(Settings.ServerType.BUKKIT, null), + RedisMessage.RequestOnJoinUpdateType.REMOVE_REQUESTER.toString(), requestingPlayerUUID.toString()) .send(); + + // Send synchronisation complete message + ProxiedPlayer player = ProxyServer.getInstance().getPlayer(requestingPlayerUUID); + if (player.isConnected()) { + player.sendMessage(new MineDown(MessageManager.getMessage("synchronisation_complete")).toComponent()); + } } catch (IOException e) { log(Level.SEVERE, "Failed to serialize data when replying to a data request"); e.printStackTrace(); @@ -77,7 +83,7 @@ public class BungeeRedisListener extends RedisListener { PlayerData playerData; final String serializedPlayerData = message.getMessageData(); try { - playerData = (PlayerData) me.william278.husksync.redis.RedisMessage.deserialize(serializedPlayerData); + playerData = (PlayerData) RedisMessage.deserialize(serializedPlayerData); } catch (IOException | ClassNotFoundException e) { log(Level.SEVERE, "Failed to deserialize PlayerData when handling a player update request"); e.printStackTrace(); @@ -92,10 +98,13 @@ public class BungeeRedisListener extends RedisListener { ProxiedPlayer player = ProxyServer.getInstance().getPlayer(playerData.getPlayerUUID()); if (player != null) { if (player.isConnected()) { - new me.william278.husksync.redis.RedisMessage(me.william278.husksync.redis.RedisMessage.MessageType.PLAYER_DATA_SET, - new me.william278.husksync.redis.RedisMessage.MessageTarget(Settings.ServerType.BUKKIT, playerData.getPlayerUUID()), + new RedisMessage(RedisMessage.MessageType.PLAYER_DATA_SET, + new RedisMessage.MessageTarget(Settings.ServerType.BUKKIT, playerData.getPlayerUUID()), RedisMessage.serialize(playerData)) .send(); + + // Send synchronisation complete message + player.sendMessage(new MineDown(MessageManager.getMessage("synchronisation_complete")).toComponent()); } } } catch (IOException e) { @@ -103,6 +112,64 @@ public class BungeeRedisListener extends RedisListener { e.printStackTrace(); } } + case CONNECTION_HANDSHAKE -> { + // Reply to a Bukkit server's connection handshake to complete the process + final UUID serverUUID = UUID.fromString(message.getMessageDataElements()[0]); + final boolean hasMySqlPlayerDataBridge = Boolean.parseBoolean(message.getMessageDataElements()[1]); + final String bukkitBrand = message.getMessageDataElements()[2]; + try { + new RedisMessage(RedisMessage.MessageType.CONNECTION_HANDSHAKE, + new RedisMessage.MessageTarget(Settings.ServerType.BUKKIT, null), + serverUUID.toString(), plugin.getProxy().getName()) + .send(); + HuskSyncBungeeCord.synchronisedServers.add(new HuskSyncBungeeCord.Server(serverUUID, hasMySqlPlayerDataBridge)); + log(Level.INFO, "Completed handshake with " + bukkitBrand + " server (" + serverUUID + ")"); + } catch (IOException e) { + log(Level.SEVERE, "Failed to serialize handshake message data"); + e.printStackTrace(); + } + } + case TERMINATE_HANDSHAKE -> { + // Terminate the handshake with a Bukkit server + final UUID serverUUID = UUID.fromString(message.getMessageDataElements()[0]); + final String bukkitBrand = message.getMessageDataElements()[1]; + + // Remove a server from the synchronised server list + HuskSyncBungeeCord.Server serverToRemove = null; + for (HuskSyncBungeeCord.Server server : HuskSyncBungeeCord.synchronisedServers) { + if (server.serverUUID().equals(serverUUID)) { + serverToRemove = server; + break; + } + } + HuskSyncBungeeCord.synchronisedServers.remove(serverToRemove); + log(Level.INFO, "Terminated the handshake with " + bukkitBrand + " server (" + serverUUID + ")"); + } + case DECODED_MPDB_DATA_SET -> { + // Deserialize the PlayerData received + PlayerData playerData; + final String serializedPlayerData = message.getMessageDataElements()[0]; + final String playerName = message.getMessageDataElements()[1]; + try { + playerData = (PlayerData) RedisMessage.deserialize(serializedPlayerData); + } catch (IOException | ClassNotFoundException e) { + log(Level.SEVERE, "Failed to deserialize PlayerData when handling incoming decoded MPDB data"); + e.printStackTrace(); + return; + } + + // Add the incoming data to the data to be saved + MPDBMigrator.incomingPlayerData.put(playerData, playerName); + + // Increment players migrated + MPDBMigrator.playersMigrated++; + plugin.getLogger().log(Level.INFO, "Migrated " + MPDBMigrator.playersMigrated + "/" + MPDBMigrator.migratedDataSent + " players."); + + // When all the data has been received, save it + if (MPDBMigrator.migratedDataSent == MPDBMigrator.playersMigrated) { + MPDBMigrator.loadIncomingData(); + } + } } } diff --git a/bungeecord/src/main/java/me/william278/husksync/bungeecord/migrator/MPDBMigrator.java b/bungeecord/src/main/java/me/william278/husksync/bungeecord/migrator/MPDBMigrator.java new file mode 100644 index 00000000..b5b86d0f --- /dev/null +++ b/bungeecord/src/main/java/me/william278/husksync/bungeecord/migrator/MPDBMigrator.java @@ -0,0 +1,278 @@ +package me.william278.husksync.bungeecord.migrator; + +import me.william278.husksync.HuskSyncBungeeCord; +import me.william278.husksync.PlayerData; +import me.william278.husksync.Settings; +import me.william278.husksync.bungeecord.data.DataManager; +import me.william278.husksync.bungeecord.data.sql.Database; +import me.william278.husksync.bungeecord.data.sql.MySQL; +import me.william278.husksync.migrator.MPDBPlayerData; +import me.william278.husksync.redis.RedisMessage; +import net.md_5.bungee.api.ProxyServer; + +import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.HashSet; +import java.util.UUID; +import java.util.logging.Level; + +/** + * Class to handle migration of data from MySQLPlayerDataBridge + *

+ * The migrator accesses and decodes MPDB's format directly. + * It does this by establishing a connection + */ +public class MPDBMigrator { + + public static int migratedDataSent = 0; + public static int playersMigrated = 0; + + private static final HuskSyncBungeeCord plugin = HuskSyncBungeeCord.getInstance(); + + public static HashMap incomingPlayerData; + + public static MigrationSettings migrationSettings = new MigrationSettings(); + private static Database sourceDatabase; + + private static HashSet mpdbPlayerData; + + public void start() { + if (ProxyServer.getInstance().getPlayers().size() > 0) { + plugin.getLogger().log(Level.WARNING, "Failed to start migration because there are players online. " + + "Your network has to be empty to migrate data for safety reasons."); + return; + } + + int synchronisedServersWithMpdb = 0; + for (HuskSyncBungeeCord.Server server : HuskSyncBungeeCord.synchronisedServers) { + if (server.hasMySqlPlayerDataBridge()) { + synchronisedServersWithMpdb++; + } + } + if (synchronisedServersWithMpdb < 1) { + plugin.getLogger().log(Level.WARNING, "Failed to start migration because at least one Spigot server must be online and have both HuskSync and MySqlPlayerDataBridge installed. " + + "Please start one Spigot server with HuskSync installed to begin migration."); + } + + migratedDataSent = 0; + playersMigrated = 0; + mpdbPlayerData = new HashSet<>(); + incomingPlayerData = new HashMap<>(); + final MigrationSettings settings = migrationSettings; + + // Get connection to source database + sourceDatabase = new MigratorMySQL(plugin, settings.sourceHost, settings.sourcePort, + settings.sourceDatabase, settings.sourceUsername, settings.sourcePassword); + sourceDatabase.load(); + if (sourceDatabase.isInactive()) { + plugin.getLogger().log(Level.WARNING, "Failed to establish connection to the origin MySQL database. " + + "Please check you have input the correct connection details and try again."); + return; + } + + ProxyServer.getInstance().getScheduler().runAsync(plugin, () -> { + prepareTargetDatabase(); + + getInventoryData(); + + getEnderChestData(); + + getExperienceData(); + + sendEncodedData(); + }); + } + + // Clear the new database out of current data + private void prepareTargetDatabase() { + plugin.getLogger().log(Level.INFO, "Preparing target database..."); + try (Connection connection = HuskSyncBungeeCord.getConnection()) { + try (PreparedStatement statement = connection.prepareStatement("DELETE FROM " + Database.PLAYER_TABLE_NAME + ";")) { + statement.executeUpdate(); + } + try (PreparedStatement statement = connection.prepareStatement("DELETE FROM " + Database.DATA_TABLE_NAME + ";")) { + statement.executeUpdate(); + } + } catch (SQLException e) { + plugin.getLogger().log(Level.SEVERE, "An exception occurred preparing the target database", e); + } finally { + plugin.getLogger().log(Level.INFO, "Finished preparing target database!"); + } + } + + private void getInventoryData() { + plugin.getLogger().log(Level.INFO, "Getting inventory data from MySQLPlayerDataBridge..."); + try (Connection connection = sourceDatabase.getConnection()) { + try (PreparedStatement statement = connection.prepareStatement("SELECT * FROM " + migrationSettings.inventoryDataTable + ";")) { + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + final UUID playerUUID = UUID.fromString(resultSet.getString("player_uuid")); + final String playerName = resultSet.getString("player_name"); + + MPDBPlayerData data = new MPDBPlayerData(playerUUID, playerName); + data.inventoryData = resultSet.getString("inventory"); + data.armorData = resultSet.getString("armor"); + + mpdbPlayerData.add(data); + } + } + } catch (SQLException e) { + plugin.getLogger().log(Level.SEVERE, "An exception occurred getting inventory data", e); + } finally { + plugin.getLogger().log(Level.INFO, "Finished getting inventory data from MySQLPlayerDataBridge"); + } + } + + private void getEnderChestData() { + plugin.getLogger().log(Level.INFO, "Getting ender chest data from MySQLPlayerDataBridge..."); + try (Connection connection = sourceDatabase.getConnection()) { + try (PreparedStatement statement = connection.prepareStatement("SELECT * FROM " + migrationSettings.enderChestDataTable + ";")) { + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + final UUID playerUUID = UUID.fromString(resultSet.getString("player_uuid")); + + for (MPDBPlayerData data : mpdbPlayerData) { + if (data.playerUUID.equals(playerUUID)) { + data.enderChestData = resultSet.getString("enderchest"); + break; + } + } + } + } + } catch (SQLException e) { + plugin.getLogger().log(Level.SEVERE, "An exception occurred getting ender chest", e); + } finally { + plugin.getLogger().log(Level.INFO, "Finished getting ender chest data from MySQLPlayerDataBridge"); + } + } + + private void getExperienceData() { + plugin.getLogger().log(Level.INFO, "Getting experience data from MySQLPlayerDataBridge..."); + try (Connection connection = sourceDatabase.getConnection()) { + try (PreparedStatement statement = connection.prepareStatement("SELECT * FROM " + migrationSettings.expDataTable + ";")) { + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + final UUID playerUUID = UUID.fromString(resultSet.getString("player_uuid")); + + for (MPDBPlayerData data : mpdbPlayerData) { + if (data.playerUUID.equals(playerUUID)) { + data.expLevel = resultSet.getInt("exp_lvl"); + data.expProgress = resultSet.getInt("exp"); + data.totalExperience = resultSet.getInt("total_exp"); + break; + } + } + } + } + } catch (SQLException e) { + plugin.getLogger().log(Level.SEVERE, "An exception occurred getting ender chest", e); + } finally { + plugin.getLogger().log(Level.INFO, "Finished getting experience data from MySQLPlayerDataBridge"); + } + } + + private void sendEncodedData() { + for (HuskSyncBungeeCord.Server processingServer : HuskSyncBungeeCord.synchronisedServers) { + if (processingServer.hasMySqlPlayerDataBridge()) { + for (MPDBPlayerData data : mpdbPlayerData) { + try { + new RedisMessage(RedisMessage.MessageType.DECODE_MPDB_DATA, + new RedisMessage.MessageTarget(Settings.ServerType.BUKKIT, null), + processingServer.serverUUID().toString(), + RedisMessage.serialize(data)) + .send(); + migratedDataSent++; + } catch (IOException e) { + plugin.getLogger().log(Level.SEVERE, "Failed to serialize encoded MPDB data", e); + } + } + plugin.getLogger().log(Level.INFO, "Finished dispatching encoded data for " + migratedDataSent + " players; please wait for conversion to finish"); + } + return; + } + } + + /** + * Load all incoming decoded MPDB data to cache / SQL + */ + public static void loadIncomingData() { + ProxyServer.getInstance().getScheduler().runAsync(plugin, () -> { + int playersSaved = 0; + plugin.getLogger().log(Level.INFO, "Saving data for " + playersMigrated + " players..."); + + for (PlayerData playerData : incomingPlayerData.keySet()) { + String playerName = incomingPlayerData.get(playerData); + + // Add the player to the MySQL table + DataManager.ensurePlayerExists(playerData.getPlayerUUID(), playerName); + + // Update the data in the cache and SQL + DataManager.updatePlayerData(playerData); + + playersSaved++; + plugin.getLogger().log(Level.INFO, "Saved data for " + playersSaved + "/" + playersMigrated + " players"); + } + + // Mark as done when done + plugin.getLogger().log(Level.INFO, """ + === MySQLPlayerDataBridge Migration Wizard ========== + + Migration complete! + + Successfully migrated data for %1%/%2% players. + + You should now uninstall MySQLPlayerDataBridge from + the rest of the Spigot servers, then restart them. + """.replaceAll("%1%", Integer.toString(MPDBMigrator.playersMigrated)) + .replaceAll("%2%", Integer.toString(MPDBMigrator.migratedDataSent))); + }); + } + + /** + * Class used to hold settings for the MPDB migration + */ + public static class MigrationSettings { + public String sourceHost; + public int sourcePort; + public String sourceDatabase; + public String sourceUsername; + public String sourcePassword; + + public String inventoryDataTable; + public String enderChestDataTable; + public String expDataTable; + + public MigrationSettings() { + sourceHost = "localhost"; + sourcePort = 3306; + sourceDatabase = "mpdb"; + sourceUsername = "root"; + sourcePassword = "pa55w0rd"; + + inventoryDataTable = "mpdb_inventory"; + enderChestDataTable = "mpdb_enderchest"; + expDataTable = "mpdb_experience"; + } + } + + /** + * MySQL class used for importing data from MPDB + */ + public static class MigratorMySQL extends MySQL { + public MigratorMySQL(HuskSyncBungeeCord instance, String host, int port, String database, String username, String password) { + super(instance); + super.host = host; + super.port = port; + super.database = database; + super.username = username; + super.password = password; + super.params = "?useSSL=false"; + super.dataPoolName = DATA_POOL_NAME + "Migrator"; + } + } + +} diff --git a/bungeecord/src/main/resources/bungee-config.yml b/bungeecord/src/main/resources/bungee-config.yml index 65c90bf9..1055e630 100644 --- a/bungeecord/src/main/resources/bungee-config.yml +++ b/bungeecord/src/main/resources/bungee-config.yml @@ -6,7 +6,7 @@ data_storage_settings: database_type: 'sqlite' mysql_settings: host: 'localhost' - port: 8123 + port: 3306 database: 'HuskSync' username: 'root' password: 'pa55w0rd' diff --git a/common/src/main/java/me/william278/husksync/MessageManager.java b/common/src/main/java/me/william278/husksync/MessageManager.java new file mode 100644 index 00000000..49bb9901 --- /dev/null +++ b/common/src/main/java/me/william278/husksync/MessageManager.java @@ -0,0 +1,28 @@ +package me.william278.husksync; + +import java.util.HashMap; + +public class MessageManager { + + private static HashMap messages = new HashMap<>(); + + public static void setMessages(HashMap newMessages) { + messages = new HashMap<>(newMessages); + } + + public static String getMessage(String messageId) { + return messages.get(messageId); + } + + public static StringBuilder PLUGIN_INFORMATION = new StringBuilder().append("[HuskSync](#00fb9a bold) [| %proxy_brand% Version %proxy_version% (%bukkit_brand% v%bukkit_version%)](#00fb9a)\n") + .append("[%plugin_description%](gray)\n") + .append("[• Author:](white) [William278](gray show_text=&7Click to pay a visit open_url=https://youtube.com/William27528)\n") + .append("[• Help Wiki:](white) [[Link]](#00fb9a show_text=&7Click to open link open_url=https://github.com/WiIIiam278/HuskSync/wiki/)\n") + .append("[• Report Issues:](white) [[Link]](#00fb9a show_text=&7Click to open link open_url=https://github.com/WiIIiam278/HuskSync/issues)\n") + .append("[• Support Discord:](white) [[Link]](#00fb9a show_text=&7Click to join open_url=https://discord.gg/tVYhJfyDWG)"); + + public static StringBuilder PLUGIN_STATUS = new StringBuilder().append("[HuskSync](#00fb9a bold) [| Current system status:](#00fb9a)\n") + .append("[• Connected servers:](white) [%1%](#00fb9a)") + .append("[• Cached player data:](white) [%2%](#00fb9a)"); + +} \ No newline at end of file diff --git a/common/src/main/java/me/william278/husksync/MessageStrings.java b/common/src/main/java/me/william278/husksync/MessageStrings.java deleted file mode 100644 index c91d9aa3..00000000 --- a/common/src/main/java/me/william278/husksync/MessageStrings.java +++ /dev/null @@ -1,16 +0,0 @@ -package me.william278.husksync; - -public class MessageStrings { - - public static final StringBuilder PLUGIN_INFORMATION = new StringBuilder().append("[HuskSync](#00fb9a bold) [| %proxy_brand% Version %proxy_version% (%bukkit_brand% v%bukkit_version%)](#00fb9a)\n") - .append("[%plugin_description%](gray)\n") - .append("[• Author:](white) [William278](gray show_text=&7Click to pay a visit open_url=https://youtube.com/William27528)\n") - .append("[• Help Wiki:](white) [[Link]](#00fb9a show_text=&7Click to open link open_url=https://github.com/WiIIiam278/HuskSync/wiki/)\n") - .append("[• Report Issues:](white) [[Link]](#00fb9a show_text=&7Click to open link open_url=https://github.com/WiIIiam278/HuskSync/issues)\n") - .append("[• Support Discord:](white) [[Link]](#00fb9a show_text=&7Click to join open_url=https://discord.gg/tVYhJfyDWG)"); - - public static final String ERROR_INVALID_SYNTAX = "[Error:](#ff3300) [Incorrect syntax. Usage: %1%](#ff7e5e)"; - - public static final String SYNCHRONISATION_COMPLETE = "[Data synchronised!](#00fb9a)"; - -} \ No newline at end of file diff --git a/common/src/main/java/me/william278/husksync/PlayerData.java b/common/src/main/java/me/william278/husksync/PlayerData.java index 8360bebb..51ab36b0 100644 --- a/common/src/main/java/me/william278/husksync/PlayerData.java +++ b/common/src/main/java/me/william278/husksync/PlayerData.java @@ -16,26 +16,27 @@ public class PlayerData implements Serializable { private final UUID dataVersionUUID; // Flag to indicate if the Bukkit server should use default data - private boolean useDefaultData = false; + public boolean useDefaultData = false; // Player data - private final String serializedInventory; - private final String serializedEnderChest; - private final double health; - private final double maxHealth; - private final int hunger; - private final float saturation; - private final float saturationExhaustion; - private final int selectedSlot; - private final String serializedEffectData; - private final int totalExperience; - private final int expLevel; - private final float expProgress; - private final String gameMode; - private final String serializedStatistics; - private final boolean isFlying; - private final String serializedAdvancements; - private final String serializedLocation; + private String serializedInventory; + private String serializedEnderChest; + private double health; + private double maxHealth; + private double healthScale; + private int hunger; + private float saturation; + private float saturationExhaustion; + private int selectedSlot; + private String serializedEffectData; + private int totalExperience; + private int expLevel; + private float expProgress; + private String gameMode; + private String serializedStatistics; + private boolean isFlying; + private String serializedAdvancements; + private String serializedLocation; /** * Constructor to create new PlayerData from a bukkit {@code Player}'s data @@ -45,6 +46,7 @@ public class PlayerData implements Serializable { * @param serializedEnderChest Their serialized ender chest * @param health Their health * @param maxHealth Their max health + * @param healthScale Their health scale * @param hunger Their hunger * @param saturation Their saturation * @param saturationExhaustion Their saturation exhaustion @@ -56,8 +58,8 @@ public class PlayerData implements Serializable { * @param gameMode Their game mode ({@code SURVIVAL}, {@code CREATIVE}, etc) * @param serializedStatistics Their serialized statistics data (Displayed in Statistics menu in ESC menu) */ - public PlayerData(UUID playerUUID, String serializedInventory, String serializedEnderChest, double health, - double maxHealth, int hunger, float saturation, float saturationExhaustion, int selectedSlot, + public PlayerData(UUID playerUUID, String serializedInventory, String serializedEnderChest, double health, double maxHealth, + double healthScale, int hunger, float saturation, float saturationExhaustion, int selectedSlot, String serializedStatusEffects, int totalExperience, int expLevel, float expProgress, String gameMode, String serializedStatistics, boolean isFlying, String serializedAdvancements, String serializedLocation) { this.dataVersionUUID = UUID.randomUUID(); @@ -66,6 +68,7 @@ public class PlayerData implements Serializable { this.serializedEnderChest = serializedEnderChest; this.health = health; this.maxHealth = maxHealth; + this.healthScale = healthScale; this.hunger = hunger; this.saturation = saturation; this.saturationExhaustion = saturationExhaustion; @@ -90,6 +93,7 @@ public class PlayerData implements Serializable { * @param serializedEnderChest Their serialized ender chest * @param health Their health * @param maxHealth Their max health + * @param healthScale Their health scale * @param hunger Their hunger * @param saturation Their saturation * @param saturationExhaustion Their saturation exhaustion @@ -102,7 +106,7 @@ public class PlayerData implements Serializable { * @param serializedStatistics Their serialized statistics data (Displayed in Statistics menu in ESC menu) */ public PlayerData(UUID playerUUID, UUID dataVersionUUID, String serializedInventory, String serializedEnderChest, - double health, double maxHealth, int hunger, float saturation, float saturationExhaustion, + double health, double maxHealth, double healthScale, int hunger, float saturation, float saturationExhaustion, int selectedSlot, String serializedStatusEffects, int totalExperience, int expLevel, float expProgress, String gameMode, String serializedStatistics, boolean isFlying, String serializedAdvancements, String serializedLocation) { @@ -112,6 +116,7 @@ public class PlayerData implements Serializable { this.serializedEnderChest = serializedEnderChest; this.health = health; this.maxHealth = maxHealth; + this.healthScale = healthScale; this.hunger = hunger; this.saturation = saturation; this.saturationExhaustion = saturationExhaustion; @@ -135,7 +140,7 @@ public class PlayerData implements Serializable { */ public static PlayerData DEFAULT_PLAYER_DATA(UUID playerUUID) { PlayerData data = new PlayerData(playerUUID, "", "", 20, - 20, 20, 10, 1, 0, + 20, 0, 20, 10, 1, 0, "", 0, 0, 0, "SURVIVAL", "", false, "", ""); data.useDefaultData = true; @@ -166,6 +171,8 @@ public class PlayerData implements Serializable { return maxHealth; } + public double getHealthScale() { return healthScale; } + public int getHunger() { return hunger; } @@ -222,4 +229,75 @@ public class PlayerData implements Serializable { return useDefaultData; } + public void setSerializedInventory(String serializedInventory) { + this.serializedInventory = serializedInventory; + } + + public void setSerializedEnderChest(String serializedEnderChest) { + this.serializedEnderChest = serializedEnderChest; + } + + public void setHealth(double health) { + this.health = health; + } + + public void setMaxHealth(double maxHealth) { + this.maxHealth = maxHealth; + } + + public void setHealthScale(double healthScale) { + this.healthScale = healthScale; + } + + public void setHunger(int hunger) { + this.hunger = hunger; + } + + public void setSaturation(float saturation) { + this.saturation = saturation; + } + + public void setSaturationExhaustion(float saturationExhaustion) { + this.saturationExhaustion = saturationExhaustion; + } + + public void setSelectedSlot(int selectedSlot) { + this.selectedSlot = selectedSlot; + } + + public void setSerializedEffectData(String serializedEffectData) { + this.serializedEffectData = serializedEffectData; + } + + public void setTotalExperience(int totalExperience) { + this.totalExperience = totalExperience; + } + + public void setExpLevel(int expLevel) { + this.expLevel = expLevel; + } + + public void setExpProgress(float expProgress) { + this.expProgress = expProgress; + } + + public void setGameMode(String gameMode) { + this.gameMode = gameMode; + } + + public void setSerializedStatistics(String serializedStatistics) { + this.serializedStatistics = serializedStatistics; + } + + public void setFlying(boolean flying) { + isFlying = flying; + } + + public void setSerializedAdvancements(String serializedAdvancements) { + this.serializedAdvancements = serializedAdvancements; + } + + public void setSerializedLocation(String serializedLocation) { + this.serializedLocation = serializedLocation; + } } diff --git a/common/src/main/java/me/william278/husksync/Settings.java b/common/src/main/java/me/william278/husksync/Settings.java index 3780d82a..3ef7bbc8 100644 --- a/common/src/main/java/me/william278/husksync/Settings.java +++ b/common/src/main/java/me/william278/husksync/Settings.java @@ -9,6 +9,9 @@ public class Settings { * General settings */ + // Messages language + public static String language; + // The type of THIS server (Bungee or Bukkit) public static ServerType serverType; diff --git a/common/src/main/java/me/william278/husksync/migrator/MPDBPlayerData.java b/common/src/main/java/me/william278/husksync/migrator/MPDBPlayerData.java new file mode 100644 index 00000000..2630edf1 --- /dev/null +++ b/common/src/main/java/me/william278/husksync/migrator/MPDBPlayerData.java @@ -0,0 +1,35 @@ +package me.william278.husksync.migrator; + +import java.io.Serializable; +import java.util.UUID; + +/** + * A class that stores player data taken from MPDB's database, that can then be converted into HuskSync's format + */ +public class MPDBPlayerData implements Serializable { + + /* + * Player information + */ + public final UUID playerUUID; + public final String playerName; + + /* + * Inventory, ender chest and armor data + */ + public String inventoryData; + public String armorData; + public String enderChestData; + + /* + * Experience data + */ + public int expLevel; + public float expProgress; + public int totalExperience; + + public MPDBPlayerData(UUID playerUUID, String playerName) { + this.playerUUID = playerUUID; + this.playerName = playerName; + } +} diff --git a/common/src/main/java/me/william278/husksync/redis/RedisListener.java b/common/src/main/java/me/william278/husksync/redis/RedisListener.java index 79f77543..d085c3ae 100644 --- a/common/src/main/java/me/william278/husksync/redis/RedisListener.java +++ b/common/src/main/java/me/william278/husksync/redis/RedisListener.java @@ -9,6 +9,11 @@ import java.util.logging.Level; public abstract class RedisListener { + /** + * Determines if the RedisListener is working properly + */ + public boolean isActiveAndEnabled; + /** * Handle an incoming {@link RedisMessage} * @param message The {@link RedisMessage} to handle @@ -33,6 +38,7 @@ public abstract class RedisListener { } jedis.connect(); if (jedis.isConnected()) { + isActiveAndEnabled = true; log(Level.INFO,"Enabled Redis listener successfully!"); new Thread(() -> jedis.subscribe(new JedisPubSub() { @Override @@ -51,6 +57,7 @@ public abstract class RedisListener { } }, RedisMessage.REDIS_CHANNEL), "Redis Subscriber").start(); } else { + isActiveAndEnabled = false; log(Level.SEVERE, "Failed to initialize the redis listener!"); } } diff --git a/common/src/main/java/me/william278/husksync/redis/RedisMessage.java b/common/src/main/java/me/william278/husksync/redis/RedisMessage.java index d61704a8..209aeee8 100644 --- a/common/src/main/java/me/william278/husksync/redis/RedisMessage.java +++ b/common/src/main/java/me/william278/husksync/redis/RedisMessage.java @@ -112,7 +112,42 @@ public class RedisMessage { /** * Sent by the proxy to ask the Bukkit server to send the full plugin information, contains information about the proxy brand and version */ - SEND_PLUGIN_INFORMATION + SEND_PLUGIN_INFORMATION, + + /** + * Sent by the proxy to show a player the contents of another player's inventory, contains their username and {@link PlayerData} + */ + OPEN_INVENTORY, + + /** + * Sent by the proxy to show a player the contents of another player's ender chest, contains their username and {@link PlayerData} + */ + OPEN_ENDER_CHEST, + + /** + * Sent by both the proxy and bukkit servers to confirm cross-server communication has been established + */ + CONNECTION_HANDSHAKE, + + /** + * Sent by both the proxy and bukkit servers to terminate communications (if a bukkit / the proxy goes offline) + */ + TERMINATE_HANDSHAKE, + + /** + * Sent by a proxy to a bukkit server to decode MPDB data + */ + DECODE_MPDB_DATA, + + /** + * Sent by a bukkit server back to the proxy with the correctly decoded MPDB data + */ + DECODED_MPDB_DATA_SET, + + /** + * Sent by the proxy to a bukkit server to initiate a reload + */ + RELOAD_CONFIG } public enum RequestOnJoinUpdateType { diff --git a/common/src/main/resources/bungee.yml b/common/src/main/resources/bungee.yml index 673ea597..a0966277 100644 --- a/common/src/main/resources/bungee.yml +++ b/common/src/main/resources/bungee.yml @@ -2,7 +2,7 @@ name: HuskSync version: @version@ main: me.william278.husksync.HuskSyncBungeeCord author: William278 -description: 'Synchronize data cross-server' +description: 'A modern, cross-server player data synchronisation system' libraries: - mysql:mysql-connector-java:8.0.25 - org.xerial:sqlite-jdbc:3.36.0.3 \ No newline at end of file diff --git a/common/src/main/resources/languages/en-gb.yml b/common/src/main/resources/languages/en-gb.yml new file mode 100644 index 00000000..1eebc2ee --- /dev/null +++ b/common/src/main/resources/languages/en-gb.yml @@ -0,0 +1,13 @@ +synchronisation_complete: '[Data synchronised!](#00fb9a)' +viewing_inventory_of: '[Viewing the inventory of](#00fb9a) [%1%](#00fb9a bold)' +viewing_ender_chest_of: '[Viewing the ender chest of](#00fb9a) [%1%](#00fb9a bold)' +reload_complete: '[HuskSync](#00fb9a bold) [| Reloaded config and message files.](#00fb9a)' +error_invalid_syntax: '[Error:](#ff3300) [Incorrect syntax. Usage: %1%](#ff7e5e)' +error_invalid_player: '[Error:](#ff3300) [Could not find that player](#ff7e5e)' +error_no_permission: '[Error:](#ff3300) [You do not have permission to execute this command](#ff7e5e)' +error_cannot_view_inventory_online: '[Error:](#ff3300) [You can''t access the inventory of an online player through HuskSync](#ff7e5e)' +error_cannot_view_ender_chest_online: '[Error:](#ff3300) [You can''t access the ender chest of an online player through HuskSync](#ff7e5e)' +error_cannot_view_own_inventory: '[Error:](#ff3300) [You can''t access your own inventory!](#ff7e5e)' +error_cannot_view_own_ender_chest: '[Error:](#ff3300) [You can''t access your own ender chest!](#ff7e5e)' +error_console_command_only: '[Error:](#ff3300) [That command can only be run through the %1% console](#ff7e5e)' +error_no_servers_proxied: '[Error:](#ff3300) [Failed to process operation; no servers are online that have HuskSync installed.\nPlease ensure HuskSync is installed on both the Proxy server and all servers you wish to synchronise data between](#ff7e5e)' \ No newline at end of file diff --git a/common/src/main/resources/plugin.yml b/common/src/main/resources/plugin.yml index e533b94c..30118be1 100644 --- a/common/src/main/resources/plugin.yml +++ b/common/src/main/resources/plugin.yml @@ -1,6 +1,7 @@ -name: CrossServerSync +name: HuskSync version: @version@ main: me.william278.husksync.HuskSyncBukkit api-version: 1.16 author: William278 -description: 'Synchronize data cross-server' \ No newline at end of file +description: 'A modern, cross-server player data synchronisation system' +softdepend: [MysqlPlayerDataBridge] \ No newline at end of file diff --git a/images/banner-graphic.png b/images/banner-graphic.png new file mode 100644 index 0000000000000000000000000000000000000000..5c78212118bea807e3cff58344476d414772c52c GIT binary patch literal 68460 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

    hF;p{X7|BrD?0tzYp|o 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 z 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

    u5++>H#=#G~5M2+Y0f{*aQQVK~nIz#ww*S&I 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 b^YDz5@He?MRkq3#;E(KmC8+`ly;uJaouuHA literal 186874 zcmZ^~1yq!66E_ZsfDxNo7>vk2|ViFaiP?K~h9m*;#il4W<6|`q={pNyD$Fj4e*e$=-@0!akTEkzdiO zfAnM#5$(o&oBW2wx91IAp@=VGXlO(sD)8SzaoOGyu?tOGEx$y0ANV^T!Vibirh&in zY4EhoWvqjt=Jk`I1Kq{pRQnesf}XeZ%Ls^=e?J*mG|Gk1oci|_$A@t14B6+MPyhWN zObHyHAI8Jb+hxWGFZnU%-)N}b2&mrPFOkzd*3n!KGOQbaV<-O|#0#4S8MZnc&{-&q zfGmW7tdB#ZUC#_7{f_jXu@HRNjEACc5z+q6>a&FDz4m-aQ=bZqfE0q|y(Sq>RQ}Jq zM_7oFd!Lt;awV`xBM3kIZ!rn&+hYYBm7OuX+`tUL$5#>oN}aSDs^Nox`iB|;W{`n9 zg#33tR0PBreu-^7@9wVG|GX>I?vL=2B!&+G83~vXjOmUP4e8J`7{Ejp0&^ltfacyl zK1M*wqG+!wFd50tO68+M`}-;ak}##s&iFe9I~0_^`xkOX6@vR4m$4`TTd@bmsb~9V zj`y~r za#RrBlMjfGuS5YlKK}Lo(;MK&1mp;?SeDbRH~%bZ7x`mB?=GGHF`zo&r~V-bJBR+J zH7sh6*702)0op4-m--wKlgy)@wABV){PR0XBusur9}%{H1OSc(BbK*y`Ud4V+x)u* z?-&FMjDzQx2tMC&01LYz@xJo=J4F|z_qe4k)-v+r48TW%05R7@nn05sPzC~$4;a{6 z@Ru%%M;QX&W04`+FaEI<5K?z2ZqECF7XijUlivMjqu#(qQScBy{2eR`nCkcv>9aF1 z(mOy(v36Zse=Sr9OoJSX&jgAq`ULuS$xALssrmbBu-J4`>Sw5br-;@7Hu-HmY5`CS zE3kL!6LW8@fA(|fk01`W5y3$Jchv|!;ZFJd06>pBM3g~$i8GQfpfMvcksS* z}OwdU*r~=Q-n0 zyuS48Omo0<_CeX$n&m&mU&M=%^ zaB}AK?5b?(dQSbQ`F1Ku<_lqeDwHxbrM2h6>h8Qnn-qhvnkt$Tc5>WHI(BxC&q0`e-w5d*9q0ZEr^NeyN|MTZW$_PJ+sdW%MM_5QVf^iEMCE=-72YP_!+4~}>ONd<}h0BDP zm*2egD2F#h$Fj-f_C%7uuhr-GuUG4zU4IliZibI%6drQuoObJdcjh^}8$3#~M!_>Y zGoQ+giTP^Dy@&J3iYc5pU$5P_K&39lfV2H#6W3C6)L2>#%#rRfUY`1m6~<;dN# z&b<~%*Y7VjD(U@n`0{wQNR7!KH$Rr|8VOMlTSAR}7_d##zPNYQhA?bi=cCN?&4LV1 zI5}%L4+8QK-yx(}y^>6&SUF^-)>67|&hBN6^`Za*Tjyi+V3h^OD?pqPSjI}i?$a>a zp9IU9ENf$e;W=w8eJ|v!&r&{;mD2Bg(?yTM-IV;p@d40C6=y(0KOzunn>zptq`ow{HTLx4L*`-|v!H);av8T(a z^QX&mI@KN*BZZti#hc%Z(cATN;81z1vDS#~PBH!m+6Wg*snNRcxsD||EyW<6Zu>v2ZcHBB_UT_pSwWzaCsF(b zlDr!u`CpVGs0$|Cj*dq($0x#J24sTP@8=GJ3m&l8u%(g1CK`

    MPQkE=D%>JaxeH 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 AYybcN