aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2025-06-26 14:21:23 -0400
committerAaron <51387595+AzureAaron@users.noreply.github.com>2025-06-26 14:21:23 -0400
commit48b7ba4a8d6ca640db84d1e29605a9c9e70b338b (patch)
tree6b755fcc9d36b90e4d34f87c8741af13b23e94f4 /src/main/java
parent71ca871f2a2441813b26e24467b8e75b166f747a (diff)
downloadSkyblocker-48b7ba4a8d6ca640db84d1e29605a9c9e70b338b.tar.gz
Skyblocker-48b7ba4a8d6ca640db84d1e29605a9c9e70b338b.tar.bz2
Skyblocker-48b7ba4a8d6ca640db84d1e29605a9c9e70b338b.zip
Hunting Box Shard Prices
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/HuntingBoxPriceTooltip.java48
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/ItemUtils.java11
3 files changed, 61 insertions, 1 deletions
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 6c0d93ed..97cb0b36 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
@@ -46,7 +46,8 @@ public class TooltipManager {
new MuseumTooltip(11),
new ColorTooltip(12),
new AccessoryTooltip(13),
- new DateCalculatorTooltip(14)
+ new DateCalculatorTooltip(14),
+ new HuntingBoxPriceTooltip(15)
};
private static final ArrayList<TooltipAdder> currentScreenAdders = new ArrayList<>();
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/HuntingBoxPriceTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/HuntingBoxPriceTooltip.java
new file mode 100644
index 00000000..4699e0cd
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/HuntingBoxPriceTooltip.java
@@ -0,0 +1,48 @@
+package de.hysky.skyblocker.skyblock.item.tooltip.adders;
+
+import java.util.List;
+
+import org.jetbrains.annotations.Nullable;
+
+import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.skyblock.hunting.Attribute;
+import de.hysky.skyblocker.skyblock.hunting.Attributes;
+import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip;
+import de.hysky.skyblocker.skyblock.item.tooltip.SimpleTooltipAdder;
+import de.hysky.skyblocker.skyblock.item.tooltip.info.TooltipInfoType;
+import de.hysky.skyblocker.utils.BazaarProduct;
+import de.hysky.skyblocker.utils.ItemUtils;
+import net.minecraft.client.gui.screen.Screen;
+import net.minecraft.item.ItemStack;
+import net.minecraft.screen.slot.Slot;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+public class HuntingBoxPriceTooltip extends SimpleTooltipAdder {
+ public HuntingBoxPriceTooltip(int priority) {
+ super("^Hunting Box$", priority);
+ }
+
+ @Override
+ public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) {
+ Attribute attribute = Attributes.getAttributeFromItemName(stack);
+
+ if (attribute != null && TooltipInfoType.BAZAAR.hasOrNullWarning(attribute.apiId())) {
+ int count = ItemUtils.getItemCountInHuntingBox(stack).orElse(1);
+ BazaarProduct product = TooltipInfoType.BAZAAR.getData().get(attribute.apiId());
+ boolean holdingShift = Screen.hasShiftDown();
+ String shardText = count > 1 ? "Shards" : "Shard";
+
+ lines.add(Text.literal(shardText + " Sell Price: ")
+ .formatted(Formatting.GOLD)
+ .append(product.sellPrice().isEmpty()
+ ? Text.literal("No data").formatted(Formatting.RED)
+ : ItemTooltip.getCoinsMessage(product.sellPrice().getAsDouble() * count, holdingShift ? count : 1, true)));
+ }
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return SkyblockerConfigManager.get().hunting.huntingBox.enabled;
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java b/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java
index dc3f3c5a..878d45c9 100644
--- a/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java
+++ b/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java
@@ -70,6 +70,7 @@ public final class ItemUtils {
private static final Logger LOGGER = LoggerFactory.getLogger(ItemUtils.class);
private static final Pattern STORED_PATTERN = Pattern.compile("Stored: ([\\d,]+)/\\S+");
private static final Pattern STASH_COUNT_PATTERN = Pattern.compile("x([\\d,]+)$"); // This is used with Matcher#find, not #matches
+ private static final Pattern HUNTING_BOX_COUNT_PATTERN = Pattern.compile("Owned: (?<shards>\\d+) Shards?");
private static final short LOG_INTERVAL = 1000;
private static long lastLog = Util.getMeasuringTimeMs();
@@ -529,4 +530,14 @@ public final class ItemUtils {
public static OptionalInt getItemCountInStash(@NotNull Text itemName) {
return RegexUtils.findIntFromMatcher(STASH_COUNT_PATTERN.matcher(itemName.getString()));
}
+
+ /**
+ * Finds the number of shards the player owns inside of the hunting box.
+ */
+ @NotNull
+ public static OptionalInt getItemCountInHuntingBox(@NotNull ItemStack stack) {
+ Matcher matcher = ItemUtils.getLoreLineIfContainsMatch(stack, HUNTING_BOX_COUNT_PATTERN);
+
+ return matcher != null ? RegexUtils.parseOptionalIntFromMatcher(matcher, "shards") : OptionalInt.empty();
+ }
}