diff options
author | Rime <81419447+Emirlol@users.noreply.github.com> | 2024-06-01 14:01:14 +0300 |
---|---|---|
committer | Rime <81419447+Emirlol@users.noreply.github.com> | 2024-06-08 04:13:47 +0300 |
commit | d5a5fc05b8d7f73c16b069d45396e55e4d0b3efa (patch) | |
tree | f3358c8645728e29ec38c20dea098cac54919a41 /src/main/java/de/hysky/skyblocker/skyblock/item/tooltip | |
parent | 8eab800571a599ef5f5ec7c3a353e8bb3b948b69 (diff) | |
download | Skyblocker-d5a5fc05b8d7f73c16b069d45396e55e4d0b3efa.tar.gz Skyblocker-d5a5fc05b8d7f73c16b069d45396e55e4d0b3efa.tar.bz2 Skyblocker-d5a5fc05b8d7f73c16b069d45396e55e4d0b3efa.zip |
Switch to interface injection to cache the items' internal ids and neu names
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/item/tooltip')
9 files changed, 11 insertions, 89 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java index 00ca80e6..e6a364e4 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java @@ -1,17 +1,11 @@ package de.hysky.skyblocker.skyblock.item.tooltip; -import com.google.gson.JsonObject; -import de.hysky.skyblocker.SkyblockerMod; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.config.configs.GeneralConfig; import de.hysky.skyblocker.utils.Constants; -import de.hysky.skyblocker.utils.ItemUtils; import de.hysky.skyblocker.utils.Utils; import de.hysky.skyblocker.utils.scheduler.Scheduler; import net.minecraft.client.MinecraftClient; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import org.jetbrains.annotations.NotNull; @@ -21,7 +15,6 @@ import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.List; import java.util.Locale; -import java.util.Optional; import java.util.concurrent.CompletableFuture; public class ItemTooltip { @@ -56,7 +49,6 @@ public class ItemTooltip { return neuName; } - public static void nullWarning() { if (!sentNullWarning && client.player != null) { LOGGER.warn(Constants.PREFIX.get().append(Text.translatable("skyblocker.itemTooltip.nullMessage")).getString()); @@ -64,68 +56,6 @@ public class ItemTooltip { } } - // TODO What in the world is this? - public static String getInternalNameFromNBT(ItemStack stack, boolean internalIDOnly) { - NbtCompound customData = ItemUtils.getCustomData(stack); - - if (customData == null || !customData.contains(ItemUtils.ID, NbtElement.STRING_TYPE)) { - return null; - } - String internalName = customData.getString(ItemUtils.ID); - - if (internalIDOnly) { - return internalName; - } - - // Transformation to API format. - if (customData.contains("is_shiny")) { - return "ISSHINY_" + internalName; - } - - switch (internalName) { - case "ENCHANTED_BOOK" -> { - if (customData.contains("enchantments")) { - NbtCompound enchants = customData.getCompound("enchantments"); - Optional<String> firstEnchant = enchants.getKeys().stream().findFirst(); - String enchant = firstEnchant.orElse(""); - return "ENCHANTMENT_" + enchant.toUpperCase(Locale.ENGLISH) + "_" + enchants.getInt(enchant); - } - } - case "PET" -> { - if (customData.contains("petInfo")) { - JsonObject petInfo = SkyblockerMod.GSON.fromJson(customData.getString("petInfo"), JsonObject.class); - return "LVL_1_" + petInfo.get("tier").getAsString() + "_" + petInfo.get("type").getAsString(); - } - } - case "POTION" -> { - String enhanced = customData.contains("enhanced") ? "_ENHANCED" : ""; - String extended = customData.contains("extended") ? "_EXTENDED" : ""; - String splash = customData.contains("splash") ? "_SPLASH" : ""; - if (customData.contains("potion") && customData.contains("potion_level")) { - return (customData.getString("potion") + "_" + internalName + "_" + customData.getInt("potion_level") - + enhanced + extended + splash).toUpperCase(Locale.ENGLISH); - } - } - case "RUNE" -> { - if (customData.contains("runes")) { - NbtCompound runes = customData.getCompound("runes"); - Optional<String> firstRunes = runes.getKeys().stream().findFirst(); - String rune = firstRunes.orElse(""); - return rune.toUpperCase(Locale.ENGLISH) + "_RUNE_" + runes.getInt(rune); - } - } - case "ATTRIBUTE_SHARD" -> { - if (customData.contains("attributes")) { - NbtCompound shards = customData.getCompound("attributes"); - Optional<String> firstShards = shards.getKeys().stream().findFirst(); - String shard = firstShards.orElse(""); - return internalName + "-" + shard.toUpperCase(Locale.ENGLISH) + "_" + shards.getInt(shard); - } - } - } - return internalName; - } - public static Text getCoinsMessage(double price, int count) { // Format the price string once String priceString = String.format(Locale.ENGLISH, "%1$,.1f", price); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AccessoryTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AccessoryTooltip.java index d26e1846..18991a1c 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AccessoryTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AccessoryTooltip.java @@ -1,7 +1,6 @@ package de.hysky.skyblocker.skyblock.item.tooltip.adders; import de.hysky.skyblocker.skyblock.item.tooltip.AccessoriesHelper; -import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip; import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType; import it.unimi.dsi.fastutil.Pair; import net.minecraft.screen.slot.Slot; @@ -18,7 +17,7 @@ public class AccessoryTooltip extends TooltipAdder { @Override public void addToTooltip(List<Text> lines, Slot focusedSlot) { - final String internalID = ItemTooltip.getInternalNameFromNBT(focusedSlot.getStack(), true); + final String internalID = focusedSlot.getStack().skyblocker$getInternalId(true); if (TooltipInfoType.ACCESSORIES.isTooltipEnabledAndHasOrNullWarning(internalID)) { Pair<AccessoriesHelper.AccessoryReport, String> report = AccessoriesHelper.calculateReport4Accessory(internalID); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AvgBinTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AvgBinTooltip.java index 8bb71c9a..85c8d4e1 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AvgBinTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AvgBinTooltip.java @@ -19,12 +19,10 @@ public class AvgBinTooltip extends TooltipAdder { @Override public void addToTooltip(List<Text> lines, Slot focusedSlot) { final ItemStack itemStack = focusedSlot.getStack(); - String neuName = ItemTooltip.getInternalNameFromNBT(itemStack, false); - String internalID = ItemTooltip.getInternalNameFromNBT(itemStack, true); + String neuName = itemStack.skyblocker$getNeuName(); + String internalID = itemStack.skyblocker$getInternalId(true); if (neuName == null || internalID == null) return; - if (neuName.startsWith("ISSHINY_")) neuName = internalID; - if (SkyblockerConfigManager.get().general.itemTooltip.enableAvgBIN) { if (TooltipInfoType.ONE_DAY_AVERAGE.getData() == null || TooltipInfoType.THREE_DAY_AVERAGE.getData() == null) { ItemTooltip.nullWarning(); @@ -33,8 +31,6 @@ public class AvgBinTooltip extends TooltipAdder { We are skipping check average prices for potions, runes and enchanted books because there is no data for their in API. */ - neuName = ItemTooltip.getNeuName(internalID, neuName); - if (!neuName.isEmpty() && LBinTooltip.lbinExist) { GeneralConfig.Average type = ItemTooltip.config.avg; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/BazaarPriceTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/BazaarPriceTooltip.java index 12d7e821..5ebe1f30 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/BazaarPriceTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/BazaarPriceTooltip.java @@ -22,9 +22,9 @@ public class BazaarPriceTooltip extends TooltipAdder { public void addToTooltip(List<Text> lines, Slot focusedSlot) { bazaarExist = false; final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = ItemTooltip.getInternalNameFromNBT(itemStack, true); + final String internalID = itemStack.skyblocker$getInternalId(true); if (internalID == null) return; - String name = ItemTooltip.getInternalNameFromNBT(itemStack, false); + String name = itemStack.skyblocker$getInternalId(false); if (name == null) return; if (name.startsWith("ISSHINY_")) name = "SHINY_" + internalID; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/ColorTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/ColorTooltip.java index d806faa8..ac28e08b 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/ColorTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/ColorTooltip.java @@ -1,7 +1,6 @@ package de.hysky.skyblocker.skyblock.item.tooltip.adders; import de.hysky.skyblocker.config.SkyblockerConfigManager; -import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip; import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType; import de.hysky.skyblocker.utils.Constants; import de.hysky.skyblocker.utils.ItemUtils; @@ -29,7 +28,7 @@ public class ColorTooltip extends TooltipAdder { @Override public void addToTooltip(List<Text> lines, Slot focusedSlot) { final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = ItemTooltip.getInternalNameFromNBT(itemStack, true); + final String internalID = itemStack.skyblocker$getInternalId(true); if (TooltipInfoType.COLOR.isTooltipEnabledAndHasOrNullWarning(internalID) && itemStack.contains(DataComponentTypes.DYED_COLOR)) { String uuid = ItemUtils.getItemUuid(itemStack); boolean hasCustomDye = SkyblockerConfigManager.get().general.customDyeColors.containsKey(uuid) || SkyblockerConfigManager.get().general.customAnimatedDyes.containsKey(uuid); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/LBinTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/LBinTooltip.java index 7d109081..8f3bfe09 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/LBinTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/LBinTooltip.java @@ -20,9 +20,9 @@ public class LBinTooltip extends TooltipAdder { public void addToTooltip(List<Text> lines, Slot focusedSlot) { lbinExist = false; final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = ItemTooltip.getInternalNameFromNBT(itemStack, true); + final String internalID = itemStack.skyblocker$getInternalId(true); if (internalID == null) return; - String name = ItemTooltip.getInternalNameFromNBT(itemStack, false); + String name = itemStack.skyblocker$getInternalId(false); if (name == null) return; if (name.startsWith("ISSHINY_")) name = "SHINY_" + internalID; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/MotesTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/MotesTooltip.java index 285a1449..7311e614 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/MotesTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/MotesTooltip.java @@ -1,7 +1,6 @@ package de.hysky.skyblocker.skyblock.item.tooltip.adders; import de.hysky.skyblocker.config.SkyblockerConfigManager; -import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip; import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType; import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; @@ -20,7 +19,7 @@ public class MotesTooltip extends TooltipAdder { @Override public void addToTooltip(List<Text> lines, Slot focusedSlot) { final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = ItemTooltip.getInternalNameFromNBT(itemStack, true); + final String internalID = itemStack.skyblocker$getInternalId(true); if (internalID != null && TooltipInfoType.MOTES.isTooltipEnabledAndHasOrNullWarning(internalID)) { lines.add(Text.literal(String.format("%-20s", "Motes Price:")) .formatted(Formatting.LIGHT_PURPLE) diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/MuseumTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/MuseumTooltip.java index 734dd508..d6e2c13b 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/MuseumTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/MuseumTooltip.java @@ -1,7 +1,6 @@ package de.hysky.skyblocker.skyblock.item.tooltip.adders; import de.hysky.skyblocker.skyblock.item.MuseumItemCache; -import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip; import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType; import de.hysky.skyblocker.utils.ItemUtils; import net.minecraft.item.ItemStack; @@ -20,7 +19,7 @@ public class MuseumTooltip extends TooltipAdder { @Override public void addToTooltip(List<Text> lines, Slot focusedSlot) { final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = ItemTooltip.getInternalNameFromNBT(itemStack, true); + final String internalID = itemStack.skyblocker$getInternalId(true); if (TooltipInfoType.MUSEUM.isTooltipEnabledAndHasOrNullWarning(internalID)) { String itemCategory = TooltipInfoType.MUSEUM.getData().get(internalID).getAsString(); String format = switch (itemCategory) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/NpcPriceTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/NpcPriceTooltip.java index 3b12f482..3ffdc003 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/NpcPriceTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/NpcPriceTooltip.java @@ -17,7 +17,7 @@ public class NpcPriceTooltip extends TooltipAdder { @Override public void addToTooltip(List<Text> lines, Slot focusedSlot) { final ItemStack stack = focusedSlot.getStack(); - final String internalID = ItemTooltip.getInternalNameFromNBT(stack, true); + final String internalID = stack.skyblocker$getInternalId(true); if (internalID != null && TooltipInfoType.NPC.isTooltipEnabledAndHasOrNullWarning(internalID)) { lines.add(Text.literal(String.format("%-21s", "NPC Sell Price:")) .formatted(Formatting.YELLOW) |