aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/cowtipper/cowlection/data/HyPlayerData.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/cowtipper/cowlection/data/HyPlayerData.java')
-rw-r--r--src/main/java/de/cowtipper/cowlection/data/HyPlayerData.java103
1 files changed, 103 insertions, 0 deletions
diff --git a/src/main/java/de/cowtipper/cowlection/data/HyPlayerData.java b/src/main/java/de/cowtipper/cowlection/data/HyPlayerData.java
new file mode 100644
index 0000000..22e1eaa
--- /dev/null
+++ b/src/main/java/de/cowtipper/cowlection/data/HyPlayerData.java
@@ -0,0 +1,103 @@
+package de.cowtipper.cowlection.data;
+
+import net.minecraft.util.EnumChatFormatting;
+
+public class HyPlayerData {
+ private String displayname;
+ private String rank;
+ private String prefix;
+ private String newPackageRank;
+ private String rankPlusColor;
+ private String monthlyPackageRank;
+ private String monthlyRankColor;
+ private long lastLogin;
+ private long lastLogout;
+ private String mostRecentGameType;
+
+ /**
+ * No-args constructor for GSON
+ */
+ public HyPlayerData() {
+ }
+
+ public String getPlayerName() {
+ return displayname;
+ }
+
+ public String getPlayerNameFormatted() {
+ return getRankFormatted() + " " + displayname;
+ }
+
+ public long getLastLogin() {
+ return lastLogin;
+ }
+
+ public long getLastLogout() {
+ return lastLogout;
+ }
+
+ public String getLastGame() {
+ return DataHelper.GameType.getFancyName(mostRecentGameType);
+ }
+
+ public boolean hasNeverJoinedHypixel() {
+ // example player that has never joined Hypixel (as of April 2020): Joe
+ return rank == null && lastLogin == 0;
+ }
+
+ public boolean hasNeverLoggedOut() {
+ // example player that has no logout value (as of April 2020): Pig (in general accounts that haven't logged in for a few years)
+ return lastLogin != 0 && lastLogout == 0;
+ }
+
+ public boolean isHidingOnlineStatus() {
+ // example players: any higher ranked player (mods, admins, ...)
+ return lastLogin == 0 && lastLogout == 0;
+ }
+
+ /**
+ * Player's Rank prefix: https://github.com/HypixelDev/PublicAPI/wiki/Common-Questions#how-do-i-get-a-players-rank-prefix
+ *
+ * @return formatted rank
+ */
+ private String getRankFormatted() {
+ if (prefix != null) {
+ return prefix;
+ }
+ if (rank != null) {
+ switch (rank) {
+ case "HELPER":
+ return EnumChatFormatting.BLUE + "[HELPER]";
+ case "MODERATOR":
+ return EnumChatFormatting.DARK_GREEN + "[MOD]";
+ case "ADMIN":
+ return EnumChatFormatting.RED + "[ADMIN]";
+ case "YOUTUBER":
+ return EnumChatFormatting.RED + "[" + EnumChatFormatting.WHITE + "YOUTUBE" + EnumChatFormatting.RED + "]";
+ }
+ }
+ if (rankPlusColor == null) {
+ rankPlusColor = "RED";
+ }
+ if (monthlyPackageRank != null && monthlyPackageRank.equals("SUPERSTAR")) {
+ // MVP++
+ EnumChatFormatting rankPlusPlusColor = monthlyRankColor != null ? EnumChatFormatting.getValueByName(monthlyRankColor) : EnumChatFormatting.GOLD;
+ return rankPlusPlusColor + "[MVP" + EnumChatFormatting.getValueByName(rankPlusColor) + "++" + rankPlusPlusColor + "]";
+ }
+ if (newPackageRank != null) {
+ switch (newPackageRank) {
+ case "VIP":
+ return EnumChatFormatting.GREEN + "[VIP]";
+ case "VIP_PLUS":
+ return EnumChatFormatting.GREEN + "[VIP" + EnumChatFormatting.GOLD + "+" + EnumChatFormatting.GREEN + "]";
+ case "MVP":
+ return EnumChatFormatting.AQUA + "[MVP]";
+ case "MVP_PLUS":
+ return EnumChatFormatting.AQUA + "[MVP" + EnumChatFormatting.getValueByName(rankPlusColor) + "+" + EnumChatFormatting.AQUA + "]";
+ default:
+ return EnumChatFormatting.GRAY.toString();
+ }
+ }
+ return EnumChatFormatting.GRAY.toString();
+ }
+}