aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker
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
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')
-rw-r--r--src/main/java/de/hysky/skyblocker/injected/ItemStackInternalIdGetter.java11
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/ItemStackMixin.java107
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/TeleportOverlay.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java4
-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
14 files changed, 133 insertions, 97 deletions
diff --git a/src/main/java/de/hysky/skyblocker/injected/ItemStackInternalIdGetter.java b/src/main/java/de/hysky/skyblocker/injected/ItemStackInternalIdGetter.java
new file mode 100644
index 00000000..25b84516
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/injected/ItemStackInternalIdGetter.java
@@ -0,0 +1,11 @@
+package de.hysky.skyblocker.injected;
+
+public interface ItemStackInternalIdGetter {
+ default String skyblocker$getInternalId(boolean internalIdOnly) {
+ return "";
+ }
+
+ default String skyblocker$getNeuName() {
+ return "";
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/mixins/ItemStackMixin.java b/src/main/java/de/hysky/skyblocker/mixins/ItemStackMixin.java
index 878a93ac..48710bc0 100644
--- a/src/main/java/de/hysky/skyblocker/mixins/ItemStackMixin.java
+++ b/src/main/java/de/hysky/skyblocker/mixins/ItemStackMixin.java
@@ -1,13 +1,19 @@
package de.hysky.skyblocker.mixins;
+import com.google.gson.JsonObject;
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
+import de.hysky.skyblocker.SkyblockerMod;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.injected.ItemStackInternalIdGetter;
+import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip;
import de.hysky.skyblocker.utils.ItemUtils;
import de.hysky.skyblocker.utils.Utils;
import it.unimi.dsi.fastutil.ints.IntIntPair;
import net.minecraft.component.type.ItemEnchantmentsComponent;
import net.minecraft.item.ItemStack;
import net.minecraft.item.TooltipAppender;
+import net.minecraft.nbt.NbtCompound;
+import net.minecraft.nbt.NbtElement;
import net.minecraft.text.Text;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@@ -17,8 +23,11 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+import java.util.Locale;
+import java.util.Optional;
+
@Mixin(ItemStack.class)
-public abstract class ItemStackMixin {
+public abstract class ItemStackMixin implements ItemStackInternalIdGetter {
@Shadow
public abstract int getDamage();
@@ -29,6 +38,15 @@ public abstract class ItemStackMixin {
@Unique
private int maxDamage;
+ @Unique
+ private String internalId;
+
+ @Unique
+ private String internalName;
+
+ @Unique
+ private String neuName;
+
@ModifyReturnValue(method = "getName", at = @At("RETURN"))
private Text skyblocker$customItemNames(Text original) {
if (Utils.isOnSkyblock()) {
@@ -103,4 +121,91 @@ public abstract class ItemStackMixin {
setDamage(durability.rightInt() - durability.leftInt());
return true;
}
+
+ @Override
+ public String skyblocker$getInternalId(boolean internalIDOnly) {
+ if (internalIDOnly) {
+ if (internalId != null && !internalId.isEmpty()) return internalId;
+ internalId = skyblocker$getInternalNameFromNBT(true);
+ return internalId;
+ } // else
+ if (internalName != null && !internalName.isEmpty()) return internalName;
+ internalName = skyblocker$getInternalNameFromNBT(false);
+ return internalName;
+ }
+
+ @Override
+ public String skyblocker$getNeuName() {
+ if (neuName != null && !neuName.isEmpty()) return neuName;
+ String name = skyblocker$getInternalId(false);
+ String internalId = skyblocker$getInternalId(true);
+ if (name == null || internalId == null) return "";
+
+ if (name.startsWith("ISSHINY_")) name = internalId;
+
+ neuName = ItemTooltip.getNeuName(internalId, name);
+ return neuName;
+ }
+
+ @Unique
+ private String skyblocker$getInternalNameFromNBT(boolean internalIDOnly) {
+ NbtCompound customData = ItemUtils.getCustomData((ItemStack) (Object) this);
+
+ if (customData == null || !customData.contains(ItemUtils.ID, NbtElement.STRING_TYPE)) {
+ return null;
+ }
+ String customDataString = customData.getString(ItemUtils.ID);
+
+ if (internalIDOnly) {
+ return customDataString;
+ }
+
+ // Transformation to API format.
+ if (customData.contains("is_shiny")) {
+ return "ISSHINY_" + customDataString;
+ }
+
+ switch (customDataString) {
+ 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") + "_" + customDataString + "_" + 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 customDataString + "-" + shard.toUpperCase(Locale.ENGLISH) + "_" + shards.getInt(shard);
+ }
+ }
+ }
+ return customDataString;
+ }
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java
index 7f8b2c71..0ca15e81 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java
@@ -6,7 +6,6 @@ import de.hysky.skyblocker.config.configs.DungeonsConfig;
import de.hysky.skyblocker.config.configs.UIAndVisualsConfig;
import de.hysky.skyblocker.mixins.accessors.HandledScreenAccessor;
import de.hysky.skyblocker.mixins.accessors.ScreenAccessor;
-import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip;
import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType;
import de.hysky.skyblocker.utils.ItemUtils;
import de.hysky.skyblocker.utils.Utils;
@@ -81,7 +80,7 @@ public class ChestValue {
}
String name = stack.getName().getString();
- String id = ItemTooltip.getInternalNameFromNBT(stack, false);
+ String id = stack.skyblocker$getInternalId(false);
//Regular item price
if (id != null) {
@@ -160,7 +159,7 @@ public class ChestValue {
continue;
}
- String id = ItemTooltip.getInternalNameFromNBT(stack, false);
+ String id = stack.skyblocker$getInternalId(false);
if (id != null) {
LongBooleanPair priceData = getItemPrice(id);
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/TeleportOverlay.java b/src/main/java/de/hysky/skyblocker/skyblock/TeleportOverlay.java
index 042b126b..b431dcc9 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/TeleportOverlay.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/TeleportOverlay.java
@@ -1,7 +1,6 @@
package de.hysky.skyblocker.skyblock;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
-import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip;
import de.hysky.skyblocker.utils.ItemUtils;
import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.utils.render.RenderHelper;
@@ -27,7 +26,7 @@ public class TeleportOverlay {
private static void render(WorldRenderContext wrc) {
if (Utils.isOnSkyblock() && SkyblockerConfigManager.get().uiAndVisuals.teleportOverlay.enableTeleportOverlays && client.player != null && client.world != null) {
ItemStack heldItem = client.player.getMainHandStack();
- String itemId = ItemTooltip.getInternalNameFromNBT(heldItem, true);
+ String itemId = heldItem.skyblocker$getInternalId(true);
NbtCompound customData = ItemUtils.getCustomData(heldItem);
if (itemId != null) {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java
index fd69d886..3a825e81 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java
@@ -295,8 +295,8 @@ public class AuctionBrowserScreen extends AbstractCustomHypixelGUI<AuctionHouseS
String coins = split[1].replace(",", "").replace("coins", "").trim();
try {
long parsed = Long.parseLong(coins);
- String name = ItemTooltip.getInternalNameFromNBT(stack, false);
- String internalID = ItemTooltip.getInternalNameFromNBT(stack, true);
+ String name = stack.skyblocker$getInternalId(false);
+ String internalID = stack.skyblocker$getInternalId(true);
String neuName = name;
if (name == null || internalID == null) break;
if (name.startsWith("ISSHINY_")) {
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)