From 2ae70dddaa2d2bd9a6effa6a342191ad99464c48 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Mon, 17 Aug 2020 21:09:11 -0700 Subject: [PATCH] Immutable Player Data involved in saving moved into its own class --- .../datatypes/player/MMODataSnapshot.java | 113 ++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 src/main/java/com/gmail/nossr50/datatypes/player/MMODataSnapshot.java diff --git a/src/main/java/com/gmail/nossr50/datatypes/player/MMODataSnapshot.java b/src/main/java/com/gmail/nossr50/datatypes/player/MMODataSnapshot.java new file mode 100644 index 000000000..a08a45c8f --- /dev/null +++ b/src/main/java/com/gmail/nossr50/datatypes/player/MMODataSnapshot.java @@ -0,0 +1,113 @@ +package com.gmail.nossr50.datatypes.player; + +import com.gmail.nossr50.datatypes.MobHealthBarType; +import com.gmail.nossr50.datatypes.skills.PrimarySkillType; +import com.gmail.nossr50.datatypes.skills.SuperAbilityType; +import com.gmail.nossr50.util.experience.MMOExperienceBarManager; +import com.google.common.collect.ImmutableMap; +import org.jetbrains.annotations.NotNull; + +import java.util.UUID; + +public class MMODataSnapshot { + /* Player Stuff */ + private final @NotNull String playerName; + private final @NotNull UUID playerUUID; + + /* Records */ + private final @NotNull Long lastLogin; + + /* HUDs */ + private final @NotNull MobHealthBarType mobHealthBarType; + + /* Skill Data */ + private final @NotNull ImmutableMap skillLevelValues; + private final @NotNull ImmutableMap skillExperienceValues; + private final @NotNull ImmutableMap abilityDeactivationTimestamps; // Ability & Cooldown + private final @NotNull ImmutableMap uniquePlayerData; //Misc data that doesn't fit into other categories (chimaera wing, etc..) + private final @NotNull ImmutableMap barStateMap; + + /* Special Flags */ + private final @NotNull Boolean partyChatSpying; + + /* Scoreboards */ + private final @NotNull Integer scoreboardTipsShown; + + + public MMODataSnapshot(PersistentPlayerData persistentPlayerData) { + playerName = persistentPlayerData.getPlayerName(); + playerUUID = persistentPlayerData.getPlayerUUID(); + lastLogin = persistentPlayerData.getLastLogin(); + + mobHealthBarType = persistentPlayerData.getMobHealthBarType(); + + skillLevelValues = ImmutableMap.copyOf(persistentPlayerData.getSkillLevelsMap()); + skillExperienceValues = ImmutableMap.copyOf(persistentPlayerData.getSkillsExperienceMap()); + abilityDeactivationTimestamps = ImmutableMap.copyOf(persistentPlayerData.getAbilityDeactivationTimestamps()); + uniquePlayerData = ImmutableMap.copyOf(persistentPlayerData.getUniquePlayerData()); + barStateMap = ImmutableMap.copyOf(persistentPlayerData.getBarStateMap()); + + partyChatSpying = persistentPlayerData.isPartyChatSpying(); + scoreboardTipsShown = persistentPlayerData.getScoreboardTipsShown(); + } + + public @NotNull String getPlayerName() { + return playerName; + } + + public @NotNull UUID getPlayerUUID() { + return playerUUID; + } + + public @NotNull Long getLastLogin() { + return lastLogin; + } + + public @NotNull MobHealthBarType getMobHealthBarType() { + return mobHealthBarType; + } + + public @NotNull ImmutableMap getSkillLevelValues() { + return skillLevelValues; + } + + public @NotNull ImmutableMap getSkillExperienceValues() { + return skillExperienceValues; + } + + public @NotNull ImmutableMap getAbilityDeactivationTimestamps() { + return abilityDeactivationTimestamps; + } + + public @NotNull ImmutableMap getUniquePlayerData() { + return uniquePlayerData; + } + + public @NotNull ImmutableMap getBarStateMap() { + return barStateMap; + } + + public @NotNull Boolean getPartyChatSpying() { + return partyChatSpying; + } + + public @NotNull Integer getScoreboardTipsShown() { + return scoreboardTipsShown; + } + + public int getSkillLevel(PrimarySkillType primarySkillType) { + return skillLevelValues.getOrDefault(primarySkillType, 0); + } + + public int getSkillXpLevel(PrimarySkillType primarySkillType) { + return (skillExperienceValues.getOrDefault(primarySkillType, 0F)).intValue(); + } + + public long getAbilityDATS(SuperAbilityType superAbilityType) { + return abilityDeactivationTimestamps.getOrDefault(superAbilityType, 0); + } + + public long getUniqueData(UniqueDataType uniqueDataType) { + return uniquePlayerData.getOrDefault(uniqueDataType, 0); + } +}