aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-09-15 23:46:12 -0400
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-10-30 00:25:39 -0400
commitceb5dbbea4079eadca90a96e714cc5539700a5d4 (patch)
tree7d94e7bb71d2aeb478d484636adf573b5287194a /src/main
parent24a77b37e8035e2b5e7c6d0f76adf13810ec2a26 (diff)
downloadSkyblocker-ceb5dbbea4079eadca90a96e714cc5539700a5d4.tar.gz
Skyblocker-ceb5dbbea4079eadca90a96e714cc5539700a5d4.tar.bz2
Skyblocker-ceb5dbbea4079eadca90a96e714cc5539700a5d4.zip
Refactor CheckExotic
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/PriceInfoTooltip.java61
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/Utils.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/item/exotic/CheckExotic.java79
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/Constants.java53
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");
}