From 7bb6495cfa86156c0d178548d89b5b62076dffdf Mon Sep 17 00:00:00 2001 From: HarvelsX Date: Sat, 11 Dec 2021 22:25:12 +0300 Subject: [PATCH] Remove use MPDB & internal migrator; TODO: create migration plugin; --- bukkit/build.gradle | 1 - .../william278/husksync/HuskSyncBukkit.java | 9 -- .../bukkit/migrator/MPDBDeserializer.java | 100 ------------------ .../husksync/migrator/MPDBPlayerData.java | 35 ------ 4 files changed, 145 deletions(-) delete mode 100644 bukkit/src/main/java/me/william278/husksync/bukkit/migrator/MPDBDeserializer.java delete mode 100644 common/src/main/java/me/william278/husksync/migrator/MPDBPlayerData.java diff --git a/bukkit/build.gradle b/bukkit/build.gradle index b6858d4c..72b29d5d 100644 --- a/bukkit/build.gradle +++ b/bukkit/build.gradle @@ -7,7 +7,6 @@ dependencies { implementation 'org.bstats:bstats-bukkit:2.2.1' implementation 'de.themoep:minedown:1.7.1-SNAPSHOT' - compileOnly 'net.craftersland.data:bridge:4.0.1' 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 a654e082..f7b99672 100644 --- a/bukkit/src/main/java/me/william278/husksync/HuskSyncBukkit.java +++ b/bukkit/src/main/java/me/william278/husksync/HuskSyncBukkit.java @@ -6,7 +6,6 @@ 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.BukkitEventListener; -import me.william278.husksync.bukkit.migrator.MPDBDeserializer; import me.william278.husksync.redis.RedisMessage; import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; @@ -104,14 +103,6 @@ public final class HuskSyncBukkit extends JavaPlugin { new BukkitUpdateChecker().logToConsole(); } - // 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(); 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 deleted file mode 100644 index f2709cf9..00000000 --- a/bukkit/src/main/java/me/william278/husksync/bukkit/migrator/MPDBDeserializer.java +++ /dev/null @@ -1,100 +0,0 @@ -package me.william278.husksync.bukkit.migrator; - -import me.william278.husksync.HuskSyncBukkit; -import me.william278.husksync.PlayerData; -import me.william278.husksync.bukkit.util.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.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 contents - Inventory inventory = Bukkit.createInventory(null, InventoryType.PLAYER); - if (!mpdbPlayerData.inventoryData.isEmpty() && !mpdbPlayerData.inventoryData.equalsIgnoreCase("none")) { - PlayerSetter.setInventory(inventory, getItemStackArrayFromMPDBBase64String(mpdbPlayerData.inventoryData)); - } - - // Set armor (if there is data; MPDB stores empty data with literally the word "none". Obviously.) - int armorSlot = 36; - if (!mpdbPlayerData.armorData.isEmpty() && !mpdbPlayerData.armorData.equalsIgnoreCase("none")) { - ItemStack[] armorItems = getItemStackArrayFromMPDBBase64String(mpdbPlayerData.armorData); - for (ItemStack armorPiece : armorItems) { - if (armorPiece != null) { - inventory.setItem(armorSlot, armorPiece); - } - armorSlot++; - } - - } - - // Now apply the contents and clear the temporary inventory variable - playerData.setSerializedInventory(DataSerializer.serializeInventory(inventory.getContents())); - - // Set ender chest (again, if there is data) - ItemStack[] enderChestData; - if (!mpdbPlayerData.enderChestData.isEmpty() && !mpdbPlayerData.enderChestData.equalsIgnoreCase("none")) { - enderChestData = getItemStackArrayFromMPDBBase64String(mpdbPlayerData.enderChestData); - } else { - enderChestData = new ItemStack[0]; - } - playerData.setSerializedEnderChest(DataSerializer.serializeInventory(enderChestData)); - - // Set experience - playerData.setExpLevel(mpdbPlayerData.expLevel); - playerData.setExpProgress(mpdbPlayerData.expProgress); - playerData.setTotalExperience(mpdbPlayerData.totalExperience); - } catch (Exception 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 InvocationTargetException If an error occurs during decoding - * @throws IllegalAccessException If an error occurs during decoding - */ - public static ItemStack[] getItemStackArrayFromMPDBBase64String(String data) throws InvocationTargetException, IllegalAccessException { - if (data.isEmpty()) { - return new ItemStack[0]; - } - return mySqlPlayerDataBridge.getItemStackSerializer().fromBase64(data); - } -} diff --git a/common/src/main/java/me/william278/husksync/migrator/MPDBPlayerData.java b/common/src/main/java/me/william278/husksync/migrator/MPDBPlayerData.java deleted file mode 100644 index 2630edf1..00000000 --- a/common/src/main/java/me/william278/husksync/migrator/MPDBPlayerData.java +++ /dev/null @@ -1,35 +0,0 @@ -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; - } -}