diff --git a/src/main/java/io/github/neopixel/wrapper/games/bedwars/HypixelBedWars.java b/src/main/java/io/github/neopixel/wrapper/games/bedwars/HypixelBedWars.java
index 70ecb633..26c07713 100644
--- a/src/main/java/io/github/neopixel/wrapper/games/bedwars/HypixelBedWars.java
+++ b/src/main/java/io/github/neopixel/wrapper/games/bedwars/HypixelBedWars.java
@@ -15,16 +15,7 @@ protected HypixelBedWars(JSONHandler jsonHandler) {
this.jsonHandler = jsonHandler;
}
- /**
- * @return The amount of resources the player has collected.
- */
- public int getResourcesCollected() {
- return jsonHandler.getSafeInt("resources_collected_bedwars");
- }
- /**
- * @return The amount of diamonds the player has collected.
- */
public int getDiamondsCollected() {
return jsonHandler.getSafeInt("diamond_resources_collected_bedwars");
}
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/duels/HypixelDuels.java b/src/main/java/io/github/neopixel/wrapper/games/duels/HypixelDuels.java
index 4553976c..bbad967d 100644
--- a/src/main/java/io/github/neopixel/wrapper/games/duels/HypixelDuels.java
+++ b/src/main/java/io/github/neopixel/wrapper/games/duels/HypixelDuels.java
@@ -5,49 +5,71 @@
import io.github.neopixel.wrapper.util.JSONHandler;
import java.util.Optional;
-public class HypixelDuels extends HypixelGame implements HypixelLootChestGame {
+public class HypixelDuels {
+ private final JSONHandler jsonHandler;
protected HypixelDuels(JSONHandler jsonHandler) {
- super(jsonHandler);
+ this.jsonHandler = jsonHandler;
}
- @Override
- public String getGameID() {
- return "DUELS";
+ public int getWins() {
+ return jsonHandler.getSafeInt("wins");
}
- @Override
- public String getGameName() {
- return "Duels";
+ public int getLosses() {
+ return jsonHandler.getSafeInt("losses");
}
- @Override
- public boolean isRemoved() {
- return false;
+ public int getWinToLossRatio() {
+ return getWins() / Math.max(getLosses(), 1);
}
- @Override
- public final int getOpenedChestsAmount() {
- throw new UnsupportedOperationException();
+ public int getKills() {
+ return jsonHandler.getSafeInt("kills");
}
- @Override
- public final int getOpenedCommonChestsAmount() {
- throw new UnsupportedOperationException();
+ public int getDeaths() {
+ return jsonHandler.getSafeInt("deaths");
}
- @Override
- public final int getOpenedRareChestsAmount() {
- throw new UnsupportedOperationException();
+ public int getKillToDeathRatio() {
+ return getKills() / Math.max(getDeaths(), 1);
}
- @Override
- public final int getOpenedEpicChestsAmount() {
- throw new UnsupportedOperationException();
+ public int getMeleeSwings() {
+ return jsonHandler.getSafeInt("melee_swings");
}
- @Override
- public final int getOpenedLegendaryChestsAmount() {
- throw new UnsupportedOperationException();
+ public int getMeleeHits() {
+ return jsonHandler.getSafeInt("melee_hits");
}
+
+ public int getBowShots() {
+ return jsonHandler.getSafeInt("bow_shots");
+ }
+
+ public int getBowHits() {
+ return jsonHandler.getSafeInt("bow_hits");
+ }
+
+ public int getDamageDealt() {
+ return jsonHandler.getSafeInt("damage_dealt");
+ }
+
+ public int getHealthRegenerated() {
+ return jsonHandler.getSafeInt("health_regenerated");
+ }
+
+ public int getRoundsPlayed() {
+ return jsonHandler.getSafeInt("rounds_played");
+ }
+
+ /**
+ * Used for bridge modes only.
+ * @return The amount of goals a player has in the specific
+ * To get their stats for a particular {@link HypixelDuelsModes mode}, use the
+ * {@link #getMode(HypixelDuelsModes) getMode()} method.
+ */
+public class HypixelDuelsStats extends HypixelGame implements HypixelLootChestGame {
+
+ protected HypixelDuelsStats(JSONHandler jsonHandler) {
+ super(jsonHandler);
+ }
+
+ @Override
+ public String getGameID() {
+ return "DUELS";
+ }
+
+ @Override
+ public String getGameName() {
+ return "Duels";
+ }
+
+ @Override
+ public boolean isRemoved() {
+ return false;
+ }
+
+ /**
+ * Gets the player's stats for a particular Duels mode.
+ *
+ * @param mode The mode to get the player's stats for.
+ * @return The player's stats for that mode.
+ */
+ public HypixelDuels getMode(HypixelDuelsModes mode) {
+ JSONHandler jsonHandler = this.jsonHandler.getCopy();
+ jsonHandler.setStatsPrefix(mode.getStatsPrefix());
+ return new HypixelDuels(jsonHandler);
+ }
+
+ public boolean isKitMenuOptionEnabled() {
+ return jsonHandler.getSafeString("kit_menu_option").equals("on");
+ }
+
+ public boolean isShowLeaderboardsEnabled() {
+ return jsonHandler.getSafeString("show_lb_option").equals("on");
+ }
+
+ public int getGamesPlayed() {
+ return jsonHandler.getSafeInt("games_played_duels");
+ }
+
+ public String getRematchOption() {
+ return jsonHandler.getSafeString("rematch_option_1");
+ }
+
+ public int getCoins() {
+ return jsonHandler.getSafeInt("coins");
+ }
+
+ public String getActiveProjectileTrail() {
+ return jsonHandler.getSafeString("active_projectile_trail");
+ }
+
+ public String getActiveEmblem() {
+ return jsonHandler.getSafeString("active_emblem");
+ }
+
+ public String getActiveKillMessage() {
+ return jsonHandler.getSafeString("active_killmessages");
+ }
+
+ public String getActiveKillEffect() {
+ return jsonHandler.getSafeString("active_kill_effect");
+ }
+
+ public String getActiveVictoryDance() {
+ return jsonHandler.getSafeString("active_victory_dance");
+ }
+
+ public String getActiveAuras() {
+ return jsonHandler.getSafeString("active_auras");
+ }
+
+ public String getActiveWeaponpacks() {
+ return jsonHandler.getSafeString("active_weaponpacks");
+ }
+
+ public boolean isChallengesEnabled() {
+ return jsonHandler.getSafeBoolean("challenges_enabled");
+ }
+
+ public String getStatusField() {
+ return jsonHandler.getSafeString("status_field");
+ }
+
+ public String getEquippedCustomTitle() {
+ return jsonHandler.getSafeString("equipped_custom_titles");
+ }
+
+ public boolean isProjectileTrailEnabled() {
+ return jsonHandler.getSafeBoolean("toggle_proj_trail");
+ }
+
+ public String getActiveCosmeticTitle() {
+ return jsonHandler.getSafeString("active_cosmetictitle");
+ }
+
+ @Override
+ public int getOpenedChestsAmount() {
+ return jsonHandler.getSafeInt("Duels_openedChests");
+ }
+
+ @Override
+ public int getOpenedCommonChestsAmount() {
+ return jsonHandler.getSafeInt("Duels_openedCommons");
+ }
+
+ @Override
+ public int getOpenedRareChestsAmount() {
+ return jsonHandler.getSafeInt("Duels_openedRares");
+ }
+
+ @Override
+ public int getOpenedEpicChestsAmount() {
+ return jsonHandler.getSafeInt("Duels_openedEpics");
+ }
+
+ @Override
+ public int getOpenedLegendaryChestsAmount() {
+ return jsonHandler.getSafeInt("Duels_openedLegendaries");
+ }
+}
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..337aa57f 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,26 @@
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 = "";
+ this.statsSuffix = "";
}
- 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 +121,7 @@ public UUID getSafeUUID(String key) {
}
public Object get(String key) {
- return stats.get(statsPrefix + key);
+ return stats.get(statsPrefix + key + statsSuffix);
}
public Iterator