diff options
author | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-06-10 12:45:06 +0800 |
---|---|---|
committer | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-06-10 12:45:06 +0800 |
commit | c96b69fdba88e0f311fa825d9ceb8a8e2ab2c37e (patch) | |
tree | 93849056022f933a63ce592493f55ad8d544f79a /src | |
parent | 075353427a81f2455e10367c6eb76031048826f2 (diff) | |
download | Skyblocker-c96b69fdba88e0f311fa825d9ceb8a8e2ab2c37e.tar.gz Skyblocker-c96b69fdba88e0f311fa825d9ceb8a8e2ab2c37e.tar.bz2 Skyblocker-c96b69fdba88e0f311fa825d9ceb8a8e2ab2c37e.zip |
Migrate from focusedSlot to stack and clear tooltip adders on screen change
Diffstat (limited to 'src')
16 files changed, 68 insertions, 52 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java index 35b91639..6a3fe0a5 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java @@ -191,8 +191,8 @@ public abstract class HandledScreenMixin<T extends ScreenHandler> extends Screen @SuppressWarnings("deprecation") @ModifyReturnValue(method = "getTooltipFromItem", at = @At("RETURN")) - private List<Text> skyblocker$tooltips$addToTooltip(List<Text> tooltip) { - return TooltipManager.addToTooltip(tooltip, focusedSlot); + private List<Text> skyblocker$tooltips$addToTooltip(List<Text> tooltip, ItemStack stack) { + return TooltipManager.addToTooltip(focusedSlot, stack, tooltip); } @ModifyVariable(method = "drawSlot", at = @At(value = "LOAD", ordinal = 3), ordinal = 0) diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/ChocolateFactorySolver.java b/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/ChocolateFactorySolver.java index d33a83e9..02e0e8af 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/ChocolateFactorySolver.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/ChocolateFactorySolver.java @@ -18,6 +18,7 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; +import org.jetbrains.annotations.Nullable; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; @@ -255,8 +256,8 @@ public class ChocolateFactorySolver extends ContainerSolver { } @Override - public void addToTooltip(List<Text> lines, Slot focusedSlot) { - if (!SkyblockerConfigManager.get().helpers.chocolateFactory.enableChocolateFactoryHelper) return; + public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) { + if (!SkyblockerConfigManager.get().helpers.chocolateFactory.enableChocolateFactoryHelper || focusedSlot == null) return; int lineIndex = lines.size(); //This boolean is used to determine if we should add a smooth line to separate the added information from the rest of the tooltip. diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipAdder.java index 07b9ac30..9bd63adc 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipAdder.java @@ -1,8 +1,10 @@ package de.hysky.skyblocker.skyblock.item.tooltip; import de.hysky.skyblocker.utils.render.gui.AbstractContainerMatcher; +import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; +import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.regex.Pattern; @@ -39,5 +41,5 @@ public abstract class TooltipAdder extends AbstractContainerMatcher { * @implNote The first element of the lines list holds the item's display name, * as it's a list of all lines that will be displayed in the tooltip. */ - public abstract void addToTooltip(List<Text> lines, Slot focusedSlot); + public abstract void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines); } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java index 319df71a..1e7950e3 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java @@ -5,8 +5,10 @@ import de.hysky.skyblocker.skyblock.item.tooltip.adders.*; import de.hysky.skyblocker.utils.Utils; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; import net.minecraft.client.gui.screen.Screen; +import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Comparator; @@ -42,6 +44,7 @@ public class TooltipManager { private static void onScreenChange(Screen screen) { final String title = screen.getTitle().getString(); + currentScreenAdders.clear(); for (TooltipAdder adder : adders) { if (adder.titlePattern == null || adder.titlePattern.matcher(title).find()) { currentScreenAdders.add(adder); @@ -56,16 +59,17 @@ public class TooltipManager { * * <p>If you want to add info to the tooltips of multiple items, consider using a switch statement with {@code focusedSlot.getIndex()}</p> * - * @param lines The tooltip lines of the focused item. This includes the display name, as it's a part of the tooltip (at index 0). * @param focusedSlot The slot that is currently focused by the cursor. + * @param stack The stack to render the tooltip for. + * @param lines The tooltip lines of the focused item. This includes the display name, as it's a part of the tooltip (at index 0). * @return The lines list itself after all adders have added their text. * @deprecated This method is public only for the sake of the mixin. Don't call directly, not that there is any point to it. */ @Deprecated - public static List<Text> addToTooltip(List<Text> lines, Slot focusedSlot) { + public static List<Text> addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) { if (!Utils.isOnSkyblock()) return lines; for (TooltipAdder adder : currentScreenAdders) { - adder.addToTooltip(lines, focusedSlot); + adder.addToTooltip(focusedSlot, stack, lines); } return lines; } 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 3b150488..caed0e0e 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 @@ -4,10 +4,12 @@ import de.hysky.skyblocker.skyblock.item.tooltip.AccessoriesHelper; import de.hysky.skyblocker.skyblock.item.tooltip.TooltipAdder; import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType; import it.unimi.dsi.fastutil.Pair; +import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +import org.jetbrains.annotations.Nullable; import java.util.List; @@ -17,8 +19,8 @@ public class AccessoryTooltip extends TooltipAdder { } @Override - public void addToTooltip(List<Text> lines, Slot focusedSlot) { - final String internalID = focusedSlot.getStack().getSkyblockId(); + public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) { + final String internalID = stack.getSkyblockId(); 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 a36f30e9..d7a56b95 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 @@ -9,6 +9,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +import org.jetbrains.annotations.Nullable; import java.util.List; @@ -18,10 +19,9 @@ public class AvgBinTooltip extends TooltipAdder { } @Override - public void addToTooltip(List<Text> lines, Slot focusedSlot) { - final ItemStack itemStack = focusedSlot.getStack(); - String neuName = itemStack.getNeuName(); - String internalID = itemStack.getSkyblockId(); + public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) { + String neuName = stack.getNeuName(); + String internalID = stack.getSkyblockId(); if (neuName == null || internalID == null) return; if (SkyblockerConfigManager.get().general.itemTooltip.enableAvgBIN) { @@ -42,7 +42,7 @@ public class AvgBinTooltip extends TooltipAdder { .formatted(Formatting.GOLD) .append(TooltipInfoType.ONE_DAY_AVERAGE.getData().get(neuName) == null ? Text.literal("No data").formatted(Formatting.RED) - : ItemTooltip.getCoinsMessage(TooltipInfoType.ONE_DAY_AVERAGE.getData().get(neuName).getAsDouble(), itemStack.getCount()) + : ItemTooltip.getCoinsMessage(TooltipInfoType.ONE_DAY_AVERAGE.getData().get(neuName).getAsDouble(), stack.getCount()) ) ); } @@ -52,7 +52,7 @@ public class AvgBinTooltip extends TooltipAdder { .formatted(Formatting.GOLD) .append(TooltipInfoType.THREE_DAY_AVERAGE.getData().get(neuName) == null ? Text.literal("No data").formatted(Formatting.RED) - : ItemTooltip.getCoinsMessage(TooltipInfoType.THREE_DAY_AVERAGE.getData().get(neuName).getAsDouble(), itemStack.getCount()) + : ItemTooltip.getCoinsMessage(TooltipInfoType.THREE_DAY_AVERAGE.getData().get(neuName).getAsDouble(), stack.getCount()) ) ); } 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 0aab21c0..d2fa563b 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 @@ -9,6 +9,7 @@ import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import org.apache.commons.lang3.math.NumberUtils; +import org.jetbrains.annotations.Nullable; import java.util.List; @@ -20,12 +21,11 @@ public class BazaarPriceTooltip extends TooltipAdder { } @Override - public void addToTooltip(List<Text> lines, Slot focusedSlot) { + public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) { bazaarExist = false; - final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = itemStack.getSkyblockId(); + final String internalID = stack.getSkyblockId(); if (internalID == null) return; - String name = itemStack.getSkyblockApiId(); + String name = stack.getSkyblockApiId(); if (name == null) return; if (name.startsWith("ISSHINY_")) name = "SHINY_" + internalID; @@ -36,9 +36,9 @@ public class BazaarPriceTooltip extends TooltipAdder { //The amount is in the 2nd sibling of the 3rd line of the lore. here V //Example line: empty[style={color=dark_purple,!italic}, siblings=[literal{Stored: }[style={color=gray}], literal{0}[style={color=dark_gray}], literal{/20k}[style={color=gray}]] String line = lines.get(3).getSiblings().get(1).getString().replace(",", ""); - amount = NumberUtils.isParsable(line) && !line.equals("0") ? Integer.parseInt(line) : itemStack.getCount(); + amount = NumberUtils.isParsable(line) && !line.equals("0") ? Integer.parseInt(line) : stack.getCount(); } else { - amount = itemStack.getCount(); + amount = stack.getCount(); } JsonObject getItem = TooltipInfoType.BAZAAR.getData().getAsJsonObject(name); lines.add(Text.literal(String.format("%-18s", "Bazaar buy Price:")) 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 2b576be6..26a040ec 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 @@ -14,6 +14,7 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.StringIdentifiable; +import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,14 +28,13 @@ public class ColorTooltip extends TooltipAdder { } @Override - public void addToTooltip(List<Text> lines, Slot focusedSlot) { - final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = itemStack.getSkyblockId(); - if (TooltipInfoType.COLOR.isTooltipEnabledAndHasOrNullWarning(internalID) && itemStack.contains(DataComponentTypes.DYED_COLOR)) { - String uuid = ItemUtils.getItemUuid(itemStack); + public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) { + final String internalID = stack.getSkyblockId(); + if (TooltipInfoType.COLOR.isTooltipEnabledAndHasOrNullWarning(internalID) && stack.contains(DataComponentTypes.DYED_COLOR)) { + String uuid = ItemUtils.getItemUuid(stack); boolean hasCustomDye = SkyblockerConfigManager.get().general.customDyeColors.containsKey(uuid) || SkyblockerConfigManager.get().general.customAnimatedDyes.containsKey(uuid); //DyedColorComponent#getColor returns ARGB so we mask out the alpha bits - int dyeColor = DyedColorComponent.getColor(itemStack, 0); + int dyeColor = DyedColorComponent.getColor(stack, 0); // dyeColor will have alpha = 255 if it's dyed, and alpha = 0 if it's not dyed, if (!hasCustomDye && dyeColor != 0) { @@ -48,13 +48,13 @@ public class ColorTooltip extends TooltipAdder { if (existingTooltip.startsWith("Color: ")) { correctLine = true; - addExoticTooltip(lines, internalID, ItemUtils.getCustomData(itemStack), colorHex, expectedHex, existingTooltip); + addExoticTooltip(lines, internalID, ItemUtils.getCustomData(stack), colorHex, expectedHex, existingTooltip); break; } } if (!correctLine) { - addExoticTooltip(lines, internalID, ItemUtils.getCustomData(itemStack), colorHex, expectedHex, ""); + addExoticTooltip(lines, internalID, ItemUtils.getCustomData(stack), colorHex, expectedHex, ""); } } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/DungeonQualityTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/DungeonQualityTooltip.java index 05e9887c..0b1d993d 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/DungeonQualityTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/DungeonQualityTooltip.java @@ -3,10 +3,12 @@ package de.hysky.skyblocker.skyblock.item.tooltip.adders; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.skyblock.item.tooltip.TooltipAdder; import de.hysky.skyblocker.utils.ItemUtils; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +import org.jetbrains.annotations.Nullable; import java.util.List; @@ -16,9 +18,9 @@ public class DungeonQualityTooltip extends TooltipAdder { } @Override - public void addToTooltip(List<Text> lines, Slot focusedSlot) { + public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) { if (!SkyblockerConfigManager.get().general.itemTooltip.dungeonQuality) return; - NbtCompound customData = ItemUtils.getCustomData(focusedSlot.getStack()); + NbtCompound customData = ItemUtils.getCustomData(stack); if (customData == null || !customData.contains("baseStatBoostPercentage")) return; int baseStatBoostPercentage = customData.getInt("baseStatBoostPercentage"); boolean maxQuality = baseStatBoostPercentage == 50; 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 45cfe3e4..e6930c32 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 @@ -7,6 +7,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +import org.jetbrains.annotations.Nullable; import java.util.List; @@ -18,12 +19,11 @@ public class LBinTooltip extends TooltipAdder { } @Override - public void addToTooltip(List<Text> lines, Slot focusedSlot) { + public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) { lbinExist = false; - final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = itemStack.getSkyblockId(); + final String internalID = stack.getSkyblockId(); if (internalID == null) return; - String name = itemStack.getSkyblockApiId(); + String name = stack.getSkyblockApiId(); if (name == null) return; if (name.startsWith("ISSHINY_")) name = "SHINY_" + internalID; @@ -33,7 +33,7 @@ public class LBinTooltip extends TooltipAdder { if (TooltipInfoType.LOWEST_BINS.isTooltipEnabledAndHasOrNullWarning(name) && !BazaarPriceTooltip.bazaarExist) { lines.add(Text.literal(String.format("%-19s", "Lowest BIN Price:")) .formatted(Formatting.GOLD) - .append(ItemTooltip.getCoinsMessage(TooltipInfoType.LOWEST_BINS.getData().get(name).getAsDouble(), itemStack.getCount()))); + .append(ItemTooltip.getCoinsMessage(TooltipInfoType.LOWEST_BINS.getData().get(name).getAsDouble(), stack.getCount()))); lbinExist = true; } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/LineSmoothener.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/LineSmoothener.java index e3ce12df..0e997834 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/LineSmoothener.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/LineSmoothener.java @@ -1,9 +1,11 @@ package de.hysky.skyblocker.skyblock.item.tooltip.adders; import de.hysky.skyblocker.skyblock.item.tooltip.TooltipAdder; +import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +import org.jetbrains.annotations.Nullable; import java.util.List; @@ -20,7 +22,7 @@ public class LineSmoothener extends TooltipAdder { } @Override - public void addToTooltip(List<Text> lines, Slot focusedSlot) { + public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) { for (int i = 0; i < lines.size(); i++) { List<Text> lineSiblings = lines.get(i).getSiblings(); //Compare the first sibling rather than the whole object as the style of the root object can change while visually staying the same 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 64640b95..a0aa8d94 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 @@ -8,6 +8,7 @@ import net.minecraft.screen.slot.Slot; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.Locale; @@ -18,13 +19,12 @@ public class MotesTooltip extends TooltipAdder { } @Override - public void addToTooltip(List<Text> lines, Slot focusedSlot) { - final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = itemStack.getSkyblockId(); + public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) { + final String internalID = stack.getSkyblockId(); if (internalID != null && TooltipInfoType.MOTES.isTooltipEnabledAndHasOrNullWarning(internalID)) { lines.add(Text.literal(String.format("%-20s", "Motes Price:")) .formatted(Formatting.LIGHT_PURPLE) - .append(getMotesMessage(TooltipInfoType.MOTES.getData().get(internalID).getAsInt(), itemStack.getCount()))); + .append(getMotesMessage(TooltipInfoType.MOTES.getData().get(internalID).getAsInt(), stack.getCount()))); } } 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 1c64760a..5c21d2df 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 @@ -9,6 +9,7 @@ import net.minecraft.nbt.NbtCompound; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +import org.jetbrains.annotations.Nullable; import java.util.List; @@ -18,9 +19,8 @@ public class MuseumTooltip extends TooltipAdder { } @Override - public void addToTooltip(List<Text> lines, Slot focusedSlot) { - final ItemStack itemStack = focusedSlot.getStack(); - final String internalID = itemStack.getSkyblockId(); + public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) { + final String internalID = stack.getSkyblockId(); if (TooltipInfoType.MUSEUM.isTooltipEnabledAndHasOrNullWarning(internalID)) { String itemCategory = TooltipInfoType.MUSEUM.getData().get(internalID).getAsString(); String format = switch (itemCategory) { @@ -34,7 +34,7 @@ public class MuseumTooltip extends TooltipAdder { lines.add(Text.literal(String.format(format, "Museum: (" + itemCategory + ")")) .formatted(Formatting.LIGHT_PURPLE)); } else { - NbtCompound customData = ItemUtils.getCustomData(itemStack); + NbtCompound customData = ItemUtils.getCustomData(stack); boolean isInMuseum = (customData.contains("donated_museum") && customData.getBoolean("donated_museum")) || MuseumItemCache.hasItemInMuseum(internalID); Formatting donatedIndicatorFormatting = isInMuseum ? Formatting.GREEN : Formatting.RED; 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 3ac7d298..672201d5 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 @@ -7,6 +7,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +import org.jetbrains.annotations.Nullable; import java.util.List; @@ -16,8 +17,7 @@ public class NpcPriceTooltip extends TooltipAdder { } @Override - public void addToTooltip(List<Text> lines, Slot focusedSlot) { - final ItemStack stack = focusedSlot.getStack(); + public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) { final String internalID = stack.getSkyblockId(); if (internalID != null && TooltipInfoType.NPC.isTooltipEnabledAndHasOrNullWarning(internalID)) { lines.add(Text.literal(String.format("%-21s", "NPC Sell Price:")) diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/ObtainedDateTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/ObtainedDateTooltip.java index 9cc03b4d..9f405c58 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/ObtainedDateTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/ObtainedDateTooltip.java @@ -9,6 +9,7 @@ import net.minecraft.nbt.NbtElement; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +import org.jetbrains.annotations.Nullable; import java.time.Instant; import java.time.ZoneId; @@ -26,9 +27,9 @@ public class ObtainedDateTooltip extends TooltipAdder { } @Override - public void addToTooltip(List<Text> lines, Slot focusedSlot) { + public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) { if (TooltipInfoType.OBTAINED.isTooltipEnabled()) { - String timestamp = getTimestamp(focusedSlot.getStack()); + String timestamp = getTimestamp(stack); if (!timestamp.isEmpty()) { lines.add(Text.empty() diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/SupercraftReminder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/SupercraftReminder.java index 8a8f198c..47d2bd48 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/SupercraftReminder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/SupercraftReminder.java @@ -2,10 +2,12 @@ package de.hysky.skyblocker.skyblock.item.tooltip.adders; import de.hysky.skyblocker.skyblock.item.tooltip.TooltipAdder; import de.hysky.skyblocker.utils.ItemUtils; +import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.regex.Pattern; @@ -19,8 +21,8 @@ public class SupercraftReminder extends TooltipAdder { } @Override - public void addToTooltip(List<Text> lines, Slot focusedSlot) { - if (focusedSlot.id != SUPERCRAFT_SLOT || !focusedSlot.getStack().isOf(Items.GOLDEN_PICKAXE)) return; + public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) { + if (focusedSlot == null || focusedSlot.id != SUPERCRAFT_SLOT || !stack.isOf(Items.GOLDEN_PICKAXE)) return; String uuid = ItemUtils.getItemUuid(focusedSlot.inventory.getStack(RECIPE_RESULT_SLOT)); if (!uuid.isEmpty()) return; //Items with UUID can't be stacked, and therefore the shift-click feature doesn't matter int index = lines.size() - 1; |