aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip
diff options
context:
space:
mode:
authorRime <81419447+Emirlol@users.noreply.github.com>2024-06-01 14:01:14 +0300
committerRime <81419447+Emirlol@users.noreply.github.com>2024-06-08 04:13:47 +0300
commitd5a5fc05b8d7f73c16b069d45396e55e4d0b3efa (patch)
treef3358c8645728e29ec38c20dea098cac54919a41 /src/main/java/de/hysky/skyblocker/skyblock/item/tooltip
parent8eab800571a599ef5f5ec7c3a353e8bb3b948b69 (diff)
downloadSkyblocker-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')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java70
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AccessoryTooltip.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AvgBinTooltip.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/BazaarPriceTooltip.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/ColorTooltip.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/LBinTooltip.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/MotesTooltip.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/MuseumTooltip.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/NpcPriceTooltip.java2
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)