From dda757a8520d507cb0585408a68ad5bc216e6625 Mon Sep 17 00:00:00 2001 From: CuzImClicks Date: Mon, 10 May 2021 19:07:28 +0200 Subject: implemented the changes requested by Danker --- .../java/me/Danker/commands/DungeonsCommand.java | 152 +++++++++++++++++++++ src/main/java/me/Danker/commands/warp/Crypt.java | 5 +- .../java/me/Danker/commands/warp/DarkAuction.java | 5 +- src/main/java/me/Danker/commands/warp/Dragon.java | 5 +- .../java/me/Danker/commands/warp/DungeonHub.java | 5 +- .../java/me/Danker/commands/warp/HowlingCave.java | 5 +- src/main/java/me/Danker/commands/warp/Magma.java | 5 +- .../java/me/Danker/commands/warp/SpidersNest.java | 5 +- .../me/Danker/features/HighlightCommissions.java | 4 +- .../java/me/Danker/handlers/ConfigHandler.java | 1 + 10 files changed, 163 insertions(+), 29 deletions(-) create mode 100644 src/main/java/me/Danker/commands/DungeonsCommand.java (limited to 'src/main/java/me/Danker') diff --git a/src/main/java/me/Danker/commands/DungeonsCommand.java b/src/main/java/me/Danker/commands/DungeonsCommand.java new file mode 100644 index 0000000..9924a9d --- /dev/null +++ b/src/main/java/me/Danker/commands/DungeonsCommand.java @@ -0,0 +1,152 @@ +package me.Danker.commands; + +import com.google.gson.JsonObject; +import me.Danker.DankersSkyblockMod; +import me.Danker.handlers.APIHandler; +import me.Danker.handlers.ConfigHandler; +import me.Danker.utils.Utils; +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.event.HoverEvent; +import net.minecraft.util.BlockPos; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; + +import java.util.List; + +public class DungeonsCommand extends CommandBase { + + @Override + public String getCommandName() { + return "dungeons"; + } + + @Override + public String getCommandUsage(ICommandSender arg0) { + return "/" + getCommandName() + " [name]"; + } + + public static String usage(ICommandSender arg0) { + return new DungeonsCommand().getCommandUsage(arg0); + } + + @Override + public int getRequiredPermissionLevel() { + return 0; + } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + if (args.length == 1) { + return Utils.getMatchingPlayers(args[0]); + } + return null; + } + + @Override + public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException { + // MULTI THREAD DRIFTING + new Thread(() -> { + EntityPlayer player = (EntityPlayer) arg0; + + // Check key + String key = ConfigHandler.getString("api", "APIKey"); + if (key.equals("")) { + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "API key not set. Use /setkey.")); + } + + // Get UUID for Hypixel API requests + String username; + String uuid; + if (arg1.length == 0) { + username = player.getName(); + uuid = player.getUniqueID().toString().replaceAll("[\\-]", ""); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking dungeon stats of " + DankersSkyblockMod.SECONDARY_COLOUR + username)); + } else { + username = arg1[0]; + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking dungeon stats of " + DankersSkyblockMod.SECONDARY_COLOUR + username)); + uuid = APIHandler.getUUID(username); + } + + // Find stats of latest profile + String latestProfile = APIHandler.getLatestProfileID(uuid, key); + if (latestProfile == null) return; + + String profileURL = "https://api.hypixel.net/skyblock/profile?profile=" + latestProfile + "&key=" + key; + System.out.println("Fetching profile..."); + JsonObject profileResponse = APIHandler.getResponse(profileURL); + if (!profileResponse.get("success").getAsBoolean()) { + String reason = profileResponse.get("cause").getAsString(); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "Failed with reason: " + reason)); + return; + } + + 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()){ + String reason = playerResponse.get("cause").getAsString(); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "This player has not played on Hypixel.")); + } + + System.out.println("Fetching dungeon stats..."); + JsonObject dungeonsObject = profileResponse.get("profile").getAsJsonObject().get("members").getAsJsonObject().get(uuid).getAsJsonObject().get("dungeons").getAsJsonObject(); + if (!dungeonsObject.get("dungeon_types").getAsJsonObject().get("catacombs").getAsJsonObject().has("experience")) { + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "This player has not played dungeons.")); + return; + } + + 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()); + 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(); + + 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"); + + 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 ? "\n": ""); + } + + ChatComponentText 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)) + ); + }).start(); + } +} \ No newline at end of file diff --git a/src/main/java/me/Danker/commands/warp/Crypt.java b/src/main/java/me/Danker/commands/warp/Crypt.java index 88f286b..463330a 100644 --- a/src/main/java/me/Danker/commands/warp/Crypt.java +++ b/src/main/java/me/Danker/commands/warp/Crypt.java @@ -39,9 +39,6 @@ public class Crypt extends CommandBase { public void processCommand(ICommandSender sender, String[] args) throws CommandException { if (!Utils.inSkyblock) return; EntityPlayer player = ((EntityPlayer) sender); - // MULTI THREAD DRIFTING - new Thread(() -> { - Minecraft.getMinecraft().thePlayer.sendChatMessage("/warp crypt"); - }).start(); + Minecraft.getMinecraft().thePlayer.sendChatMessage("/warp crypt"); } } diff --git a/src/main/java/me/Danker/commands/warp/DarkAuction.java b/src/main/java/me/Danker/commands/warp/DarkAuction.java index 40218d8..88655f1 100644 --- a/src/main/java/me/Danker/commands/warp/DarkAuction.java +++ b/src/main/java/me/Danker/commands/warp/DarkAuction.java @@ -40,9 +40,6 @@ public class DarkAuction extends CommandBase { public void processCommand(ICommandSender sender, String[] args) throws CommandException { if (!Utils.inSkyblock) return; EntityPlayer player = ((EntityPlayer) sender); - // MULTI THREAD DRIFTING - new Thread(() -> { - Minecraft.getMinecraft().thePlayer.sendChatMessage("/warp da"); - }).start(); + Minecraft.getMinecraft().thePlayer.sendChatMessage("/warp da"); } } diff --git a/src/main/java/me/Danker/commands/warp/Dragon.java b/src/main/java/me/Danker/commands/warp/Dragon.java index f36bef1..05be968 100644 --- a/src/main/java/me/Danker/commands/warp/Dragon.java +++ b/src/main/java/me/Danker/commands/warp/Dragon.java @@ -40,9 +40,6 @@ public class Dragon extends CommandBase { public void processCommand(ICommandSender sender, String[] args) throws CommandException { if (!Utils.inSkyblock) return; EntityPlayer player = ((EntityPlayer) sender); - // MULTI THREAD DRIFTING - new Thread(() -> { - Minecraft.getMinecraft().thePlayer.sendChatMessage("/warp drag"); - }).start(); + Minecraft.getMinecraft().thePlayer.sendChatMessage("/warp drag"); } } diff --git a/src/main/java/me/Danker/commands/warp/DungeonHub.java b/src/main/java/me/Danker/commands/warp/DungeonHub.java index cc1c082..201e764 100644 --- a/src/main/java/me/Danker/commands/warp/DungeonHub.java +++ b/src/main/java/me/Danker/commands/warp/DungeonHub.java @@ -40,9 +40,6 @@ public class DungeonHub extends CommandBase { public void processCommand(ICommandSender sender, String[] args) throws CommandException { if (!Utils.inSkyblock) return; EntityPlayer player = ((EntityPlayer) sender); - // MULTI THREAD DRIFTING - new Thread(() -> { - Minecraft.getMinecraft().thePlayer.sendChatMessage("/warp dungeon_hub"); - }).start(); + Minecraft.getMinecraft().thePlayer.sendChatMessage("/warp dungeon_hub"); } } diff --git a/src/main/java/me/Danker/commands/warp/HowlingCave.java b/src/main/java/me/Danker/commands/warp/HowlingCave.java index 4cdcf97..58e4ce7 100644 --- a/src/main/java/me/Danker/commands/warp/HowlingCave.java +++ b/src/main/java/me/Danker/commands/warp/HowlingCave.java @@ -39,9 +39,6 @@ public class HowlingCave extends CommandBase { public void processCommand(ICommandSender sender, String[] args) throws CommandException { if (!Utils.inSkyblock) return; EntityPlayer player = ((EntityPlayer) sender); - // MULTI THREAD DRIFTING - new Thread(() -> { - Minecraft.getMinecraft().thePlayer.sendChatMessage("/warp howl"); - }).start(); + Minecraft.getMinecraft().thePlayer.sendChatMessage("/warp howl"); } } diff --git a/src/main/java/me/Danker/commands/warp/Magma.java b/src/main/java/me/Danker/commands/warp/Magma.java index 96ead00..5e747c3 100644 --- a/src/main/java/me/Danker/commands/warp/Magma.java +++ b/src/main/java/me/Danker/commands/warp/Magma.java @@ -39,9 +39,6 @@ public class Magma extends CommandBase { public void processCommand(ICommandSender sender, String[] args) throws CommandException { if (!Utils.inSkyblock) return; EntityPlayer player = ((EntityPlayer) sender); - // MULTI THREAD DRIFTING - new Thread(() -> { - Minecraft.getMinecraft().thePlayer.sendChatMessage("/warp magma"); - }).start(); + Minecraft.getMinecraft().thePlayer.sendChatMessage("/warp magma"); } } diff --git a/src/main/java/me/Danker/commands/warp/SpidersNest.java b/src/main/java/me/Danker/commands/warp/SpidersNest.java index 2f091ad..cf80df8 100644 --- a/src/main/java/me/Danker/commands/warp/SpidersNest.java +++ b/src/main/java/me/Danker/commands/warp/SpidersNest.java @@ -39,9 +39,6 @@ public class SpidersNest extends CommandBase { public void processCommand(ICommandSender sender, String[] args) throws CommandException { if (!Utils.inSkyblock) return; EntityPlayer player = ((EntityPlayer) sender); - // MULTI THREAD DRIFTING - new Thread(() -> { - Minecraft.getMinecraft().thePlayer.sendChatMessage("/warp nest"); - }).start(); + Minecraft.getMinecraft().thePlayer.sendChatMessage("/warp nest"); } } diff --git a/src/main/java/me/Danker/features/HighlightCommissions.java b/src/main/java/me/Danker/features/HighlightCommissions.java index ae262c3..f59951a 100644 --- a/src/main/java/me/Danker/features/HighlightCommissions.java +++ b/src/main/java/me/Danker/features/HighlightCommissions.java @@ -13,6 +13,8 @@ import java.util.List; public class HighlightCommissions { + public static int HIGHLIGHT_COLOUR; + @SubscribeEvent public void onGuiRender(GuiChestBackgroundDrawnEvent event) { if(!Utils.inSkyblock) return; @@ -25,7 +27,7 @@ public class HighlightCommissions { if (slot.getStack().getItem() instanceof ItemWritableBook) { for (String line : Utils.getItemLore(slot.getStack())) { if (line.contains("COMPLETED")) { - Utils.drawOnSlot(event.chestSize, slot.xDisplayPosition, slot.yDisplayPosition, 0x51FF51 + 0xD7000000); + Utils.drawOnSlot(event.chestSize, slot.xDisplayPosition, slot.yDisplayPosition, HIGHLIGHT_COLOUR + 0xD7000000); break; } } diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index ecd15f3..ce0df16 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -525,6 +525,7 @@ public class ConfigHandler { BoulderSolver.BOULDER_ARROW_COLOUR = initInt("colors", "boulderArrow", 0x006000); SilverfishSolver.SILVERFISH_LINE_COLOUR = initInt("colors", "silverfishLine", 0x40FF40); IceWalkSolver.ICE_WALK_LINE_COLOUR = initInt("colors", "iceWalkLine", 0x40FF40); + HighlightCommissions.HIGHLIGHT_COLOUR = initInt("colors", "highlight_colour", 0x51FF51); // Commands if (!hasKey("commands", "reparty")) writeBooleanConfig("commands", "reparty", false); -- cgit