From d5a5fc05b8d7f73c16b069d45396e55e4d0b3efa Mon Sep 17 00:00:00 2001 From: Rime <81419447+Emirlol@users.noreply.github.com> Date: Sat, 1 Jun 2024 14:01:14 +0300 Subject: Switch to interface injection to cache the items' internal ids and neu names --- src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java') 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); -- cgit From 446e9e2214c24f67c1e6bb8d7a29214e72e51707 Mon Sep 17 00:00:00 2001 From: Rime <81419447+Emirlol@users.noreply.github.com> Date: Tue, 4 Jun 2024 20:24:12 +0300 Subject: Rename injected methods and separate internalId and internalName into 2 methods --- .../injected/ItemStackInternalIdGetter.java | 8 +++++-- .../de/hysky/skyblocker/mixins/ItemStackMixin.java | 26 ++++++++++++---------- .../de/hysky/skyblocker/skyblock/ChestValue.java | 12 +++++----- .../hysky/skyblocker/skyblock/TeleportOverlay.java | 2 +- .../skyblock/auction/AuctionBrowserScreen.java | 4 ++-- .../item/tooltip/adders/AccessoryTooltip.java | 2 +- .../item/tooltip/adders/AvgBinTooltip.java | 4 ++-- .../item/tooltip/adders/BazaarPriceTooltip.java | 4 ++-- .../skyblock/item/tooltip/adders/ColorTooltip.java | 2 +- .../skyblock/item/tooltip/adders/LBinTooltip.java | 4 ++-- .../skyblock/item/tooltip/adders/MotesTooltip.java | 2 +- .../item/tooltip/adders/MuseumTooltip.java | 2 +- .../item/tooltip/adders/NpcPriceTooltip.java | 2 +- 13 files changed, 40 insertions(+), 34 deletions(-) (limited to 'src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java') diff --git a/src/main/java/de/hysky/skyblocker/injected/ItemStackInternalIdGetter.java b/src/main/java/de/hysky/skyblocker/injected/ItemStackInternalIdGetter.java index 25b84516..87c1304b 100644 --- a/src/main/java/de/hysky/skyblocker/injected/ItemStackInternalIdGetter.java +++ b/src/main/java/de/hysky/skyblocker/injected/ItemStackInternalIdGetter.java @@ -1,11 +1,15 @@ package de.hysky.skyblocker.injected; public interface ItemStackInternalIdGetter { - default String skyblocker$getInternalId(boolean internalIdOnly) { + default String getInternalId() { return ""; } - default String skyblocker$getNeuName() { + default String getInternalName() { + return ""; + } + + default String 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 48710bc0..8b5dd31d 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/ItemStackMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/ItemStackMixin.java @@ -123,27 +123,29 @@ public abstract class ItemStackMixin implements ItemStackInternalIdGetter { } @Override - public String skyblocker$getInternalId(boolean internalIDOnly) { - if (internalIDOnly) { - if (internalId != null && !internalId.isEmpty()) return internalId; - internalId = skyblocker$getInternalNameFromNBT(true); - return internalId; - } // else + public String getInternalId() { + if (internalId != null && !internalId.isEmpty()) return internalId; + internalId = skyblocker$getInternalNameFromNBT(true); + return internalId; + } + + @Override + public String getInternalName() { if (internalName != null && !internalName.isEmpty()) return internalName; internalName = skyblocker$getInternalNameFromNBT(false); return internalName; } @Override - public String skyblocker$getNeuName() { + public String getNeuName() { if (neuName != null && !neuName.isEmpty()) return neuName; - String name = skyblocker$getInternalId(false); - String internalId = skyblocker$getInternalId(true); - if (name == null || internalId == null) return ""; + String name = getInternalName(); + String id = getInternalId(); + if (name == null || id == null) return ""; - if (name.startsWith("ISSHINY_")) name = internalId; + if (name.startsWith("ISSHINY_")) name = id; - neuName = ItemTooltip.getNeuName(internalId, name); + neuName = ItemTooltip.getNeuName(id, name); return neuName; } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java index 0ca15e81..3d1da0bd 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java @@ -80,11 +80,11 @@ public class ChestValue { } String name = stack.getName().getString(); - String id = stack.skyblocker$getInternalId(false); + String internalName = stack.getInternalName(); //Regular item price - if (id != null) { - LongBooleanPair priceData = getItemPrice(id); + if (internalName != null) { + LongBooleanPair priceData = getItemPrice(internalName); if (!priceData.rightBoolean()) hasIncompleteData = true; @@ -159,10 +159,10 @@ public class ChestValue { continue; } - String id = stack.skyblocker$getInternalId(false); + String internalName = stack.getInternalName(); - if (id != null) { - LongBooleanPair priceData = getItemPrice(id); + if (internalName != null) { + LongBooleanPair priceData = getItemPrice(internalName); if (!priceData.rightBoolean()) hasIncompleteData = true; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/TeleportOverlay.java b/src/main/java/de/hysky/skyblocker/skyblock/TeleportOverlay.java index b431dcc9..d8a05809 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/TeleportOverlay.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/TeleportOverlay.java @@ -26,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 = heldItem.skyblocker$getInternalId(true); + String itemId = heldItem.getInternalId(); 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 3a825e81..21bd965c 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 lines, Slot focusedSlot) { - final String internalID = focusedSlot.getStack().skyblocker$getInternalId(true); + final String internalID = focusedSlot.getStack().getInternalId(); if (TooltipInfoType.ACCESSORIES.isTooltipEnabledAndHasOrNullWarning(internalID)) { Pair 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 85c8d4e1..ba06b54d 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,8 +19,8 @@ public class AvgBinTooltip extends TooltipAdder { @Override public void addToTooltip(List lines, Slot focusedSlot) { final ItemStack itemStack = focusedSlot.getStack(); - String neuName = itemStack.skyblocker$getNeuName(); - String internalID = itemStack.skyblocker$getInternalId(true); + String neuName = itemStack.getNeuName(); + String internalID = itemStack.getInternalId(); if (neuName == null || internalID == null) return; if (SkyblockerConfigManager.get().general.itemTooltip.enableAvgBIN) { 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 5ebe1f30..afd6d301 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 lines, Slot focusedSlot) { bazaarExist = false; final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = itemStack.skyblocker$getInternalId(true); + final String internalID = itemStack.getInternalId(); if (internalID == null) return; - String name = itemStack.skyblocker$getInternalId(false); + String name = itemStack.getInternalName(); 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 ac28e08b..85be7215 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 @@ -28,7 +28,7 @@ public class ColorTooltip extends TooltipAdder { @Override public void addToTooltip(List lines, Slot focusedSlot) { final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = itemStack.skyblocker$getInternalId(true); + final String internalID = itemStack.getInternalId(); 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 8f3bfe09..da6b9ed0 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 lines, Slot focusedSlot) { lbinExist = false; final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = itemStack.skyblocker$getInternalId(true); + final String internalID = itemStack.getInternalId(); if (internalID == null) return; - String name = itemStack.skyblocker$getInternalId(false); + String name = itemStack.getInternalName(); 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 7311e614..6e286ea6 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 @@ -19,7 +19,7 @@ public class MotesTooltip extends TooltipAdder { @Override public void addToTooltip(List lines, Slot focusedSlot) { final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = itemStack.skyblocker$getInternalId(true); + final String internalID = itemStack.getInternalId(); 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 d6e2c13b..5ce0e730 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 @@ -19,7 +19,7 @@ public class MuseumTooltip extends TooltipAdder { @Override public void addToTooltip(List lines, Slot focusedSlot) { final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = itemStack.skyblocker$getInternalId(true); + final String internalID = itemStack.getInternalId(); 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 3ffdc003..d59d26f6 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 lines, Slot focusedSlot) { final ItemStack stack = focusedSlot.getStack(); - final String internalID = stack.skyblocker$getInternalId(true); + final String internalID = stack.getInternalId(); if (internalID != null && TooltipInfoType.NPC.isTooltipEnabledAndHasOrNullWarning(internalID)) { lines.add(Text.literal(String.format("%-21s", "NPC Sell Price:")) .formatted(Formatting.YELLOW) -- cgit From 25ee7d7419ecd1dccdb06f0b0718fd20bebc0d14 Mon Sep 17 00:00:00 2001 From: Rime <81419447+Emirlol@users.noreply.github.com> Date: Fri, 7 Jun 2024 16:54:36 +0300 Subject: Rename ItemStackInternalIdGetter and its methods to be more distinguishable --- .../injected/ItemStackInternalIdGetter.java | 20 ---------------- .../hysky/skyblocker/injected/SkyblockerStack.java | 20 ++++++++++++++++ .../de/hysky/skyblocker/mixins/ItemStackMixin.java | 28 +++++++++++----------- .../de/hysky/skyblocker/skyblock/ChestValue.java | 4 ++-- .../hysky/skyblocker/skyblock/TeleportOverlay.java | 2 +- .../skyblock/auction/AuctionBrowserScreen.java | 4 ++-- .../item/slottext/adders/PrehistoricEggAdder.java | 2 +- .../slottext/adders/RancherBootsSpeedAdder.java | 2 +- .../item/tooltip/adders/AccessoryTooltip.java | 2 +- .../item/tooltip/adders/AvgBinTooltip.java | 2 +- .../item/tooltip/adders/BazaarPriceTooltip.java | 4 ++-- .../skyblock/item/tooltip/adders/ColorTooltip.java | 2 +- .../skyblock/item/tooltip/adders/LBinTooltip.java | 4 ++-- .../skyblock/item/tooltip/adders/MotesTooltip.java | 2 +- .../item/tooltip/adders/MuseumTooltip.java | 2 +- .../item/tooltip/adders/NpcPriceTooltip.java | 2 +- src/main/resources/fabric.mod.json | 2 +- 17 files changed, 52 insertions(+), 52 deletions(-) delete mode 100644 src/main/java/de/hysky/skyblocker/injected/ItemStackInternalIdGetter.java create mode 100644 src/main/java/de/hysky/skyblocker/injected/SkyblockerStack.java (limited to 'src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java') diff --git a/src/main/java/de/hysky/skyblocker/injected/ItemStackInternalIdGetter.java b/src/main/java/de/hysky/skyblocker/injected/ItemStackInternalIdGetter.java deleted file mode 100644 index d1992705..00000000 --- a/src/main/java/de/hysky/skyblocker/injected/ItemStackInternalIdGetter.java +++ /dev/null @@ -1,20 +0,0 @@ -package de.hysky.skyblocker.injected; - -import org.jetbrains.annotations.Nullable; - -public interface ItemStackInternalIdGetter { - @Nullable - default String getInternalId() { - return ""; - } - - @Nullable - default String getInternalName() { - return ""; - } - - @Nullable - default String getNeuName() { - return ""; - } -} diff --git a/src/main/java/de/hysky/skyblocker/injected/SkyblockerStack.java b/src/main/java/de/hysky/skyblocker/injected/SkyblockerStack.java new file mode 100644 index 00000000..dc3d9c1f --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/injected/SkyblockerStack.java @@ -0,0 +1,20 @@ +package de.hysky.skyblocker.injected; + +import org.jetbrains.annotations.Nullable; + +public interface SkyblockerStack { + @Nullable + default String getSkyblockId() { + return ""; + } + + @Nullable + default String getSkyblockName() { + return ""; + } + + @Nullable + default String 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 e4550a5c..1e5cff10 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/ItemStackMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/ItemStackMixin.java @@ -4,7 +4,7 @@ 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.injected.SkyblockerStack; import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip; import de.hysky.skyblocker.utils.ItemUtils; import de.hysky.skyblocker.utils.Utils; @@ -28,7 +28,7 @@ import java.util.Locale; import java.util.Optional; @Mixin(ItemStack.class) -public abstract class ItemStackMixin implements ItemStackInternalIdGetter { +public abstract class ItemStackMixin implements SkyblockerStack { @Shadow public abstract int getDamage(); @@ -40,10 +40,10 @@ public abstract class ItemStackMixin implements ItemStackInternalIdGetter { private int maxDamage; @Unique - private String internalId; + private String skyblockId; @Unique - private String internalName; + private String skyblockName; @Unique private String neuName; @@ -125,26 +125,26 @@ public abstract class ItemStackMixin implements ItemStackInternalIdGetter { @Override @Nullable - public String getInternalId() { - if (internalId != null && !internalId.isEmpty()) return internalId; - internalId = skyblocker$getInternalNameFromNBT(true); - return internalId; + public String getSkyblockId() { + if (skyblockId != null && !skyblockId.isEmpty()) return skyblockId; + skyblockId = skyblocker$getInternalNameFromNBT(true); + return skyblockId; } @Override @Nullable - public String getInternalName() { - if (internalName != null && !internalName.isEmpty()) return internalName; - internalName = skyblocker$getInternalNameFromNBT(false); - return internalName; + public String getSkyblockName() { + if (skyblockName != null && !skyblockName.isEmpty()) return skyblockName; + skyblockName = skyblocker$getInternalNameFromNBT(false); + return skyblockName; } @Override @Nullable public String getNeuName() { if (neuName != null && !neuName.isEmpty()) return neuName; - String name = getInternalName(); - String id = getInternalId(); + String name = getSkyblockName(); + String id = getSkyblockId(); if (name == null || id == null) return null; if (name.startsWith("ISSHINY_")) name = id; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java index 3d1da0bd..cc800803 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java @@ -80,7 +80,7 @@ public class ChestValue { } String name = stack.getName().getString(); - String internalName = stack.getInternalName(); + String internalName = stack.getSkyblockName(); //Regular item price if (internalName != null) { @@ -159,7 +159,7 @@ public class ChestValue { continue; } - String internalName = stack.getInternalName(); + String internalName = stack.getSkyblockName(); if (internalName != null) { LongBooleanPair priceData = getItemPrice(internalName); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/TeleportOverlay.java b/src/main/java/de/hysky/skyblocker/skyblock/TeleportOverlay.java index d8a05809..a8155b43 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/TeleportOverlay.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/TeleportOverlay.java @@ -26,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 = heldItem.getInternalId(); + String itemId = heldItem.getSkyblockId(); 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 21bd965c..3d205252 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 getText(Slot slot) { final ItemStack stack = slot.getStack(); - if (!stack.isOf(Items.PLAYER_HEAD) || !StringUtils.equals(stack.getInternalId(), "PREHISTORIC_EGG")) return List.of(); + if (!stack.isOf(Items.PLAYER_HEAD) || !StringUtils.equals(stack.getSkyblockId(), "PREHISTORIC_EGG")) return List.of(); NbtCompound nbt = ItemUtils.getCustomData(stack); if (!nbt.contains("blocks_walked", NbtElement.INT_TYPE)) return List.of(); int walked = nbt.getInt("blocks_walked"); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/RancherBootsSpeedAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/RancherBootsSpeedAdder.java index c56e4525..1f92fb8a 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/RancherBootsSpeedAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/RancherBootsSpeedAdder.java @@ -26,7 +26,7 @@ public class RancherBootsSpeedAdder extends SlotTextAdder { public @NotNull List getText(Slot slot) { final ItemStack itemStack = slot.getStack(); // V null-safe equals. - if (!itemStack.isOf(Items.LEATHER_BOOTS) && !StringUtils.equals(itemStack.getInternalId(), "RANCHERS_BOOTS")) return List.of(); + if (!itemStack.isOf(Items.LEATHER_BOOTS) && !StringUtils.equals(itemStack.getSkyblockId(), "RANCHERS_BOOTS")) return List.of(); Matcher matcher = ItemUtils.getLoreLineIfMatch(slot.getStack(), SPEED_PATTERN); if (matcher == null) return List.of(); String speed = matcher.group(2); 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 34d93abc..3b150488 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 @@ -18,7 +18,7 @@ public class AccessoryTooltip extends TooltipAdder { @Override public void addToTooltip(List lines, Slot focusedSlot) { - final String internalID = focusedSlot.getStack().getInternalId(); + final String internalID = focusedSlot.getStack().getSkyblockId(); if (TooltipInfoType.ACCESSORIES.isTooltipEnabledAndHasOrNullWarning(internalID)) { Pair 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 4754932b..a36f30e9 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 @@ -21,7 +21,7 @@ public class AvgBinTooltip extends TooltipAdder { public void addToTooltip(List lines, Slot focusedSlot) { final ItemStack itemStack = focusedSlot.getStack(); String neuName = itemStack.getNeuName(); - String internalID = itemStack.getInternalId(); + String internalID = itemStack.getSkyblockId(); if (neuName == null || internalID == null) return; if (SkyblockerConfigManager.get().general.itemTooltip.enableAvgBIN) { 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 9237c141..ed24a2fd 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 @@ -23,9 +23,9 @@ public class BazaarPriceTooltip extends TooltipAdder { public void addToTooltip(List lines, Slot focusedSlot) { bazaarExist = false; final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = itemStack.getInternalId(); + final String internalID = itemStack.getSkyblockId(); if (internalID == null) return; - String name = itemStack.getInternalName(); + String name = itemStack.getSkyblockName(); 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 56dd60b0..2b576be6 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 @@ -29,7 +29,7 @@ public class ColorTooltip extends TooltipAdder { @Override public void addToTooltip(List lines, Slot focusedSlot) { final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = itemStack.getInternalId(); + final String internalID = itemStack.getSkyblockId(); 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 2a28df79..38ef49e6 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 @@ -21,9 +21,9 @@ public class LBinTooltip extends TooltipAdder { public void addToTooltip(List lines, Slot focusedSlot) { lbinExist = false; final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = itemStack.getInternalId(); + final String internalID = itemStack.getSkyblockId(); if (internalID == null) return; - String name = itemStack.getInternalName(); + String name = itemStack.getSkyblockName(); 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 5a8c2ddb..64640b95 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 @@ -20,7 +20,7 @@ public class MotesTooltip extends TooltipAdder { @Override public void addToTooltip(List lines, Slot focusedSlot) { final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = itemStack.getInternalId(); + final String internalID = itemStack.getSkyblockId(); 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 ce98f1c5..1c64760a 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 @@ -20,7 +20,7 @@ public class MuseumTooltip extends TooltipAdder { @Override public void addToTooltip(List lines, Slot focusedSlot) { final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = itemStack.getInternalId(); + final String internalID = itemStack.getSkyblockId(); 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 ba24364b..3ac7d298 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 @@ -18,7 +18,7 @@ public class NpcPriceTooltip extends TooltipAdder { @Override public void addToTooltip(List lines, Slot focusedSlot) { final ItemStack stack = focusedSlot.getStack(); - final String internalID = stack.getInternalId(); + final String internalID = stack.getSkyblockId(); if (internalID != null && TooltipInfoType.NPC.isTooltipEnabledAndHasOrNullWarning(internalID)) { lines.add(Text.literal(String.format("%-21s", "NPC Sell Price:")) .formatted(Formatting.YELLOW) diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 2d137920..17ce8bc8 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -55,7 +55,7 @@ }, "loom:injected_interfaces": { "net/minecraft/class_1799": [ - "de/hysky/skyblocker/injected/ItemStackInternalIdGetter" + "de/hysky/skyblocker/injected/SkyblockerStack" ] } } -- cgit From 2ce943b4278b7d89898acdde6046fb347e2447b1 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Sun, 9 Jun 2024 11:49:22 +0800 Subject: Refactor SkyblockerStack and ItemStackMixin --- .../hysky/skyblocker/injected/SkyblockerStack.java | 2 +- .../de/hysky/skyblocker/mixins/ItemStackMixin.java | 23 ++++++++++------------ .../de/hysky/skyblocker/skyblock/ChestValue.java | 15 +++++++------- .../skyblock/auction/AuctionBrowserScreen.java | 2 +- .../item/tooltip/adders/BazaarPriceTooltip.java | 2 +- .../skyblock/item/tooltip/adders/LBinTooltip.java | 2 +- 6 files changed, 21 insertions(+), 25 deletions(-) (limited to 'src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java') diff --git a/src/main/java/de/hysky/skyblocker/injected/SkyblockerStack.java b/src/main/java/de/hysky/skyblocker/injected/SkyblockerStack.java index dc3d9c1f..2f54917b 100644 --- a/src/main/java/de/hysky/skyblocker/injected/SkyblockerStack.java +++ b/src/main/java/de/hysky/skyblocker/injected/SkyblockerStack.java @@ -9,7 +9,7 @@ public interface SkyblockerStack { } @Nullable - default String getSkyblockName() { + default String getSkyblockApiId() { return ""; } diff --git a/src/main/java/de/hysky/skyblocker/mixins/ItemStackMixin.java b/src/main/java/de/hysky/skyblocker/mixins/ItemStackMixin.java index 1e5cff10..b57ee32a 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/ItemStackMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/ItemStackMixin.java @@ -43,7 +43,7 @@ public abstract class ItemStackMixin implements SkyblockerStack { private String skyblockId; @Unique - private String skyblockName; + private String skyblockApiId; @Unique private String neuName; @@ -127,34 +127,31 @@ public abstract class ItemStackMixin implements SkyblockerStack { @Nullable public String getSkyblockId() { if (skyblockId != null && !skyblockId.isEmpty()) return skyblockId; - skyblockId = skyblocker$getInternalNameFromNBT(true); - return skyblockId; + return skyblockId = skyblocker$getSkyblockId(true); } @Override @Nullable - public String getSkyblockName() { - if (skyblockName != null && !skyblockName.isEmpty()) return skyblockName; - skyblockName = skyblocker$getInternalNameFromNBT(false); - return skyblockName; + public String getSkyblockApiId() { + if (skyblockApiId != null && !skyblockApiId.isEmpty()) return skyblockApiId; + return skyblockApiId = skyblocker$getSkyblockId(false); } @Override @Nullable public String getNeuName() { if (neuName != null && !neuName.isEmpty()) return neuName; - String name = getSkyblockName(); + String apiId = getSkyblockApiId(); String id = getSkyblockId(); - if (name == null || id == null) return null; + if (apiId == null || id == null) return null; - if (name.startsWith("ISSHINY_")) name = id; + if (apiId.startsWith("ISSHINY_")) apiId = id; - neuName = ItemTooltip.getNeuName(id, name); - return neuName; + return neuName = ItemTooltip.getNeuName(id, apiId); } @Unique - private String skyblocker$getInternalNameFromNBT(boolean internalIDOnly) { + private String skyblocker$getSkyblockId(boolean internalIDOnly) { NbtCompound customData = ItemUtils.getCustomData((ItemStack) (Object) this); if (customData == null || !customData.contains(ItemUtils.ID, NbtElement.STRING_TYPE)) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java index cc800803..0b5e623a 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java @@ -12,7 +12,6 @@ import de.hysky.skyblocker.utils.Utils; import it.unimi.dsi.fastutil.longs.LongBooleanPair; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; import net.fabricmc.fabric.api.client.screen.v1.Screens; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; import net.minecraft.client.gui.tooltip.Tooltip; import net.minecraft.client.gui.widget.ButtonWidget; @@ -44,7 +43,7 @@ public class ChestValue { if (DUNGEON_CHESTS.contains(titleString)) { if (SkyblockerConfigManager.get().dungeons.dungeonChestProfit.enableProfitCalculator) { ScreenEvents.afterTick(screen).register(screen_ -> - ((ScreenAccessor) screen).setTitle(getDungeonChestProfit(genericContainerScreen.getScreenHandler(), title, titleString, client)) + ((ScreenAccessor) screen).setTitle(getDungeonChestProfit(genericContainerScreen.getScreenHandler(), title, titleString)) ); } } else if (SkyblockerConfigManager.get().uiAndVisuals.chestValue.enableChestValue && !titleString.equals("SkyBlock Menu")) { @@ -64,7 +63,7 @@ public class ChestValue { }); } - private static Text getDungeonChestProfit(GenericContainerScreenHandler handler, Text title, String titleString, MinecraftClient client) { + private static Text getDungeonChestProfit(GenericContainerScreenHandler handler, Text title, String titleString) { try { long profit = 0; boolean hasIncompleteData = false, usedKismet = false; @@ -80,7 +79,7 @@ public class ChestValue { } String name = stack.getName().getString(); - String internalName = stack.getSkyblockName(); + String internalName = stack.getSkyblockApiId(); //Regular item price if (internalName != null) { @@ -115,7 +114,7 @@ public class ChestValue { //Determine the cost of the chest if (name.contains("Open Reward Chest")) { - String foundString = searchLoreFor(stack, client, "Coins"); + String foundString = searchLoreFor(stack, "Coins"); //Incase we're searching the free chest if (!StringUtils.isBlank(foundString)) { @@ -127,7 +126,7 @@ public class ChestValue { //Determine if a kismet was used or not if (name.contains("Reroll Chest")) { - usedKismet = !StringUtils.isBlank(searchLoreFor(stack, client, "You already rerolled a chest!")); + usedKismet = !StringUtils.isBlank(searchLoreFor(stack, "You already rerolled a chest!")); } } @@ -159,7 +158,7 @@ public class ChestValue { continue; } - String internalName = stack.getSkyblockName(); + String internalName = stack.getSkyblockApiId(); if (internalName != null) { LongBooleanPair priceData = getItemPrice(internalName); @@ -205,7 +204,7 @@ public class ChestValue { /** * Searches for a specific string of characters in the name and lore of an item */ - private static String searchLoreFor(ItemStack stack, MinecraftClient client, String searchString) { + private static String searchLoreFor(ItemStack stack, String searchString) { return ItemUtils.getLoreLineIf(stack, line -> line.contains(searchString)); } 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 3d205252..557cb6c9 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java @@ -295,7 +295,7 @@ public class AuctionBrowserScreen extends AbstractCustomHypixelGUI Date: Mon, 10 Jun 2024 12:09:05 +0800 Subject: Fix merge conflicts --- .../de/hysky/skyblocker/skyblock/ChestValue.java | 13 ++++++------ .../java/de/hysky/skyblocker/utils/ItemUtils.java | 24 ++++++++++++++++++++++ 2 files changed, 31 insertions(+), 6 deletions(-) (limited to 'src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java index 0b5e623a..bee7b8ff 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java @@ -6,6 +6,7 @@ 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; @@ -79,11 +80,11 @@ public class ChestValue { } String name = stack.getName().getString(); - String internalName = stack.getSkyblockApiId(); + String id = stack.getSkyblockApiId(); //Regular item price - if (internalName != null) { - LongBooleanPair priceData = getItemPrice(internalName); + if (id != null) { + LongBooleanPair priceData = getItemPrice(id); if (!priceData.rightBoolean()) hasIncompleteData = true; @@ -158,10 +159,10 @@ public class ChestValue { continue; } - String internalName = stack.getSkyblockApiId(); + String id = stack.getSkyblockApiId(); - if (internalName != null) { - LongBooleanPair priceData = getItemPrice(internalName); + if (id != null) { + LongBooleanPair priceData = getItemPrice(id); if (!priceData.rightBoolean()) hasIncompleteData = true; diff --git a/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java b/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java index fbc9bddc..1ac40d29 100644 --- a/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java +++ b/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java @@ -8,6 +8,7 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.serialization.Codec; import com.mojang.serialization.JsonOps; import com.mojang.serialization.codecs.RecordCodecBuilder; +import de.hysky.skyblocker.skyblock.item.tooltip.adders.ObtainedDateTooltip; import de.hysky.skyblocker.SkyblockerMod; import it.unimi.dsi.fastutil.ints.IntIntPair; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; @@ -102,6 +103,29 @@ public class ItemUtils { return getCustomData(stack).getString(UUID); } + /** + * This method converts the "timestamp" variable into the same date format as Hypixel represents it in the museum. + * Currently, there are two types of string timestamps the legacy which is built like this + * "dd/MM/yy hh:mm" ("25/04/20 16:38") and the current which is built like this + * "MM/dd/yy hh:mm aa" ("12/24/20 11:08 PM"). Since Hypixel transforms the two formats into one format without + * taking into account of their formats, we do the same. The final result looks like this + * "MMMM dd, yyyy" (December 24, 2020). + * Since the legacy format has a 25 as "month" SimpleDateFormat converts the 25 into 2 years and 1 month and makes + * "25/04/20 16:38" -> "January 04, 2022" instead of "April 25, 2020". + * This causes the museum rank to be much worse than it should be. + *

+ * This also handles the long timestamp format introduced in January 2024 where the timestamp is in epoch milliseconds. + * + * @param stack the item under the pointer + * @return if the item have a "Timestamp" it will be shown formated on the tooltip + * @deprecated use {@link ObtainedDateTooltip#getTimestamp(ItemStack)} instead + */ + public static String getTimestamp(ItemStack stack) { + NbtCompound customData = getCustomData(stack); + + return ObtainedDateTooltip.getTimestamp(stack); + } + public static boolean hasCustomDurability(@NotNull ItemStack stack) { NbtCompound customData = getCustomData(stack); return customData != null && (customData.contains("drill_fuel") || customData.getString(ID).equals("PICKONIMBUS")); -- cgit