diff options
Diffstat (limited to 'src/main/java/de/hysky/skyblocker')
5 files changed, 126 insertions, 6 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java index 8905644f..4959ca3b 100644 --- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java @@ -178,7 +178,7 @@ public class SkyblockerConfig { public FairySouls fairySouls = new FairySouls(); @SerialEntry - public MythologicalRitual mythologicalRitual = new MythologicalRitual(); + public MythologicalRitual mythologicalRitual = new MythologicalRitual(); @SerialEntry public ItemCooldown itemCooldown = new ItemCooldown(); @@ -485,6 +485,9 @@ public class SkyblockerConfig { @SerialEntry public boolean enableMuseumDate = true; + + @SerialEntry + public boolean enableExoticCheck = true; } public static class ItemInfoDisplay { diff --git a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java index 10b21891..8ce00172 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java @@ -356,6 +356,13 @@ public class GeneralCategory { newValue -> config.general.itemTooltip.enableMuseumDate = newValue) .controller(ConfigUtils::createBooleanController) .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableExoticCheck")) + .binding(defaults.general.itemTooltip.enableExoticCheck, + () -> config.general.itemTooltip.enableExoticCheck, + newValue -> config.general.itemTooltip.enableExoticCheck = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) .build()) //Item Info Display diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/ExoticCheck.java b/src/main/java/de/hysky/skyblocker/skyblock/item/ExoticCheck.java new file mode 100644 index 00000000..130ef049 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/ExoticCheck.java @@ -0,0 +1,87 @@ +package de.hysky.skyblocker.skyblock.item; + +import de.hysky.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 ExoticCheck { + public static String getExpectedHex(String id) { + 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])); + return hex.toUpperCase(); + } else { + System.out.println("Color is null"); + return null; + } + } + + 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 Constants.RANCHERS.contains(hex); + } + if (id.contains("ADAPTIVE_CHESTPLATE")) { + return Constants.ADAPTIVE_CHEST.contains(hex); + } else if (id.contains("ADAPTIVE")) { + return Constants.ADAPTIVE.contains(hex); + } + if (id.startsWith("REAPER")) { + return Constants.REAPER.contains(hex); + } + if (id.startsWith("FAIRY")) { + return Constants.FAIRY_HEXES.contains(hex); + } + if (id.startsWith("CRYSTAL")) { + return Constants.CRYSTAL_HEXES.contains(hex); + } + if (id.contains("SPOOK")) { + return Constants.SPOOK.contains(hex); + } + return false; + } + + public static String checkDyeType(String hex) { + if (Constants.CRYSTAL_HEXES.contains(hex)) { + return "CRYSTAL"; + } + if (Constants.FAIRY_HEXES.contains(hex)) { + return "FAIRY"; + } + if (Constants.OG_FAIRY_HEXES.contains(hex)) { + return "OG_FAIRY"; + } + if (Constants.SPOOK.contains(hex)) { + return "SPOOK"; + } + if (Constants.GLITCHED.contains(hex)) { + return "GLITCHED"; + } + return "EXOTIC"; + } + + public static boolean intendedDyed(NbtCompound ItemData) { + return ItemData.getCompound("ExtraAttributes").contains("dye_item"); + } + + 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 MutableText getTranslatedText(String s) { + return Text.translatable("skyblocker.exotic." + s.toLowerCase()); + } +} 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 e8d619cd..9e38f276 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/PriceInfoTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/PriceInfoTooltip.java @@ -4,7 +4,6 @@ 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; import de.hysky.skyblocker.utils.Constants; import de.hysky.skyblocker.utils.Http; import de.hysky.skyblocker.utils.ItemUtils; @@ -39,7 +38,6 @@ public class PriceInfoTooltip { private static JsonObject motesPricesJson; public static JsonObject colorJson; private static volatile boolean nullMsgSend = false; - private final static Gson gson = new Gson(); private static final Map<String, String> apiAddresses; private static long npcHash = 0; private static long museumHash = 0; @@ -62,7 +60,7 @@ public class PriceInfoTooltip { return; } - if (SkyblockerConfig.get().general.itemTooltip.enableExoticCheck) { + if (SkyblockerConfigManager.get().general.itemTooltip.enableExoticCheck) { if (colorJson == null) { nullWarning(); } else if (stack.getNbt() != null) { @@ -416,11 +414,11 @@ 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) + if (SkyblockerConfigManager.get().general.itemTooltip.enableExoticCheck && colorJson == null) futureList.add(CompletableFuture.runAsync(() -> colorJson = downloadPrices("color"))); minute++; - CompletableFuture.allOf(futureList.toArray(new CompletableFuture[0])) + CompletableFuture.allOf(futureList.toArray(CompletableFuture[]::new)) .whenComplete((unused, throwable) -> nullMsgSend = false); }, 1200, true); } diff --git a/src/main/java/de/hysky/skyblocker/utils/Constants.java b/src/main/java/de/hysky/skyblocker/utils/Constants.java index f144b519..94eacf49 100644 --- a/src/main/java/de/hysky/skyblocker/utils/Constants.java +++ b/src/main/java/de/hysky/skyblocker/utils/Constants.java @@ -1,5 +1,6 @@ package de.hysky.skyblocker.utils; +import java.util.List; import java.util.function.IntFunction; import java.util.function.Supplier; import java.util.function.UnaryOperator; @@ -28,4 +29,28 @@ public interface Constants { .append(Text.literal("e").styled(WITH_COLOR.apply(0x12d5eb))) .append(Text.literal("r").styled(WITH_COLOR.apply(0x14d0ff))) .append(Text.literal("] ").formatted(Formatting.GRAY)); + + + 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"); } |