aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/Danker/commands/DungeonsCommand.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/Danker/commands/DungeonsCommand.java')
-rw-r--r--src/main/java/me/Danker/commands/DungeonsCommand.java84
1 files changed, 57 insertions, 27 deletions
diff --git a/src/main/java/me/Danker/commands/DungeonsCommand.java b/src/main/java/me/Danker/commands/DungeonsCommand.java
index 92779dc..75f6f46 100644
--- a/src/main/java/me/Danker/commands/DungeonsCommand.java
+++ b/src/main/java/me/Danker/commands/DungeonsCommand.java
@@ -13,8 +13,11 @@ import net.minecraft.event.HoverEvent;
import net.minecraft.util.BlockPos;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.MathHelper;
+import java.text.NumberFormat;
import java.util.List;
+import java.util.Locale;
public class DungeonsCommand extends CommandBase {
@@ -55,6 +58,7 @@ public class DungeonsCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if (key.equals("")) {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "API key not set. Use /setkey."));
+ return;
}
// Get UUID for Hypixel API requests
@@ -76,7 +80,7 @@ public class DungeonsCommand extends CommandBase {
String profileURL = "https://api.hypixel.net/skyblock/profile?profile=" + latestProfile + "&key=" + key;
System.out.println("Fetching profile...");
- JsonObject profileResponse = APIHandler.getResponse(profileURL);
+ JsonObject profileResponse = APIHandler.getResponse(profileURL, true);
if (!profileResponse.get("success").getAsBoolean()) {
String reason = profileResponse.get("cause").getAsString();
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
@@ -85,10 +89,11 @@ public class DungeonsCommand extends CommandBase {
String playerURL = "https://api.hypixel.net/player?uuid=" + uuid + "&key=" + key;
System.out.println("Fetching player data...");
- JsonObject playerResponse = APIHandler.getResponse(playerURL);
- if(!playerResponse.get("success").getAsBoolean()){
+ JsonObject playerResponse = APIHandler.getResponse(playerURL, true);
+ if (!playerResponse.get("success").getAsBoolean()) {
String reason = playerResponse.get("cause").getAsString();
- player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "This player has not played on Hypixel."));
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason));
+ return;
}
System.out.println("Fetching dungeon stats...");
@@ -99,54 +104,79 @@ public class DungeonsCommand extends CommandBase {
}
JsonObject catacombsObject = dungeonsObject.get("dungeon_types").getAsJsonObject().get("catacombs").getAsJsonObject();
+
double catacombs = Utils.xpToDungeonsLevel(catacombsObject.get("experience").getAsDouble());
- double healer = Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("healer").getAsJsonObject().get("experience").getAsDouble());
- double mage = Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("mage").getAsJsonObject().get("experience").getAsDouble());
- double berserk = Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("berserk").getAsJsonObject().get("experience").getAsDouble());
- double archer = Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("archer").getAsJsonObject().get("experience").getAsDouble());
- double tank = Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("tank").getAsJsonObject().get("experience").getAsDouble());
+ double healer = MathHelper.clamp_double(Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("healer").getAsJsonObject().get("experience").getAsDouble()), 0D, 50D);
+ double mage = MathHelper.clamp_double(Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("mage").getAsJsonObject().get("experience").getAsDouble()), 0D, 50D);
+ double berserk = MathHelper.clamp_double(Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("berserk").getAsJsonObject().get("experience").getAsDouble()), 0D, 50D);
+ double archer = MathHelper.clamp_double(Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("archer").getAsJsonObject().get("experience").getAsDouble()), 0D, 50D);
+ double tank = MathHelper.clamp_double(Utils.xpToDungeonsLevel(dungeonsObject.get("player_classes").getAsJsonObject().get("tank").getAsJsonObject().get("experience").getAsDouble()), 0D, 50D);
+ double classAverage = Math.round((healer + mage + berserk + archer + tank) / 5D * 100D) / 100D;
String selectedClass = Utils.capitalizeString(dungeonsObject.get("selected_dungeon_class").getAsString());
int secrets = playerResponse.get("player").getAsJsonObject().get("achievements").getAsJsonObject().get("skyblock_treasure_hunter").getAsInt();
int highestFloor = catacombsObject.get("highest_tier_completed").getAsInt();
JsonObject completionObj = catacombsObject.get("tier_completions").getAsJsonObject();
+ JsonObject catacombsMasterObject = dungeonsObject.get("dungeon_types").getAsJsonObject().get("master_catacombs").getAsJsonObject();
+ boolean hasPlayedMaster = catacombsMasterObject.has("highest_tier_completed");
+
+ int highestMasterFloor = 0;
+ JsonObject completionMasterObj = null;
+ if (hasPlayedMaster) {
+ highestMasterFloor = catacombsMasterObject.get("highest_tier_completed").getAsInt();
+ completionMasterObj = catacombsMasterObject.get("tier_completions").getAsJsonObject();
+ }
+
String delimiter = DankersSkyblockMod.DELIMITER_COLOUR + "" + EnumChatFormatting.BOLD + "-------------------";
- ChatComponentText classLevels = new ChatComponentText(
- EnumChatFormatting.GOLD + " Selected Class: " + selectedClass + "\n\n" +
- EnumChatFormatting.RED + " Catacombs Level: " + catacombs + "\n" +
- EnumChatFormatting.YELLOW + " Healer Level: " + healer + "\n" +
- EnumChatFormatting.LIGHT_PURPLE + " Mage Level: " + mage + "\n" +
- EnumChatFormatting.RED + " Berserk Level: " + berserk + "\n" +
- EnumChatFormatting.GREEN + " Archer Level: " + archer + "\n" +
- EnumChatFormatting.BLUE + " Tank Level: " + tank + "\n\n" +
- EnumChatFormatting.WHITE + " Secrets Found: " + secrets + "\n\n");
+ ChatComponentText classLevels = new ChatComponentText(EnumChatFormatting.GOLD + " Selected Class: " + selectedClass + "\n\n" +
+ EnumChatFormatting.RED + " Catacombs Level: " + catacombs + "\n" +
+ EnumChatFormatting.RED + " Class Average: " + classAverage + "\n\n" +
+ EnumChatFormatting.YELLOW + " Healer Level: " + healer + "\n" +
+ EnumChatFormatting.LIGHT_PURPLE + " Mage Level: " + mage + "\n" +
+ EnumChatFormatting.RED + " Berserk Level: " + berserk + "\n" +
+ EnumChatFormatting.GREEN + " Archer Level: " + archer + "\n" +
+ EnumChatFormatting.BLUE + " Tank Level: " + tank + "\n\n" +
+ EnumChatFormatting.WHITE + " Secrets Found: " + NumberFormat.getIntegerInstance(Locale.US).format(secrets) + "\n\n");
StringBuilder completionsHoverString = new StringBuilder();
-
for (int i = 0; i <= highestFloor; i++) {
completionsHoverString
+ .append(EnumChatFormatting.GOLD)
+ .append(i == 0 ? "Entrance: " : "Floor " + i + ": ")
+ .append(EnumChatFormatting.RESET)
+ .append(completionObj.get(String.valueOf(i)).getAsInt())
+ .append(i < highestFloor || hasPlayedMaster ? "\n": "");
+ }
+ for (int i = 1; i <= highestMasterFloor; i++) {
+ if (completionMasterObj != null && completionMasterObj.has(String.valueOf(i))) {
+ completionsHoverString
.append(EnumChatFormatting.GOLD)
- .append(i == 0 ? "Entrance: " : "Floor " + i + ": ")
+ .append("Master Floor ")
+ .append(i)
+ .append(": ")
.append(EnumChatFormatting.RESET)
- .append(completionObj.get(String.valueOf(i)).getAsInt())
- .append(i < highestFloor ? "\n": "");
+ .append(completionMasterObj.get(String.valueOf(i)).getAsInt())
+ .append(i < highestMasterFloor ? "\n": "");
+ }
}
- ChatComponentText completions = new ChatComponentText(EnumChatFormatting.GOLD + " Highest Floor Completed: " + highestFloor);
-
+ ChatComponentText completions;
+ if (hasPlayedMaster) {
+ completions = new ChatComponentText(EnumChatFormatting.GOLD + " Highest Floor Completed: Master " + highestMasterFloor);
+ } else {
+ completions = new ChatComponentText(EnumChatFormatting.GOLD + " Highest Floor Completed: " + highestFloor);
+ }
completions.setChatStyle(completions.getChatStyle().setChatHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ChatComponentText(completionsHoverString.toString()))));
-
player.addChatMessage(
new ChatComponentText(delimiter)
.appendText("\n")
.appendSibling(classLevels)
.appendSibling(completions)
.appendText("\n")
- .appendSibling(new ChatComponentText(delimiter))
- );
+ .appendSibling(new ChatComponentText(delimiter)));
}).start();
}
}