aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2024-06-12 23:30:41 -0400
committerGitHub <noreply@github.com>2024-06-12 23:30:41 -0400
commit8d804b9dc5d9201a5e1327ece45ccb9a816b4fcd (patch)
treebfba593636bd8f4442aa7a161600534fdb2da62b /src/main/java/de/hysky/skyblocker/skyblock
parentebd5ccd1620c7857c621f9c04b1f87ab11c08cbc (diff)
parent938ba92305d3ac3f1ebe91f106aea35ca92e6ab6 (diff)
downloadSkyblocker-8d804b9dc5d9201a5e1327ece45ccb9a816b4fcd.tar.gz
Skyblocker-8d804b9dc5d9201a5e1327ece45ccb9a816b4fcd.tar.bz2
Skyblocker-8d804b9dc5d9201a5e1327ece45ccb9a816b4fcd.zip
Merge pull request #750 from kevinthegreat1/potion-level-slot-text
Refactor Tooltips and Slot Texts
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/ChocolateFactorySolver.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextAdder.java21
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CollectionAdder.java33
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PotionLevelAdder.java27
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipAdder.java21
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java21
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AccessoryTooltip.java6
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AvgBinTooltip.java12
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/BazaarPriceTooltip.java12
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/ColorTooltip.java16
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/DungeonQualityTooltip.java6
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/LBinTooltip.java10
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/LineSmoothener.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/MotesTooltip.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/MuseumTooltip.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/NpcPriceTooltip.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/ObtainedDateTooltip.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/SupercraftReminder.java6
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/itemlist/ResultButtonWidget.java4
20 files changed, 154 insertions, 79 deletions
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/slottext/SlotTextAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextAdder.java
index 18bf1dc1..6618cda1 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextAdder.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextAdder.java
@@ -1,9 +1,9 @@
package de.hysky.skyblocker.skyblock.item.slottext;
-import de.hysky.skyblocker.skyblock.ChestValue;
+import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.utils.render.gui.AbstractContainerMatcher;
import net.minecraft.screen.slot.Slot;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
import java.util.List;
import java.util.regex.Pattern;
@@ -11,21 +11,14 @@ import java.util.regex.Pattern;
/**
* Extend this class and add it to {@link SlotTextManager#adders} to add text to any arbitrary slot.
*/
-public abstract class SlotTextAdder {
- /**
- * The title of the screen must match this pattern for this adder to be applied. Null means it will be applied to all screens.
- * @implNote Don't end your regex with a {@code $} as {@link ChestValue} appends text to the end of the title,
- * so the regex will stop matching if the player uses it.
- */
- public final @Nullable Pattern titlePattern;
-
+public abstract class SlotTextAdder extends AbstractContainerMatcher {
/**
* Utility constructor that will compile the given string into a pattern.
*
* @see #SlotTextAdder(Pattern)
*/
protected SlotTextAdder(@NotNull String titlePattern) {
- this(Pattern.compile(titlePattern));
+ super(titlePattern);
}
/**
@@ -34,14 +27,14 @@ public abstract class SlotTextAdder {
* @param titlePattern The pattern to match the screen title against.
*/
protected SlotTextAdder(@NotNull Pattern titlePattern) {
- this.titlePattern = titlePattern;
+ super(titlePattern);
}
/**
* Creates a SlotTextAdder that will be applied to all screens.
*/
protected SlotTextAdder() {
- this.titlePattern = null;
+ super();
}
/**
@@ -59,6 +52,6 @@ public abstract class SlotTextAdder {
* @implNote The slot text adders only work while in skyblock, so no need to check for that again.
*/
public boolean isEnabled() {
- return true;
+ return SkyblockerConfigManager.get().general.itemInfoDisplay.slotText;
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java
index 7b4b34cf..a4a83455 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java
@@ -23,7 +23,9 @@ public class SlotTextManager {
new CatacombsLevelAdder.ReadyUp(),
new RancherBootsSpeedAdder(),
new AttributeShardAdder(),
- new PrehistoricEggAdder()
+ new PrehistoricEggAdder(),
+ new PotionLevelAdder(),
+ new CollectionAdder()
};
private static final ArrayList<SlotTextAdder> currentScreenAdders = new ArrayList<>();
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CollectionAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CollectionAdder.java
new file mode 100644
index 00000000..e577f0d8
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CollectionAdder.java
@@ -0,0 +1,33 @@
+package de.hysky.skyblocker.skyblock.item.slottext.adders;
+
+import de.hysky.skyblocker.skyblock.item.slottext.SlotText;
+import de.hysky.skyblocker.skyblock.item.slottext.SlotTextAdder;
+import de.hysky.skyblocker.utils.RomanNumerals;
+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.NotNull;
+
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class CollectionAdder extends SlotTextAdder {
+ private static final Pattern COLLECTION = Pattern.compile("^[\\w ]+ (?<level>[IVXLCDM]+)$");
+
+ public CollectionAdder() {
+ super("^\\w+ Collections");
+ }
+
+ @Override
+ public @NotNull List<SlotText> getText(Slot slot) {
+ final ItemStack stack = slot.getStack();
+ Matcher matcher = COLLECTION.matcher(stack.getName().getString());
+ if (matcher.matches()) {
+ int level = RomanNumerals.romanToDecimal(matcher.group("level"));
+ return List.of(SlotText.bottomRight(Text.literal(String.valueOf(level)).formatted(Formatting.YELLOW)));
+ }
+ return List.of();
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PotionLevelAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PotionLevelAdder.java
new file mode 100644
index 00000000..457d2964
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PotionLevelAdder.java
@@ -0,0 +1,27 @@
+package de.hysky.skyblocker.skyblock.item.slottext.adders;
+
+import de.hysky.skyblocker.skyblock.item.slottext.SlotText;
+import de.hysky.skyblocker.skyblock.item.slottext.SlotTextAdder;
+import de.hysky.skyblocker.utils.ItemUtils;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NbtCompound;
+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.NotNull;
+
+import java.util.List;
+
+public class PotionLevelAdder extends SlotTextAdder {
+ @Override
+ public @NotNull List<SlotText> getText(Slot slot) {
+ final ItemStack stack = slot.getStack();
+ NbtCompound customData = ItemUtils.getCustomData(stack);
+ if (customData.contains("potion_level", NbtElement.INT_TYPE)) {
+ int level = customData.getInt("potion_level");
+ return List.of(SlotText.bottomRight(Text.literal(String.valueOf(level)).formatted(Formatting.AQUA)));
+ }
+ return List.of();
+ }
+}
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 7c43957e..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.skyblock.ChestValue;
+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;
@@ -10,13 +12,7 @@ import java.util.regex.Pattern;
/**
* Extend this class and add it to {@link TooltipManager#adders} to add additional text to tooltips.
*/
-public abstract class TooltipAdder {
- /**
- * The title of the screen must match this pattern for this adder to be applied. Null means it will be applied to all screens.
- * @implNote Don't end your regex with a {@code $} as {@link ChestValue} appends text to the end of the title,
- * so the regex will stop matching if the player uses it.
- */
- public final Pattern titlePattern;
+public abstract class TooltipAdder extends AbstractContainerMatcher {
/**
* The priority of this adder. Lower priority means it will be applied first.
* @apiNote Consider taking this value on your class' constructor and setting it from {@link TooltipManager#adders} to make it easy to read and maintain.
@@ -24,11 +20,12 @@ public abstract class TooltipAdder {
public final int priority;
protected TooltipAdder(String titlePattern, int priority) {
- this(Pattern.compile(titlePattern), priority);
+ super(titlePattern);
+ this.priority = priority;
}
protected TooltipAdder(Pattern titlePattern, int priority) {
- this.titlePattern = titlePattern;
+ super(titlePattern);
this.priority = priority;
}
@@ -36,7 +33,7 @@ public abstract class TooltipAdder {
* Creates a TooltipAdder that will be applied to all screens.
*/
protected TooltipAdder(int priority) {
- this.titlePattern = null;
+ super();
this.priority = priority;
}
@@ -44,5 +41,5 @@ public abstract class TooltipAdder {
* @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..e3a2ef04 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
@@ -1,12 +1,18 @@
package de.hysky.skyblocker.skyblock.item.tooltip;
+import de.hysky.skyblocker.mixins.accessors.HandledScreenAccessor;
import de.hysky.skyblocker.skyblock.chocolatefactory.ChocolateFactorySolver;
import de.hysky.skyblocker.skyblock.item.tooltip.adders.*;
import de.hysky.skyblocker.utils.Utils;
+import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback;
import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents;
+import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
+import net.minecraft.client.gui.screen.ingame.HandledScreen;
+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;
@@ -34,6 +40,13 @@ public class TooltipManager {
}
public static void init() {
+ ItemTooltipCallback.EVENT.register((stack, tooltipContext, tooltipType, lines) -> {
+ if (MinecraftClient.getInstance().currentScreen instanceof HandledScreen<?> handledScreen) {
+ addToTooltip(((HandledScreenAccessor) handledScreen).getFocusedSlot(), stack, lines);
+ } else {
+ addToTooltip(null, stack, lines);
+ }
+ });
ScreenEvents.AFTER_INIT.register((client, screen, width, height) -> {
onScreenChange(screen);
ScreenEvents.remove(screen).register(ignored -> currentScreenAdders.clear());
@@ -42,6 +55,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 +70,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;