diff --git a/src/main/java/io/github/neopixel/wrapper/games/bedwars/HypixelBedWarsMode.java b/src/main/java/io/github/neopixel/wrapper/games/bedwars/HypixelBedWarsMode.java index cfd5bf97..a878cf37 100644 --- a/src/main/java/io/github/neopixel/wrapper/games/bedwars/HypixelBedWarsMode.java +++ b/src/main/java/io/github/neopixel/wrapper/games/bedwars/HypixelBedWarsMode.java @@ -5,40 +5,40 @@ */ public enum HypixelBedWarsMode { - SOLOS("eight_one_"), - DOUBLES("eight_two_"), - TRIOS("four_three_"), - FOURS("four_four_"), + SOLOS("eight_one"), + DOUBLES("eight_two"), + TRIOS("four_three"), + FOURS("four_four"), - FOUR_VS_FOUR("two_four_"), + FOUR_VS_FOUR("two_four"), - RUSH_SOLOS("eight_one_rush_"), - RUSH_DOUBLES("eight_two_rush_"), - RUSH_FOURS("four_four_rush_"), + RUSH_SOLOS("eight_one_rush"), + RUSH_DOUBLES("eight_two_rush"), + RUSH_FOURS("four_four_rush"), - ULTIMATE_DOUBLES("eight_two_ultimate_"), - ULTIMATE_FOURS("four_four_ultimate_"), + ULTIMATE_DOUBLES("eight_two_ultimate"), + ULTIMATE_FOURS("four_four_ultimate"), - LUCKY_DOUBLES("eight_two_lucky_"), - LUCKY_FOURS("four_four_lucky_"), + LUCKY_DOUBLES("eight_two_lucky"), + LUCKY_FOURS("four_four_lucky"), - ARMED_DOUBLES("eight_two_armed_"), - ARMED_FOURS("four_four_armed_"), + ARMED_DOUBLES("eight_two_armed"), + ARMED_FOURS("four_four_armed"), - CASTLE("castle_"), + CASTLE("castle"), - VOIDLESS_DOUBLES("eight_two_voidless_"), - VOIDLESS_FOURS("four_four_voidless_"), + VOIDLESS_DOUBLES("eight_two_voidless"), + VOIDLESS_FOURS("four_four_voidless"), - UNDERWORLD_DOUBLES("eight_two_underworld_"), - UNDERWORLD_FOURS("four_four_underworld_"), + UNDERWORLD_DOUBLES("eight_two_underworld"), + UNDERWORLD_FOURS("four_four_underworld"), - SWAP_DOUBLES("eight_two_swap_"), - SWAP_FOURS("four_four_swap_"), + SWAP_DOUBLES("eight_two_swap"), + SWAP_FOURS("four_four_swap"), OVERALL(""); - String statsPrefix; + final String statsPrefix; HypixelBedWarsMode(String statsPrefix) { this.statsPrefix = statsPrefix; diff --git a/src/main/java/io/github/neopixel/wrapper/games/bedwars/HypixelBedWarsStats.java b/src/main/java/io/github/neopixel/wrapper/games/bedwars/HypixelBedWarsStats.java index a56d7e3d..17b9ac52 100644 --- a/src/main/java/io/github/neopixel/wrapper/games/bedwars/HypixelBedWarsStats.java +++ b/src/main/java/io/github/neopixel/wrapper/games/bedwars/HypixelBedWarsStats.java @@ -44,8 +44,9 @@ public boolean isRemoved() { * @return The player's stats for that {@code mode}. */ public HypixelBedWars getMode(HypixelBedWarsMode mode) { - return new HypixelBedWars( - jsonHandler.getThisJSONHandlerWithStatsPrefix(mode.getStatsPrefix())); + JSONHandler jsonHandler = this.jsonHandler.getCopy(); + jsonHandler.setStatsPrefix(mode.getStatsPrefix()); + return new HypixelBedWars(jsonHandler); } /** diff --git a/src/main/java/io/github/neopixel/wrapper/games/uhc/HypixelUHC.java b/src/main/java/io/github/neopixel/wrapper/games/uhc/HypixelUHC.java index a633b5c5..a543fa76 100644 --- a/src/main/java/io/github/neopixel/wrapper/games/uhc/HypixelUHC.java +++ b/src/main/java/io/github/neopixel/wrapper/games/uhc/HypixelUHC.java @@ -1,26 +1,43 @@ package io.github.neopixel.wrapper.games.uhc; -import io.github.neopixel.wrapper.games.HypixelGame; +import io.github.neopixel.wrapper.games.bedwars.BedWarsKillCause; import io.github.neopixel.wrapper.util.JSONHandler; -public class HypixelUHC extends HypixelGame { +public class HypixelUHC { + + private final JSONHandler jsonHandler; protected HypixelUHC(JSONHandler jsonHandler) { - super(jsonHandler); + this.jsonHandler = jsonHandler; + } + + + public int getWins() { + return jsonHandler.getSafeInt("wins"); + } + + public int getHeadsEaten() { + return jsonHandler.getSafeInt("heads_eaten"); } - @Override - public String getGameID() { - return "UHC"; + public int getKills() { + return jsonHandler.getSafeInt("kills"); } - @Override - public String getGameName() { - return "UHC Champions"; + public int getDeaths() { + return jsonHandler.getSafeInt("deaths"); } - @Override - public boolean isRemoved() { - return false; + public int getKillToDeathRatio() { + return getKills() / Math.max(getDeaths(), 1); } + + public int getUltimatesCrafted() { + return jsonHandler.getSafeInt("ultimates_crafted"); + } + + public int getExtraUltimatesCrafted() { + return jsonHandler.getSafeInt("extra_ultimates_crafted"); + } + } diff --git a/src/main/java/io/github/neopixel/wrapper/games/uhc/HypixelUHCMode.java b/src/main/java/io/github/neopixel/wrapper/games/uhc/HypixelUHCMode.java new file mode 100644 index 00000000..212244c4 --- /dev/null +++ b/src/main/java/io/github/neopixel/wrapper/games/uhc/HypixelUHCMode.java @@ -0,0 +1,25 @@ +package io.github.neopixel.wrapper.games.uhc; + +public enum HypixelUHCMode { + + SOLOS("solo"), + TEAMS(""), + + SOLO_BRAWL("solo_brawl"), + DUO_BRAWL("duo_brawl"), + + NO_DIAMONDS("no_diamonds"), + + RED_vs_BLUE("red_vs_blue"); + + final String statsPrefix; + + HypixelUHCMode(String statsPrefix) { + this.statsPrefix = statsPrefix; + } + + public String getStatsSuffix() { + return statsPrefix; + } + +} diff --git a/src/main/java/io/github/neopixel/wrapper/games/uhc/HypixelUHCStats.java b/src/main/java/io/github/neopixel/wrapper/games/uhc/HypixelUHCStats.java new file mode 100644 index 00000000..287fdb91 --- /dev/null +++ b/src/main/java/io/github/neopixel/wrapper/games/uhc/HypixelUHCStats.java @@ -0,0 +1,41 @@ +package io.github.neopixel.wrapper.games.uhc; + +import io.github.neopixel.wrapper.games.HypixelGame; +import io.github.neopixel.wrapper.games.bedwars.HypixelBedWars; +import io.github.neopixel.wrapper.util.JSONHandler; + +public class HypixelUHCStats extends HypixelGame { + + protected HypixelUHCStats(JSONHandler jsonHandler) { + super(jsonHandler); + } + + @Override + public String getGameID() { + return "UHC"; + } + + @Override + public String getGameName() { + return "UHC Champions"; + } + + @Override + public boolean isRemoved() { + return false; + } + + public int getCoins() { + return jsonHandler.getSafeInt("coins"); + } + + public boolean isTeammateDamage() { + return jsonHandler.getSafeBoolean("teammate_damage"); + } + + public HypixelUHC getMode(HypixelUHCMode mode) { + JSONHandler jsonHandler = this.jsonHandler.getCopy(); + jsonHandler.setStatsPrefix(mode.getStatsSuffix()); + return new HypixelUHC(jsonHandler); + } +} diff --git a/src/main/java/io/github/neopixel/wrapper/util/JSONHandler.java b/src/main/java/io/github/neopixel/wrapper/util/JSONHandler.java index e157e96b..2af4047b 100644 --- a/src/main/java/io/github/neopixel/wrapper/util/JSONHandler.java +++ b/src/main/java/io/github/neopixel/wrapper/util/JSONHandler.java @@ -10,19 +10,23 @@ public class JSONHandler { private final JSONObject stats; - private final String statsPrefix; + private String statsPrefix; + private String statsSuffix; public JSONHandler(JSONObject stats) { this.stats = stats; - this.statsPrefix = ""; } - public JSONHandler(JSONObject stats, String statsPrefix) { - this.stats = stats; + public void setStatsPrefix(String statsPrefix) { this.statsPrefix = statsPrefix; } + public void setStatsSuffix(String statsSuffix) { + this.statsSuffix = statsSuffix; + } + + public JSONArray getSafeJSONArray(String key) { if (stats.has(statsPrefix + key)) { Object object = this.get(key); @@ -114,7 +118,13 @@ public UUID getSafeUUID(String key) { } public Object get(String key) { - return stats.get(statsPrefix + key); + if(statsPrefix != null) { + return stats.get(statsPrefix + "_" + key); + } else if(statsSuffix != null) { + return stats.get(key + "_" + statsSuffix); + } else { + return stats.get(key); + } } public Iterator getKeys() { @@ -123,13 +133,20 @@ public Iterator getKeys() { public JSONHandler getJSONHandler(String key) { if (stats.has(key)) { - return new JSONHandler(stats.getJSONObject(key)); + JSONHandler handler = new JSONHandler(stats.getJSONObject(key)); + handler.setStatsPrefix(statsPrefix); + handler.setStatsSuffix(statsSuffix); + return handler; } else { return null; } } - public JSONHandler getThisJSONHandlerWithStatsPrefix(String statsPrefix) { - return new JSONHandler(stats, statsPrefix); + public JSONHandler getCopy() { + JSONHandler handler = new JSONHandler(stats); + handler.setStatsPrefix(statsPrefix); + handler.setStatsSuffix(statsSuffix); + return handler; } + }