Rename the class back to DataSerializer to prevent incompatibility with serialized 1.0.1 data

feat/data-edit-commands
William 3 years ago
parent 8ff87c3c19
commit 5736abc6ba

@ -19,7 +19,7 @@ import java.io.Serializable;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class PlayerSerializer { public class DataSerializer {
/** /**
* Returns a serialized array of {@link ItemStack}s * Returns a serialized array of {@link ItemStack}s
@ -181,12 +181,12 @@ public class PlayerSerializer {
return serializedPotionEffect != null ? new PotionEffect((Map<String, Object>) serializedPotionEffect) : null; return serializedPotionEffect != null ? new PotionEffect((Map<String, Object>) serializedPotionEffect) : null;
} }
public static PlayerSerializer.PlayerLocation deserializePlayerLocationData(String serializedLocationData) throws IOException { public static DataSerializer.PlayerLocation deserializePlayerLocationData(String serializedLocationData) throws IOException {
if (serializedLocationData.isEmpty()) { if (serializedLocationData.isEmpty()) {
return null; return null;
} }
try { try {
return (PlayerSerializer.PlayerLocation) RedisMessage.deserialize(serializedLocationData); return (DataSerializer.PlayerLocation) RedisMessage.deserialize(serializedLocationData);
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
throw new IOException("Unable to decode class type.", e); throw new IOException("Unable to decode class type.", e);
} }
@ -194,7 +194,7 @@ public class PlayerSerializer {
public static String getSerializedLocation(Player player) throws IOException { public static String getSerializedLocation(Player player) throws IOException {
final Location playerLocation = player.getLocation(); final Location playerLocation = player.getLocation();
return RedisMessage.serialize(new PlayerSerializer.PlayerLocation(playerLocation.getX(), playerLocation.getY(), playerLocation.getZ(), return RedisMessage.serialize(new DataSerializer.PlayerLocation(playerLocation.getX(), playerLocation.getY(), playerLocation.getZ(),
playerLocation.getYaw(), playerLocation.getPitch(), player.getWorld().getName(), player.getWorld().getEnvironment())); playerLocation.getYaw(), playerLocation.getPitch(), player.getWorld().getName(), player.getWorld().getEnvironment()));
} }
@ -203,12 +203,12 @@ public class PlayerSerializer {
} }
@SuppressWarnings("unchecked") // Ignore the unchecked cast here @SuppressWarnings("unchecked") // Ignore the unchecked cast here
public static ArrayList<PlayerSerializer.AdvancementRecord> deserializeAdvancementData(String serializedAdvancementData) throws IOException { public static ArrayList<DataSerializer.AdvancementRecord> deserializeAdvancementData(String serializedAdvancementData) throws IOException {
if (serializedAdvancementData.isEmpty()) { if (serializedAdvancementData.isEmpty()) {
return new ArrayList<>(); return new ArrayList<>();
} }
try { try {
return (ArrayList<PlayerSerializer.AdvancementRecord>) RedisMessage.deserialize(serializedAdvancementData); return (ArrayList<DataSerializer.AdvancementRecord>) RedisMessage.deserialize(serializedAdvancementData);
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
throw new IOException("Unable to decode class type.", e); throw new IOException("Unable to decode class type.", e);
} }
@ -216,13 +216,13 @@ public class PlayerSerializer {
public static String getSerializedAdvancements(Player player) throws IOException { public static String getSerializedAdvancements(Player player) throws IOException {
Iterator<Advancement> serverAdvancements = Bukkit.getServer().advancementIterator(); Iterator<Advancement> serverAdvancements = Bukkit.getServer().advancementIterator();
ArrayList<PlayerSerializer.AdvancementRecord> advancementData = new ArrayList<>(); ArrayList<DataSerializer.AdvancementRecord> advancementData = new ArrayList<>();
while (serverAdvancements.hasNext()) { while (serverAdvancements.hasNext()) {
final AdvancementProgress progress = player.getAdvancementProgress(serverAdvancements.next()); final AdvancementProgress progress = player.getAdvancementProgress(serverAdvancements.next());
final NamespacedKey advancementKey = progress.getAdvancement().getKey(); final NamespacedKey advancementKey = progress.getAdvancement().getKey();
final ArrayList<String> awardedCriteria = new ArrayList<>(progress.getAwardedCriteria()); final ArrayList<String> awardedCriteria = new ArrayList<>(progress.getAwardedCriteria());
advancementData.add(new PlayerSerializer.AdvancementRecord(advancementKey.getNamespace() + ":" + advancementKey.getKey(), awardedCriteria)); advancementData.add(new DataSerializer.AdvancementRecord(advancementKey.getNamespace() + ":" + advancementKey.getKey(), awardedCriteria));
} }
return RedisMessage.serialize(advancementData); return RedisMessage.serialize(advancementData);
@ -232,12 +232,12 @@ public class PlayerSerializer {
ArrayList<String> awardedAdvancementCriteria) implements Serializable { ArrayList<String> awardedAdvancementCriteria) implements Serializable {
} }
public static PlayerSerializer.StatisticData deserializeStatisticData(String serializedStatisticData) throws IOException { public static DataSerializer.StatisticData deserializeStatisticData(String serializedStatisticData) throws IOException {
if (serializedStatisticData.isEmpty()) { if (serializedStatisticData.isEmpty()) {
return new PlayerSerializer.StatisticData(new HashMap<>(), new HashMap<>(), new HashMap<>(), new HashMap<>()); return new DataSerializer.StatisticData(new HashMap<>(), new HashMap<>(), new HashMap<>(), new HashMap<>());
} }
try { try {
return (PlayerSerializer.StatisticData) RedisMessage.deserialize(serializedStatisticData); return (DataSerializer.StatisticData) RedisMessage.deserialize(serializedStatisticData);
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
throw new IOException("Unable to decode class type.", e); throw new IOException("Unable to decode class type.", e);
} }
@ -275,7 +275,7 @@ public class PlayerSerializer {
} }
} }
PlayerSerializer.StatisticData statisticData = new PlayerSerializer.StatisticData(untypedStatisticValues, blockStatisticValues, itemStatisticValues, entityStatisticValues); DataSerializer.StatisticData statisticData = new DataSerializer.StatisticData(untypedStatisticValues, blockStatisticValues, itemStatisticValues, entityStatisticValues);
return RedisMessage.serialize(statisticData); return RedisMessage.serialize(statisticData);
} }

@ -49,7 +49,7 @@ public class DataViewer {
// Get and update the PlayerData with the new item data // Get and update the PlayerData with the new item data
PlayerData playerData = dataView.playerData(); PlayerData playerData = dataView.playerData();
String serializedItemData = PlayerSerializer.serializeInventory(inventory.getContents()); String serializedItemData = DataSerializer.serializeInventory(inventory.getContents());
switch (dataView.inventoryType()) { switch (dataView.inventoryType()) {
case INVENTORY -> playerData.setSerializedInventory(serializedItemData); case INVENTORY -> playerData.setSerializedInventory(serializedItemData);
case ENDER_CHEST -> playerData.setSerializedEnderChest(serializedItemData); case ENDER_CHEST -> playerData.setSerializedEnderChest(serializedItemData);
@ -106,8 +106,8 @@ public class DataViewer {
*/ */
public ItemStack[] getDeserializedData() throws IOException, ClassNotFoundException { public ItemStack[] getDeserializedData() throws IOException, ClassNotFoundException {
return switch (inventoryType) { return switch (inventoryType) {
case INVENTORY -> PlayerSerializer.deserializeInventory(playerData.getSerializedInventory()); case INVENTORY -> DataSerializer.deserializeInventory(playerData.getSerializedInventory());
case ENDER_CHEST -> PlayerSerializer.deserializeInventory(playerData.getSerializedEnderChest()); case ENDER_CHEST -> DataSerializer.deserializeInventory(playerData.getSerializedEnderChest());
}; };
} }
} }

@ -3,7 +3,7 @@ package me.william278.husksync.bukkit.migrator;
import me.william278.husksync.HuskSyncBukkit; import me.william278.husksync.HuskSyncBukkit;
import me.william278.husksync.PlayerData; import me.william278.husksync.PlayerData;
import me.william278.husksync.bukkit.util.PlayerSetter; import me.william278.husksync.bukkit.util.PlayerSetter;
import me.william278.husksync.bukkit.data.PlayerSerializer; import me.william278.husksync.bukkit.data.DataSerializer;
import me.william278.husksync.migrator.MPDBPlayerData; import me.william278.husksync.migrator.MPDBPlayerData;
import net.craftersland.data.bridge.PD; import net.craftersland.data.bridge.PD;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -61,7 +61,7 @@ public class MPDBDeserializer {
} }
// Now apply the contents and clear the temporary inventory variable // Now apply the contents and clear the temporary inventory variable
playerData.setSerializedInventory(PlayerSerializer.serializeInventory(inventory.getContents())); playerData.setSerializedInventory(DataSerializer.serializeInventory(inventory.getContents()));
// Set ender chest (again, if there is data) // Set ender chest (again, if there is data)
ItemStack[] enderChestData; ItemStack[] enderChestData;
@ -70,7 +70,7 @@ public class MPDBDeserializer {
} else { } else {
enderChestData = new ItemStack[0]; enderChestData = new ItemStack[0];
} }
playerData.setSerializedEnderChest(PlayerSerializer.serializeInventory(enderChestData)); playerData.setSerializedEnderChest(DataSerializer.serializeInventory(enderChestData));
// Set experience // Set experience
playerData.setExpLevel(mpdbPlayerData.expLevel); playerData.setExpLevel(mpdbPlayerData.expLevel);

@ -5,7 +5,7 @@ import me.william278.husksync.PlayerData;
import me.william278.husksync.Settings; import me.william278.husksync.Settings;
import me.william278.husksync.api.events.SyncCompleteEvent; import me.william278.husksync.api.events.SyncCompleteEvent;
import me.william278.husksync.api.events.SyncEvent; import me.william278.husksync.api.events.SyncEvent;
import me.william278.husksync.bukkit.data.PlayerSerializer; import me.william278.husksync.bukkit.data.DataSerializer;
import me.william278.husksync.redis.RedisMessage; import me.william278.husksync.redis.RedisMessage;
import org.bukkit.*; import org.bukkit.*;
import org.bukkit.advancement.Advancement; import org.bukkit.advancement.Advancement;
@ -37,8 +37,8 @@ public class PlayerSetter {
*/ */
private static String getNewSerializedPlayerData(Player player) throws IOException { private static String getNewSerializedPlayerData(Player player) throws IOException {
return RedisMessage.serialize(new PlayerData(player.getUniqueId(), return RedisMessage.serialize(new PlayerData(player.getUniqueId(),
PlayerSerializer.serializeInventory(player.getInventory().getContents()), DataSerializer.serializeInventory(player.getInventory().getContents()),
PlayerSerializer.serializeInventory(player.getEnderChest().getContents()), DataSerializer.serializeInventory(player.getEnderChest().getContents()),
player.getHealth(), player.getHealth(),
Objects.requireNonNull(player.getAttribute(Attribute.GENERIC_MAX_HEALTH)).getBaseValue(), Objects.requireNonNull(player.getAttribute(Attribute.GENERIC_MAX_HEALTH)).getBaseValue(),
player.getHealthScale(), player.getHealthScale(),
@ -46,15 +46,15 @@ public class PlayerSetter {
player.getSaturation(), player.getSaturation(),
player.getExhaustion(), player.getExhaustion(),
player.getInventory().getHeldItemSlot(), player.getInventory().getHeldItemSlot(),
PlayerSerializer.serializePotionEffects(getPlayerPotionEffects(player)), DataSerializer.serializePotionEffects(getPlayerPotionEffects(player)),
player.getTotalExperience(), player.getTotalExperience(),
player.getLevel(), player.getLevel(),
player.getExp(), player.getExp(),
player.getGameMode().toString(), player.getGameMode().toString(),
PlayerSerializer.getSerializedStatisticData(player), DataSerializer.getSerializedStatisticData(player),
player.isFlying(), player.isFlying(),
PlayerSerializer.getSerializedAdvancements(player), DataSerializer.getSerializedAdvancements(player),
PlayerSerializer.getSerializedLocation(player))); DataSerializer.getSerializedLocation(player)));
} }
/** /**
@ -139,14 +139,14 @@ public class PlayerSetter {
// Set the player's data from the PlayerData // Set the player's data from the PlayerData
try { try {
if (Settings.syncAdvancements) { if (Settings.syncAdvancements) {
setPlayerAdvancements(player, PlayerSerializer.deserializeAdvancementData(data.getSerializedAdvancements()), data); setPlayerAdvancements(player, DataSerializer.deserializeAdvancementData(data.getSerializedAdvancements()), data);
} }
if (Settings.syncInventories) { if (Settings.syncInventories) {
setPlayerInventory(player, PlayerSerializer.deserializeInventory(data.getSerializedInventory())); setPlayerInventory(player, DataSerializer.deserializeInventory(data.getSerializedInventory()));
player.getInventory().setHeldItemSlot(data.getSelectedSlot()); player.getInventory().setHeldItemSlot(data.getSelectedSlot());
} }
if (Settings.syncEnderChests) { if (Settings.syncEnderChests) {
setPlayerEnderChest(player, PlayerSerializer.deserializeInventory(data.getSerializedEnderChest())); setPlayerEnderChest(player, DataSerializer.deserializeInventory(data.getSerializedEnderChest()));
} }
if (Settings.syncHealth) { if (Settings.syncHealth) {
player.setHealthScale(data.getHealthScale() <= 0 ? data.getHealthScale() : 20D); player.setHealthScale(data.getHealthScale() <= 0 ? data.getHealthScale() : 20D);
@ -163,17 +163,17 @@ public class PlayerSetter {
setPlayerExperience(player, data); setPlayerExperience(player, data);
} }
if (Settings.syncPotionEffects) { if (Settings.syncPotionEffects) {
setPlayerPotionEffects(player, PlayerSerializer.deserializePotionEffects(data.getSerializedEffectData())); setPlayerPotionEffects(player, DataSerializer.deserializePotionEffects(data.getSerializedEffectData()));
} }
if (Settings.syncStatistics) { if (Settings.syncStatistics) {
setPlayerStatistics(player, PlayerSerializer.deserializeStatisticData(data.getSerializedStatistics())); setPlayerStatistics(player, DataSerializer.deserializeStatisticData(data.getSerializedStatistics()));
} }
if (Settings.syncGameMode) { if (Settings.syncGameMode) {
player.setGameMode(GameMode.valueOf(data.getGameMode())); player.setGameMode(GameMode.valueOf(data.getGameMode()));
} }
if (Settings.syncLocation) { if (Settings.syncLocation) {
player.setFlying(player.getAllowFlight() && data.isFlying()); player.setFlying(player.getAllowFlight() && data.isFlying());
setPlayerLocation(player, PlayerSerializer.deserializePlayerLocationData(data.getSerializedLocation())); setPlayerLocation(player, DataSerializer.deserializePlayerLocationData(data.getSerializedLocation()));
} }
// Handle the SyncCompleteEvent // Handle the SyncCompleteEvent
@ -240,9 +240,9 @@ public class PlayerSetter {
* Update a player's advancements and progress to match the advancementData * Update a player's advancements and progress to match the advancementData
* *
* @param player The player to set the advancements of * @param player The player to set the advancements of
* @param advancementData The ArrayList of {@link PlayerSerializer.AdvancementRecord}s to set * @param advancementData The ArrayList of {@link DataSerializer.AdvancementRecord}s to set
*/ */
private static void setPlayerAdvancements(Player player, ArrayList<PlayerSerializer.AdvancementRecord> advancementData, PlayerData data) { private static void setPlayerAdvancements(Player player, ArrayList<DataSerializer.AdvancementRecord> advancementData, PlayerData data) {
// Temporarily disable advancement announcing if needed // Temporarily disable advancement announcing if needed
boolean announceAdvancementUpdate = false; boolean announceAdvancementUpdate = false;
if (Boolean.TRUE.equals(player.getWorld().getGameRuleValue(GameRule.ANNOUNCE_ADVANCEMENTS))) { if (Boolean.TRUE.equals(player.getWorld().getGameRuleValue(GameRule.ANNOUNCE_ADVANCEMENTS))) {
@ -260,7 +260,7 @@ public class PlayerSetter {
boolean correctExperienceCheck = false; // Determines whether the experience might have changed warranting an update boolean correctExperienceCheck = false; // Determines whether the experience might have changed warranting an update
Advancement advancement = serverAdvancements.next(); Advancement advancement = serverAdvancements.next();
AdvancementProgress playerProgress = player.getAdvancementProgress(advancement); AdvancementProgress playerProgress = player.getAdvancementProgress(advancement);
for (PlayerSerializer.AdvancementRecord record : advancementData) { for (DataSerializer.AdvancementRecord record : advancementData) {
// If the advancement is one on the data // If the advancement is one on the data
if (record.advancementKey().equals(advancement.getKey().getNamespace() + ":" + advancement.getKey().getKey())) { if (record.advancementKey().equals(advancement.getKey().getNamespace() + ":" + advancement.getKey().getKey())) {
@ -303,9 +303,9 @@ public class PlayerSetter {
* Set a player's statistics (in the Statistic menu) * Set a player's statistics (in the Statistic menu)
* *
* @param player The player to set the statistics of * @param player The player to set the statistics of
* @param statisticData The {@link PlayerSerializer.StatisticData} to set * @param statisticData The {@link DataSerializer.StatisticData} to set
*/ */
private static void setPlayerStatistics(Player player, PlayerSerializer.StatisticData statisticData) { private static void setPlayerStatistics(Player player, DataSerializer.StatisticData statisticData) {
// Set untyped statistics // Set untyped statistics
for (Statistic statistic : statisticData.untypedStatisticValues().keySet()) { for (Statistic statistic : statisticData.untypedStatisticValues().keySet()) {
player.setStatistic(statistic, statisticData.untypedStatisticValues().get(statistic)); player.setStatistic(statistic, statisticData.untypedStatisticValues().get(statistic));
@ -346,12 +346,12 @@ public class PlayerSetter {
} }
/** /**
* Set a player's location from {@link PlayerSerializer.PlayerLocation} data * Set a player's location from {@link DataSerializer.PlayerLocation} data
* *
* @param player The {@link Player} to teleport * @param player The {@link Player} to teleport
* @param location The {@link PlayerSerializer.PlayerLocation} * @param location The {@link DataSerializer.PlayerLocation}
*/ */
private static void setPlayerLocation(Player player, PlayerSerializer.PlayerLocation location) { private static void setPlayerLocation(Player player, DataSerializer.PlayerLocation location) {
// Don't teleport if the location is invalid // Don't teleport if the location is invalid
if (location == null) { if (location == null) {
return; return;

Loading…
Cancel
Save