aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/item
diff options
context:
space:
mode:
authorRime <81419447+Emirlol@users.noreply.github.com>2024-06-19 18:57:43 +0300
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-07-22 14:20:35 +0800
commit4c398333b9802a9000cc65d50ae4a2d13f300ca8 (patch)
tree2b2e52431ddfc7610cc0070f5e5abe3c7356a02d /src/main/java/de/hysky/skyblocker/skyblock/item
parent6541bb6aa43a7141ac259ee34a597891d6a45689 (diff)
downloadSkyblocker-4c398333b9802a9000cc65d50ae4a2d13f300ca8.tar.gz
Skyblocker-4c398333b9802a9000cc65d50ae4a2d13f300ca8.tar.bz2
Skyblocker-4c398333b9802a9000cc65d50ae4a2d13f300ca8.zip
Refactor container matcher implementations into interfaces
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/item')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextAdder.java23
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java19
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipAdder.java43
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipInfoType.java10
-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.java7
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AvgBinTooltip.java59
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/BazaarPriceTooltip.java7
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/ColorTooltip.java7
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/DungeonQualityTooltip.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/LBinTooltip.java7
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/LineSmoothener.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/MotesTooltip.java7
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/MuseumTooltip.java7
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/NpcPriceTooltip.java7
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/ObtainedDateTooltip.java18
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/SupercraftReminder.java5
17 files changed, 151 insertions, 109 deletions
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 71d9aa30..7ac403df 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,18 +1,18 @@
package de.hysky.skyblocker.skyblock.item.slottext;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
-import de.hysky.skyblocker.utils.render.gui.AbstractContainerMatcher;
-import net.minecraft.screen.slot.Slot;
+import de.hysky.skyblocker.utils.container.AbstractSlotTextAdder;
+import de.hysky.skyblocker.utils.container.RegexContainerMatcher;
import org.intellij.lang.annotations.Language;
import org.jetbrains.annotations.NotNull;
-import java.util.List;
import java.util.regex.Pattern;
/**
+ * Simple implementation of a slot text adder.
* Extend this class and add it to {@link SlotTextManager#adders} to add text to any arbitrary slot.
*/
-public abstract class SlotTextAdder extends AbstractContainerMatcher {
+public abstract class SlotTextAdder extends RegexContainerMatcher implements AbstractSlotTextAdder {
/**
* Utility constructor that will compile the given string into a pattern.
*
@@ -38,20 +38,7 @@ public abstract class SlotTextAdder extends AbstractContainerMatcher {
super();
}
- /**
- * This method will be called for each rendered slot. Consider using a switch statement on {@link Slot#id} if you wish to add different text to different slots.
- *
- * @return A list of positioned text to be rendered. Return {@link List#of()} if no text should be rendered.
- * @implNote By minecraft's design, scaled text inexplicably moves around.
- * So, limit your text to 3 characters (or roughly less than 20 width) if you want it to not look horrible.
- */
- public abstract @NotNull List<SlotText> getText(Slot slot);
-
- /**
- * Override this method to add conditions to enable or disable this adder.
- * @return Whether this adder is enabled.
- * @implNote The slot text adders only work while in skyblock, so no need to check for that again.
- */
+ @Override
public boolean isEnabled() {
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 aa9bf939..fe38e340 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
@@ -3,8 +3,8 @@ package de.hysky.skyblocker.skyblock.item.slottext;
import de.hysky.skyblocker.skyblock.bazaar.BazaarHelper;
import de.hysky.skyblocker.skyblock.item.slottext.adders.*;
import de.hysky.skyblocker.utils.Utils;
+import de.hysky.skyblocker.utils.container.AbstractSlotTextAdder;
import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents;
-import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.ingame.HandledScreen;
import net.minecraft.screen.slot.Slot;
import org.jetbrains.annotations.NotNull;
@@ -13,7 +13,7 @@ import java.util.ArrayList;
import java.util.List;
public class SlotTextManager {
- private static final SlotTextAdder[] adders = new SlotTextAdder[]{
+ private static final AbstractSlotTextAdder[] adders = new AbstractSlotTextAdder[]{
new EssenceShopAdder(),
new EnchantmentLevelAdder(),
new MinionLevelAdder(),
@@ -34,25 +34,24 @@ public class SlotTextManager {
new BazaarHelper(),
new StatsTuningAdder()
};
- private static final ArrayList<SlotTextAdder> currentScreenAdders = new ArrayList<>();
+ private static final ArrayList<AbstractSlotTextAdder> currentScreenAdders = new ArrayList<>();
private SlotTextManager() {
}
public static void init() {
ScreenEvents.AFTER_INIT.register((client, screen, width, height) -> {
- if (screen instanceof HandledScreen<?> && Utils.isOnSkyblock()) {
- onScreenChange(screen);
+ if (screen instanceof HandledScreen<?> handledScreen && Utils.isOnSkyblock()) {
+ onScreenChange(handledScreen);
ScreenEvents.remove(screen).register(ignored -> currentScreenAdders.clear());
}
});
}
- private static void onScreenChange(Screen screen) {
- final String title = screen.getTitle().getString();
- for (SlotTextAdder adder : adders) {
+ private static void onScreenChange(HandledScreen<?> screen) {
+ for (AbstractSlotTextAdder adder : adders) {
if (!adder.isEnabled()) continue;
- if (adder.titlePattern == null || adder.titlePattern.matcher(title).find()) {
+ if (adder.test(screen)) {
currentScreenAdders.add(adder);
}
}
@@ -68,7 +67,7 @@ public class SlotTextManager {
@NotNull
public static List<SlotText> getText(Slot slot) {
if (currentScreenAdders.isEmpty()) return List.of();
- for (SlotTextAdder adder : currentScreenAdders) {
+ for (AbstractSlotTextAdder adder : currentScreenAdders) {
List<SlotText> text = adder.getText(slot);
if (!text.isEmpty()) return text;
}
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 f3395def..84571149 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,46 +1,57 @@
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 de.hysky.skyblocker.utils.container.RegexContainerMatcher;
+import de.hysky.skyblocker.utils.container.AbstractTooltipAdder;
import org.intellij.lang.annotations.Language;
-import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.NotNull;
-import java.util.List;
import java.util.regex.Pattern;
/**
+ * Simple implementation of a tooltip adder.
* Extend this class and add it to {@link TooltipManager#adders} to add additional text to tooltips.
*/
-public abstract class TooltipAdder extends AbstractContainerMatcher {
+public abstract class TooltipAdder extends RegexContainerMatcher implements AbstractTooltipAdder {
/**
* 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.
+ * @apiNote Consider adding this as a parameter to your class' constructor and
+ * setting it from {@link TooltipManager#adders} to make it easy to read and maintain.
*/
- public final int priority;
+ private final int priority;
- protected TooltipAdder(@Language("RegExp") String titlePattern, int priority) {
+ /**
+ * Utility constructor that will compile the given string into a pattern.
+ *
+ * @see #TooltipAdder(Pattern, int)
+ */
+ protected TooltipAdder(@NotNull @Language("RegExp") String titlePattern, int priority) {
super(titlePattern);
this.priority = priority;
}
- protected TooltipAdder(Pattern titlePattern, int priority) {
+ /**
+ * Creates a TooltipAdder that will be applied to screens with titles that match the given pattern.
+ *
+ * @param titlePattern The pattern to match the screen title against.
+ * @param priority The priority of this adder. Lower priority means it will be applied first.
+ */
+ protected TooltipAdder(@NotNull Pattern titlePattern, int priority) {
super(titlePattern);
this.priority = priority;
}
/**
* Creates a TooltipAdder that will be applied to all screens.
+ *
+ * @param priority The priority of this adder. Lower priority means it will be applied first.
*/
protected TooltipAdder(int priority) {
super();
this.priority = priority;
}
- /**
- * @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(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines);
+ @Override
+ public int getPriority() {
+ return priority;
+ }
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipInfoType.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipInfoType.java
index 46f4cb58..d8327383 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipInfoType.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipInfoType.java
@@ -118,16 +118,6 @@ public enum TooltipInfoType implements Runnable {
}
/**
- * Checks if the tooltip is enabled and the data has the given member name and sends a warning message if data is null.
- *
- * @param memberName the member name to check
- * @return whether the tooltip is enabled and the data has the given member name or not
- */
- public boolean isTooltipEnabledAndHasOrNullWarning(String memberName) {
- return isTooltipEnabled() && hasOrNullWarning(memberName);
- }
-
- /**
* Downloads the data if it is enabled.
*
* @param futureList the list to add the future to
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 c3399b58..2c81cff4 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
@@ -6,10 +6,10 @@ import de.hysky.skyblocker.skyblock.chocolatefactory.ChocolateFactorySolver;
import de.hysky.skyblocker.skyblock.item.tooltip.adders.*;
import de.hysky.skyblocker.skyblock.item.tooltip.adders.CraftPriceTooltip;
import de.hysky.skyblocker.utils.Utils;
+import de.hysky.skyblocker.utils.container.AbstractTooltipAdder;
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;
@@ -21,7 +21,7 @@ import java.util.Comparator;
import java.util.List;
public class TooltipManager {
- private static final TooltipAdder[] adders = new TooltipAdder[]{
+ private static final AbstractTooltipAdder[] adders = new AbstractTooltipAdder[]{
new LineSmoothener(), // Applies before anything else
new SupercraftReminder(),
new ChocolateFactorySolver.Tooltip(),
@@ -39,7 +39,7 @@ public class TooltipManager {
new ColorTooltip(11),
new AccessoryTooltip(12),
};
- private static final ArrayList<TooltipAdder> currentScreenAdders = new ArrayList<>();
+ private static final ArrayList<AbstractTooltipAdder> currentScreenAdders = new ArrayList<>();
private TooltipManager() {
}
@@ -53,20 +53,21 @@ public class TooltipManager {
}
});
ScreenEvents.AFTER_INIT.register((client, screen, width, height) -> {
- onScreenChange(screen);
+ if (screen instanceof HandledScreen<?> handledScreen) {
+ onScreenChange(handledScreen);
+ }
ScreenEvents.remove(screen).register(ignored -> currentScreenAdders.clear());
});
}
- private static void onScreenChange(Screen screen) {
- final String title = screen.getTitle().getString();
+ private static void onScreenChange(HandledScreen<?> screen) {
currentScreenAdders.clear();
- for (TooltipAdder adder : adders) {
- if (adder.titlePattern == null || adder.titlePattern.matcher(title).find()) {
+ for (AbstractTooltipAdder adder : adders) {
+ if (adder.isEnabled() && adder.test(screen)) {
currentScreenAdders.add(adder);
}
}
- currentScreenAdders.sort(Comparator.comparingInt(adder -> adder.priority));
+ currentScreenAdders.sort(Comparator.comparingInt(AbstractTooltipAdder::getPriority));
}
/**
@@ -84,7 +85,7 @@ public class TooltipManager {
@Deprecated
public static List<Text> addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) {
if (!Utils.isOnSkyblock()) return lines;
- for (TooltipAdder adder : currentScreenAdders) {
+ for (AbstractTooltipAdder adder : currentScreenAdders) {
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 caed0e0e..0aeb1cc6 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
@@ -21,7 +21,7 @@ public class AccessoryTooltip extends TooltipAdder {
@Override
public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) {
final String internalID = stack.getSkyblockId();
- if (TooltipInfoType.ACCESSORIES.isTooltipEnabledAndHasOrNullWarning(internalID)) {
+ if (TooltipInfoType.ACCESSORIES.hasOrNullWarning(internalID)) {
Pair<AccessoriesHelper.AccessoryReport, String> report = AccessoriesHelper.calculateReport4Accessory(internalID);
if (report.left() != AccessoriesHelper.AccessoryReport.INELIGIBLE) {
@@ -42,4 +42,9 @@ public class AccessoryTooltip extends TooltipAdder {
}
}
}
+
+ @Override
+ public boolean isEnabled() {
+ return TooltipInfoType.ACCESSORIES.isTooltipEnabled();
+ }
}
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 d7a56b95..1f0180ff 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
@@ -1,6 +1,5 @@
package de.hysky.skyblocker.skyblock.item.tooltip.adders;
-import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.config.configs.GeneralConfig;
import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip;
import de.hysky.skyblocker.skyblock.item.tooltip.TooltipAdder;
@@ -24,40 +23,44 @@ public class AvgBinTooltip extends TooltipAdder {
String internalID = stack.getSkyblockId();
if (neuName == null || internalID == null) return;
- if (SkyblockerConfigManager.get().general.itemTooltip.enableAvgBIN) {
- if (TooltipInfoType.ONE_DAY_AVERAGE.getData() == null || TooltipInfoType.THREE_DAY_AVERAGE.getData() == null) {
- ItemTooltip.nullWarning();
- } else {
+ if (TooltipInfoType.ONE_DAY_AVERAGE.getData() == null || TooltipInfoType.THREE_DAY_AVERAGE.getData() == null) {
+ ItemTooltip.nullWarning();
+ } else {
/*
We are skipping check average prices for potions, runes
and enchanted books because there is no data for their in API.
*/
- if (!neuName.isEmpty() && LBinTooltip.lbinExist) {
- GeneralConfig.Average type = ItemTooltip.config.avg;
+ if (!neuName.isEmpty() && LBinTooltip.lbinExist) {
+ GeneralConfig.Average type = ItemTooltip.config.avg;
- // "No data" line because of API not keeping old data, it causes NullPointerException
- if (type == GeneralConfig.Average.ONE_DAY || type == GeneralConfig.Average.BOTH) {
- lines.add(
- Text.literal(String.format("%-19s", "1 Day Avg. Price:"))
- .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(), stack.getCount())
- )
- );
- }
- if (type == GeneralConfig.Average.THREE_DAY || type == GeneralConfig.Average.BOTH) {
- lines.add(
- Text.literal(String.format("%-19s", "3 Day Avg. Price:"))
- .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(), stack.getCount())
- )
- );
- }
+ // "No data" line because of API not keeping old data, it causes NullPointerException
+ if (type == GeneralConfig.Average.ONE_DAY || type == GeneralConfig.Average.BOTH) {
+ lines.add(
+ Text.literal(String.format("%-19s", "1 Day Avg. Price:"))
+ .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(), stack.getCount())
+ )
+ );
+ }
+ if (type == GeneralConfig.Average.THREE_DAY || type == GeneralConfig.Average.BOTH) {
+ lines.add(
+ Text.literal(String.format("%-19s", "3 Day Avg. Price:"))
+ .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(), stack.getCount())
+ )
+ );
}
}
}
}
+
+ @Override
+ public boolean isEnabled() {
+ //Both 1 day and 3 day averages use the same config option, so we only need to check one
+ return TooltipInfoType.THREE_DAY_AVERAGE.isTooltipEnabled();
+ }
}
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 d2fa563b..36023182 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
@@ -30,7 +30,7 @@ public class BazaarPriceTooltip extends TooltipAdder {
if (name.startsWith("ISSHINY_")) name = "SHINY_" + internalID;
- if (TooltipInfoType.BAZAAR.isTooltipEnabledAndHasOrNullWarning(name)) {
+ if (TooltipInfoType.BAZAAR.hasOrNullWarning(name)) {
int amount;
if (lines.get(1).getString().endsWith("Sack")) {
//The amount is in the 2nd sibling of the 3rd line of the lore. here V
@@ -54,4 +54,9 @@ public class BazaarPriceTooltip extends TooltipAdder {
bazaarExist = true;
}
}
+
+ @Override
+ public boolean isEnabled() {
+ return TooltipInfoType.BAZAAR.isTooltipEnabled();
+ }
}
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 7546d37a..d66ca378 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
@@ -26,9 +26,14 @@ public class ColorTooltip extends TooltipAdder {
}
@Override
+ public boolean isEnabled() {
+ return TooltipInfoType.COLOR.isTooltipEnabled();
+ }
+
+ @Override
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)) {
+ if (TooltipInfoType.COLOR.hasOrNullWarning(internalID) && stack.contains(DataComponentTypes.DYED_COLOR)) {
//DyedColorComponent#getColor can be ARGB so we mask out the alpha bits
int dyeColor = stack.get(DataComponentTypes.DYED_COLOR).rgb() & 0x00FFFFFF;
String colorHex = String.format("%06X", dyeColor);
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 0b1d993d..4cd1d2b5 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
@@ -19,7 +19,6 @@ public class DungeonQualityTooltip extends TooltipAdder {
@Override
public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) {
- if (!SkyblockerConfigManager.get().general.itemTooltip.dungeonQuality) return;
NbtCompound customData = ItemUtils.getCustomData(stack);
if (customData == null || !customData.contains("baseStatBoostPercentage")) return;
int baseStatBoostPercentage = customData.getInt("baseStatBoostPercentage");
@@ -40,7 +39,7 @@ public class DungeonQualityTooltip extends TooltipAdder {
}
}
- final String getItemTierFloor(int tier) {
+ private String getItemTierFloor(int tier) {
return switch (tier) {
case 0 -> "E";
case 1 -> "F1";
@@ -56,4 +55,9 @@ public class DungeonQualityTooltip extends TooltipAdder {
default -> "Unknown";
};
}
+
+ @Override
+ public boolean isEnabled() {
+ return SkyblockerConfigManager.get().general.itemTooltip.dungeonQuality;
+ }
}
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 e6930c32..b2186203 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
@@ -19,6 +19,11 @@ public class LBinTooltip extends TooltipAdder {
}
@Override
+ public boolean isEnabled() {
+ return TooltipInfoType.LOWEST_BINS.isTooltipEnabled();
+ }
+
+ @Override
public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) {
lbinExist = false;
final String internalID = stack.getSkyblockId();
@@ -30,7 +35,7 @@ public class LBinTooltip extends TooltipAdder {
// bazaarOpened & bazaarExist check for lbin, because Skytils keeps some bazaar item data in lbin api
- if (TooltipInfoType.LOWEST_BINS.isTooltipEnabledAndHasOrNullWarning(name) && !BazaarPriceTooltip.bazaarExist) {
+ if (TooltipInfoType.LOWEST_BINS.hasOrNullWarning(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(), stack.getCount())));
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 0e997834..c459f76b 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
@@ -17,6 +17,11 @@ public class LineSmoothener extends TooltipAdder {
return Text.literal(" ").formatted(Formatting.DARK_GRAY, Formatting.STRIKETHROUGH, Formatting.BOLD);
}
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
+
public LineSmoothener() {
super(Integer.MIN_VALUE);
}
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 a0aa8d94..6a612594 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
@@ -21,13 +21,18 @@ public class MotesTooltip extends TooltipAdder {
@Override
public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) {
final String internalID = stack.getSkyblockId();
- if (internalID != null && TooltipInfoType.MOTES.isTooltipEnabledAndHasOrNullWarning(internalID)) {
+ if (internalID != null && TooltipInfoType.MOTES.hasOrNullWarning(internalID)) {
lines.add(Text.literal(String.format("%-20s", "Motes Price:"))
.formatted(Formatting.LIGHT_PURPLE)
.append(getMotesMessage(TooltipInfoType.MOTES.getData().get(internalID).getAsInt(), stack.getCount())));
}
}
+ @Override
+ public boolean isEnabled() {
+ return TooltipInfoType.MOTES.isTooltipEnabled();
+ }
+
private static Text getMotesMessage(int price, int count) {
float motesMultiplier = SkyblockerConfigManager.get().otherLocations.rift.mcGrubberStacks * 0.05f + 1;
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 5c21d2df..e6e06064 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,9 +19,14 @@ public class MuseumTooltip extends TooltipAdder {
}
@Override
+ public boolean isEnabled() {
+ return TooltipInfoType.MOTES.isTooltipEnabled();
+ }
+
+ @Override
public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) {
final String internalID = stack.getSkyblockId();
- if (TooltipInfoType.MUSEUM.isTooltipEnabledAndHasOrNullWarning(internalID)) {
+ if (TooltipInfoType.MUSEUM.hasOrNullWarning(internalID)) {
String itemCategory = TooltipInfoType.MUSEUM.getData().get(internalID).getAsString();
String format = switch (itemCategory) {
case "Weapons" -> "%-18s";
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 d556c9b2..fcdd15e6 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,9 +18,14 @@ public class NpcPriceTooltip extends TooltipAdder {
}
@Override
+ public boolean isEnabled() {
+ return TooltipInfoType.NPC.isTooltipEnabled();
+ }
+
+ @Override
public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) {
final String internalID = stack.getSkyblockId();
- if (internalID != null && TooltipInfoType.NPC.isTooltipEnabledAndHasOrNullWarning(internalID)) {
+ if (internalID != null && TooltipInfoType.NPC.hasOrNullWarning(internalID)) {
int amount;
if (lines.get(1).getString().endsWith("Sack")) {
//The amount is in the 2nd sibling of the 3rd line of the lore. here V
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 9f405c58..fc3ac28d 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
@@ -27,15 +27,17 @@ public class ObtainedDateTooltip extends TooltipAdder {
}
@Override
- public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) {
- if (TooltipInfoType.OBTAINED.isTooltipEnabled()) {
- String timestamp = getTimestamp(stack);
+ public boolean isEnabled() {
+ return TooltipInfoType.OBTAINED.isTooltipEnabled();
+ }
- if (!timestamp.isEmpty()) {
- lines.add(Text.empty()
- .append(Text.literal(String.format("%-21s", "Obtained: ")).formatted(Formatting.LIGHT_PURPLE))
- .append(Text.literal(timestamp).formatted(Formatting.RED)));
- }
+ @Override
+ public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) {
+ String timestamp = getTimestamp(stack);
+ if (!timestamp.isEmpty()) {
+ lines.add(Text.empty()
+ .append(Text.literal(String.format("%-21s", "Obtained: ")).formatted(Formatting.LIGHT_PURPLE))
+ .append(Text.literal(timestamp).formatted(Formatting.RED)));
}
}
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 47d2bd48..767832c0 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
@@ -29,4 +29,9 @@ public class SupercraftReminder extends TooltipAdder {
if (lines.get(lines.size() - 2).getString().equals("Recipe not unlocked!")) index--; //Place it right below the "Right-Click to set amount" line
lines.add(index, Text.literal("Shift-Click to maximize the amount!").formatted(Formatting.GOLD));
}
+
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
}