diff options
| author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2025-06-26 14:21:23 -0400 |
|---|---|---|
| committer | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2025-06-26 14:21:23 -0400 |
| commit | 48b7ba4a8d6ca640db84d1e29605a9c9e70b338b (patch) | |
| tree | 6b755fcc9d36b90e4d34f87c8741af13b23e94f4 /src/main/java | |
| parent | 71ca871f2a2441813b26e24467b8e75b166f747a (diff) | |
| download | Skyblocker-48b7ba4a8d6ca640db84d1e29605a9c9e70b338b.tar.gz Skyblocker-48b7ba4a8d6ca640db84d1e29605a9c9e70b338b.tar.bz2 Skyblocker-48b7ba4a8d6ca640db84d1e29605a9c9e70b338b.zip | |
Hunting Box Shard Prices
Diffstat (limited to 'src/main/java')
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(); + } } |
