diff options
author | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2023-09-15 23:46:12 -0400 |
---|---|---|
committer | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2023-10-30 00:25:39 -0400 |
commit | ceb5dbbea4079eadca90a96e714cc5539700a5d4 (patch) | |
tree | 7d94e7bb71d2aeb478d484636adf573b5287194a /src/main | |
parent | 24a77b37e8035e2b5e7c6d0f76adf13810ec2a26 (diff) | |
download | Skyblocker-ceb5dbbea4079eadca90a96e714cc5539700a5d4.tar.gz Skyblocker-ceb5dbbea4079eadca90a96e714cc5539700a5d4.tar.bz2 Skyblocker-ceb5dbbea4079eadca90a96e714cc5539700a5d4.zip |
Refactor CheckExotic
Diffstat (limited to 'src/main')
4 files changed, 90 insertions, 105 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/PriceInfoTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/PriceInfoTooltip.java index 667382ee..3ecbe8be 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/PriceInfoTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/PriceInfoTooltip.java @@ -1,7 +1,7 @@ package de.hysky.skyblocker.skyblock.item; -import com.google.gson.Gson; import com.google.gson.JsonObject; +import de.hysky.skyblocker.SkyblockerMod; import de.hysky.skyblocker.config.SkyblockerConfig; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.skyblock.item.exotic.CheckExotic; @@ -37,7 +37,7 @@ public class PriceInfoTooltip { private static JsonObject lowestPricesJson; private static JsonObject isMuseumJson; private static JsonObject motesPricesJson; - public static JsonObject ColorApiData; + public static JsonObject colorJson; private static volatile boolean nullMsgSend = false; private final static Gson gson = new Gson(); private static final Map<String, String> apiAddresses; @@ -45,7 +45,7 @@ public class PriceInfoTooltip { private static long museumHash = 0; private static long motesHash = 0; - public static void onInjectTooltip(ItemStack stack, TooltipContext context, List<Text> lines) { + public static void getTooltip(ItemStack stack, TooltipContext context, List<Text> lines) { if (!Utils.isOnSkyblock() || client.player == null) return; String name = getInternalNameFromNBT(stack, false); @@ -58,40 +58,33 @@ public class PriceInfoTooltip { neuName = internalID; } - if (lines.size() == 0) { + if (lines.isEmpty()) { return; } if (SkyblockerConfig.get().general.itemTooltip.enableExoticCheck) { + if (colorJson == null) { + nullWarning(); + } else if (stack.getNbt() != null) { + final NbtElement color = stack.getNbt().getCompound("display").get("color"); - if (ColorApiData == null) { // Only download once, don't need to waste resources on downloading every few seconds - ColorApiData = downloadPrices("color"); - } - - final NbtElement Color = stack.getNbt().getCompound("display").get("color"); - - if (Color != null) { - String colorHex = String.format("%06X", Integer.parseInt(Color.asString())); - String expectedHex = CheckExotic.getExpectedHex(internalID); + if (color != null) { + String colorHex = String.format("%06X", Integer.parseInt(color.asString())); + String expectedHex = CheckExotic.getExpectedHex(internalID); - boolean correctLine = false; - for (int i = 0; i < lines.size(); i++) { - String existingTooltip = String.valueOf(lines.get(i)); - if (existingTooltip.startsWith("Color: ")) { - correctLine = true; + boolean correctLine = false; + for (Text text : lines) { + String existingTooltip = text.getString() + " "; + if (existingTooltip.startsWith("Color: ")) { + correctLine = true; - if (!colorHex.equalsIgnoreCase(expectedHex) && !CheckExotic.checkExceptions(internalID, colorHex) && !CheckExotic.intendedDyed(stack.getNbt())) { - final String type = CheckExotic.checkDyeType(colorHex); - lines.add(1, Text.literal(existingTooltip + Formatting.DARK_GRAY + " (" + CheckExotic.FormattingColor(type) + CheckExotic.getTranslatatedText(type).getString() + Formatting.DARK_GRAY + ")")); + addExoticTooltip(lines, internalID, stack.getNbt(), colorHex, expectedHex, existingTooltip); + break; } - break; } - } - if (!correctLine) { - if (!colorHex.equalsIgnoreCase(expectedHex) && !CheckExotic.checkExceptions(internalID, colorHex) && !CheckExotic.intendedDyed(stack.getNbt())) { - final String type = CheckExotic.checkDyeType(colorHex); - lines.add(1, Text.literal(Formatting.DARK_GRAY + "(" + CheckExotic.FormattingColor(type) + CheckExotic.getTranslatatedText(type).getString() + Formatting.DARK_GRAY + ")")); + if (!correctLine) { + addExoticTooltip(lines, internalID, stack.getNbt(), colorHex, expectedHex, ""); } } } @@ -237,6 +230,13 @@ public class PriceInfoTooltip { } } + private static void addExoticTooltip(List<Text> lines, String internalID, NbtCompound nbt, String colorHex, String expectedHex, String existingTooltip) { + if (!colorHex.equalsIgnoreCase(expectedHex) && !CheckExotic.isException(internalID, colorHex) && !CheckExotic.intendedDyed(nbt)) { + final String type = CheckExotic.checkDyeType(colorHex); + lines.add(1, Text.literal(existingTooltip + Formatting.DARK_GRAY + "(").append(CheckExotic.getTranslatedText(type).formatted(CheckExotic.getFormattingColor(type))).append(Formatting.DARK_GRAY + ")")); + } + } + private static void nullWarning() { if (!nullMsgSend && client.player != null) { client.player.sendMessage(Constants.PREFIX.get().append(Text.translatable("skyblocker.itemTooltip.nullMessage")), false); @@ -304,7 +304,7 @@ public class PriceInfoTooltip { } case "PET" -> { if (ea.contains("petInfo")) { - JsonObject petInfo = gson.fromJson(ea.getString("petInfo"), JsonObject.class); + JsonObject petInfo = SkyblockerMod.GSON.fromJson(ea.getString("petInfo"), JsonObject.class); return "LVL_1_" + petInfo.get("tier").getAsString() + "_" + petInfo.get("type").getAsString(); } } @@ -416,6 +416,9 @@ public class PriceInfoTooltip { if (SkyblockerConfigManager.get().general.itemTooltip.enableMotesPrice && motesPricesJson == null) futureList.add(CompletableFuture.runAsync(() -> motesPricesJson = downloadPrices("motes"))); + if (SkyblockerConfig.get().general.itemTooltip.enableExoticCheck && colorJson == null) + futureList.add(CompletableFuture.runAsync(() -> colorJson = downloadPrices("color"))); + minute++; CompletableFuture.allOf(futureList.toArray(new CompletableFuture[0])) .whenComplete((unused, throwable) -> nullMsgSend = false); @@ -439,7 +442,7 @@ public class PriceInfoTooltip { String apiResponse = Http.sendGetRequest(url); - return new Gson().fromJson(apiResponse, JsonObject.class); + return SkyblockerMod.GSON.fromJson(apiResponse, JsonObject.class); } catch (Exception e) { LOGGER.warn("[Skyblocker] Failed to download " + type + " prices!", e); return null; diff --git a/src/main/java/de/hysky/skyblocker/utils/Utils.java b/src/main/java/de/hysky/skyblocker/utils/Utils.java index ff406b61..0f87e8c4 100644 --- a/src/main/java/de/hysky/skyblocker/utils/Utils.java +++ b/src/main/java/de/hysky/skyblocker/utils/Utils.java @@ -180,7 +180,7 @@ public class Utils { if (!isOnSkyblock) { if (!isInjected) { isInjected = true; - ItemTooltipCallback.EVENT.register(PriceInfoTooltip::onInjectTooltip); + ItemTooltipCallback.EVENT.register(PriceInfoTooltip::getTooltip); } isOnSkyblock = true; SkyblockEvents.JOIN.invoker().onSkyblockJoin(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/exotic/CheckExotic.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/exotic/CheckExotic.java index fb22362e..c1b90f06 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/exotic/CheckExotic.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/exotic/CheckExotic.java @@ -3,13 +3,13 @@ package me.xmrvizzy.skyblocker.skyblock.item.exotic; import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip; import me.xmrvizzy.skyblocker.utils.Constants; import net.minecraft.nbt.NbtCompound; +import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; public class CheckExotic { - static String[] SeymourIDS = {"VELVET_TOP_HAT", "CASHMERE_JACKET", "SATIN_TROUSERS", "OXFORD_SHOES"}; public static String getExpectedHex(String id) { - String color = PriceInfoTooltip.ColorApiData.get(id).getAsString(); + String color = PriceInfoTooltip.colorJson.get(id).getAsString(); if (color != null) { String[] RGBValues = color.split(","); String hex = String.format("%02x%02x%02x", Integer.parseInt(RGBValues[0]), Integer.parseInt(RGBValues[1]), Integer.parseInt(RGBValues[2])); @@ -20,86 +20,69 @@ public class CheckExotic { } } - public static Boolean checkExceptions(String id, String hex) { - if (id.startsWith("LEATHER") || id.equals("GHOST_BOOTS") || ListContainsString(SeymourIDS, id)) { + public static boolean isException(String id, String hex) { + if (id.startsWith("LEATHER") || id.equals("GHOST_BOOTS") || Constants.SEYMOUR_IDS.contains(id)) { return true; } if (id.startsWith("RANCHER")) { - return ListContainsString(Constants.Ranchers, hex); + return Constants.RANCHERS.contains(hex); } if (id.contains("ADAPTIVE_CHESTPLATE")) { - return ListContainsString(Constants.AdaptiveChest, hex); + return Constants.ADAPTIVE_CHEST.contains(hex); } else if (id.contains("ADAPTIVE")) { - return ListContainsString(Constants.Adaptive, hex); + return Constants.ADAPTIVE.contains(hex); } if (id.startsWith("REAPER")) { - return ListContainsString(Constants.Reaper, hex); + return Constants.REAPER.contains(hex); } if (id.startsWith("FAIRY")) { - return ListContainsString(Constants.FairyHexes, hex); + return Constants.FAIRY_HEXES.contains(hex); } if (id.startsWith("CRYSTAL")) { - return ListContainsString(Constants.CrystalHexes, hex); + return Constants.CRYSTAL_HEXES.contains(hex); } if (id.contains("SPOOK")) { - return ListContainsString(Constants.Spook, hex); + return Constants.SPOOK.contains(hex); } return false; } - public static String checkDyeType(String ActualHex) { - if (ListContainsString(Constants.CrystalHexes, ActualHex)) { + public static String checkDyeType(String hex) { + if (Constants.CRYSTAL_HEXES.contains(hex)) { return "CRYSTAL"; } - if (ListContainsString(Constants.FairyHexes, ActualHex)) { + if (Constants.FAIRY_HEXES.contains(hex)) { return "FAIRY"; } - if (ListContainsString(Constants.OgFairyHexes, ActualHex)) { + if (Constants.OG_FAIRY_HEXES.contains(hex)) { return "OG_FAIRY"; } - if (ListContainsString(Constants.Spook, ActualHex)) { + if (Constants.SPOOK.contains(hex)) { return "SPOOK"; } - if (ListContainsString(Constants.Glitched, ActualHex)) { + if (Constants.GLITCHED.contains(hex)) { return "GLITCHED"; } return "EXOTIC"; } - private static Boolean ListContainsString(String[] list, String s) { - for (int i = 0; i < list.length; i++) { - if (list[i].equalsIgnoreCase(s)) { - return true; - } - } - return false; - } - - public static Boolean intendedDyed(NbtCompound ItemData) { - return ItemData.getCompound("ExtraAttributes").getKeys().contains("dye_item"); + public static boolean intendedDyed(NbtCompound ItemData) { + return ItemData.getCompound("ExtraAttributes").contains("dye_item"); } - public static Formatting FormattingColor(String s) { - switch (s) { - case "CRYSTAL": return Formatting.AQUA; - case "FAIRY": return Formatting.LIGHT_PURPLE; - case "OG_FAIRY": return Formatting.DARK_PURPLE; - case "SPOOK": return Formatting.RED; - case "GLITCHED": return Formatting.BLUE; - case "EXOTIC": return Formatting.GOLD; - } - return Formatting.DARK_GRAY; + public static Formatting getFormattingColor(String s) { + return switch (s) { + case "CRYSTAL" -> Formatting.AQUA; + case "FAIRY" -> Formatting.LIGHT_PURPLE; + case "OG_FAIRY" -> Formatting.DARK_PURPLE; + case "SPOOK" -> Formatting.RED; + case "GLITCHED" -> Formatting.BLUE; + case "EXOTIC" -> Formatting.GOLD; + default -> Formatting.DARK_GRAY; + }; } - public static Text getTranslatatedText(String s) { - switch (s) { - case "CRYSTAL": return Text.translatable("skyblocker.exotic.crystal"); - case "FAIRY": return Text.translatable("skyblocker.exotic.fairy"); - case "OG_FAIRY": return Text.translatable("skyblocker.exotic.og_fairy"); - case "SPOOK": return Text.translatable("skyblocker.exotic.spook"); - case "GLITCHED": return Text.translatable("skyblocker.exotic.glitched"); - case "EXOTIC": return Text.translatable("skyblocker.exotic.exotic"); - } - return null; + public static MutableText getTranslatedText(String s) { + return Text.translatable("skyblocker.exotic." + s.toLowerCase()); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Constants.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Constants.java index 23d4a43f..a10e6025 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Constants.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Constants.java @@ -1,34 +1,33 @@ package me.xmrvizzy.skyblocker.utils; +import java.util.List; + /** * Holds generic static constants */ public interface Constants { - String LEVEL_EMBLEMS = "\u2E15\u273F\u2741\u2E19\u03B1\u270E\u2615\u2616\u2663\u213B\u2694\u27B6\u26A1\u2604\u269A\u2693\u2620\u269B\u2666\u2660\u2764\u2727\u238A\u1360\u262C\u269D\u29C9\uA214\u32D6\u2E0E\u26A0\uA541\u3020\u30C4\u2948\u2622\u2623\u273E\u269C\u0BD0\u0A6D\u2742\u16C3\u3023\u10F6\u0444\u266A\u266B\u04C3\u26C1\u26C3\u16DD\uA03E\u1C6A\u03A3\u09EB\u2603\u2654\u26C2\u12DE"; - - // Exotic Hexes - String[] CrystalHexes = {"1F0030", "46085E", "54146E", "5D1C78", "63237D", "6A2C82", "7E4196", "8E51A6", "9C64B3", "A875BD", - "B88BC9", "C6A3D4", "D9C1E3", "E5D1ED", "EFE1F5", "FCF3FF"}; - String[] FairyHexes = {"330066", "4C0099", "660033", "660066", "6600CC", "7F00FF", "99004C", "990099", "9933FF", "B266FF", - "CC0066", "CC00CC", "CC99FF", "E5CCFF", "FF007F", "FF00FF", "FF3399", "FF33FF", "FF66B2", "FF66FF", "FF99CC", "FF99FF", "FFCCE5", - "FFCCFF"}; - - String[] OgFairyHexes = {"FF99FF", "FFCCFF", "E5CCFF", "CC99FF", "CC00CC", "FF00FF", "FF33FF", "FF66FF", - "B266FF", "9933FF", "7F00FF", "660066", "6600CC", "4C0099", "330066", "990099", "660033", "99004C", "CC0066", - "660033", "99004C", "FFCCE5", "660033", "FFCCE5", "FF99CC", "FFCCE5", "FF99CC", "FF66B2"}; - - String[] Glitched = {"FFDC51", "F7DA33", "606060", "E7413C", "45413C", "4A14B7", "1793C4", "000000", "E75C3C", "65605A", - "5D2FB9", "17A8C4", "E76E3C", "88837E", "8969C8", "1CD4E4"}; // Glitched through other means such as Shark Scale upgrade color - - String[] Spook = {"000000", "070008", "0E000F", "150017", "1B001F", "220027", "29002E", "300036", "37003E", "3E0046", - "45004D", "4C0055", "52005D", "590065", "60006C", "670074", "6E007C", "750084", "7C008B", "830093", - "89009B", "9000A3", "9700AA", "993399", "9E00B2"}; - - // List of exceptions - - String[] Ranchers = {"CC5500", "000000", "0"}; - String[] Reaper = {"1B1B1B", "FF0000"}; - - String[] AdaptiveChest = {"3ABE78", "82E3D8", "BFBCB2", "D579FF", "FF4242", "FFC234"}; - String[] Adaptive = {"169F57", "2AB5A5", "6E00A0", "BB0000", "BFBCB2", "FFF7E6"}; + String LEVEL_EMBLEMS = "\u2E15\u273F\u2741\u2E19\u03B1\u270E\u2615\u2616\u2663\u213B\u2694\u27B6\u26A1\u2604\u269A\u2693\u2620\u269B\u2666\u2660\u2764\u2727\u238A\u1360\u262C\u269D\u29C9\uA214\u32D6\u2E0E\u26A0\uA541\u3020\u30C4\u2948\u2622\u2623\u273E\u269C\u0BD0\u0A6D\u2742\u16C3\u3023\u10F6\u0444\u266A\u266B\u04C3\u26C1\u26C3\u16DD\uA03E\u1C6A\u03A3\u09EB\u2603\u2654\u26C2\u12DE"; + + List<String> SEYMOUR_IDS = List.of("VELVET_TOP_HAT", "CASHMERE_JACKET", "SATIN_TROUSERS", "OXFORD_SHOES"); + + // Exotic Hexes + List<String> CRYSTAL_HEXES = List.of("1F0030", "46085E", "54146E", "5D1C78", "63237D", "6A2C82", "7E4196", "8E51A6", "9C64B3", "A875BD", + "B88BC9", "C6A3D4", "D9C1E3", "E5D1ED", "EFE1F5", "FCF3FF"); + List<String> FAIRY_HEXES = List.of("330066", "4C0099", "660033", "660066", "6600CC", "7F00FF", "99004C", "990099", "9933FF", "B266FF", + "CC0066", "CC00CC", "CC99FF", "E5CCFF", "FF007F", "FF00FF", "FF3399", "FF33FF", "FF66B2", "FF66FF", "FF99CC", "FF99FF", "FFCCE5", + "FFCCFF"); + List<String> OG_FAIRY_HEXES = List.of("FF99FF", "FFCCFF", "E5CCFF", "CC99FF", "CC00CC", "FF00FF", "FF33FF", "FF66FF", + "B266FF", "9933FF", "7F00FF", "660066", "6600CC", "4C0099", "330066", "990099", "660033", "99004C", "CC0066", + "660033", "99004C", "FFCCE5", "660033", "FFCCE5", "FF99CC", "FFCCE5", "FF99CC", "FF66B2"); + List<String> GLITCHED = List.of("FFDC51", "F7DA33", "606060", "E7413C", "45413C", "4A14B7", "1793C4", "000000", "E75C3C", "65605A", + "5D2FB9", "17A8C4", "E76E3C", "88837E", "8969C8", "1CD4E4"); // Glitched through other means such as Shark Scale upgrade colorĀ¬ + List<String> SPOOK = List.of("000000", "070008", "0E000F", "150017", "1B001F", "220027", "29002E", "300036", "37003E", "3E0046", + "45004D", "4C0055", "52005D", "590065", "60006C", "670074", "6E007C", "750084", "7C008B", "830093", + "89009B", "9000A3", "9700AA", "993399", "9E00B2"); + + // List of exceptions + List<String> RANCHERS = List.of("CC5500", "000000", "0"); + List<String> REAPER = List.of("1B1B1B", "FF0000"); + List<String> ADAPTIVE_CHEST = List.of("3ABE78", "82E3D8", "BFBCB2", "D579FF", "FF4242", "FFC234"); + List<String> ADAPTIVE = List.of("169F57", "2AB5A5", "6E00A0", "BB0000", "BFBCB2", "FFF7E6"); } |