From f378737cd5536acce4b956b86a27878d3c7df9ef Mon Sep 17 00:00:00 2001 From: appable Date: Sat, 18 May 2024 02:19:48 -0700 Subject: Fix: Bestiary Display when in search results (#1828) --- .../skyhanni/features/combat/BestiaryData.kt | 38 +++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'src/main') diff --git a/src/main/java/at/hannibal2/skyhanni/features/combat/BestiaryData.kt b/src/main/java/at/hannibal2/skyhanni/features/combat/BestiaryData.kt index c80573e32..22f60e1ff 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/combat/BestiaryData.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/combat/BestiaryData.kt @@ -25,9 +25,11 @@ import at.hannibal2.skyhanni.utils.NumberUtil.toRoman import at.hannibal2.skyhanni.utils.RenderUtils.highlight import at.hannibal2.skyhanni.utils.RenderUtils.renderStringsAndItems import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher +import at.hannibal2.skyhanni.utils.StringUtils.matches import at.hannibal2.skyhanni.utils.StringUtils.removeColor import at.hannibal2.skyhanni.utils.renderables.Renderable import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern +import net.minecraft.init.Items import net.minecraft.item.ItemStack import net.minecraftforge.fml.common.eventhandler.SubscribeEvent @@ -36,6 +38,25 @@ object BestiaryData { private val config get() = SkyHanniMod.feature.combat.bestiary private val patternGroup = RepoPattern.group("combat.bestiary.data") + + /** + * REGEX-TEST: §7Progress to Tier 14: §b26% + * REGEX-TEST: §7Progress to Tier XV: §b57.1% + */ + private val tierProgressPattern by patternGroup.pattern( + "tierprogress", + "§7Progress to Tier [\\dIVXC]+: §b[\\d.]+%" + ) + + /** + * REGEX-TEST: §7Overall Progress: §b55.2% + * REGEX-TEST: §7Overall Progress: §b100% §7(§c§lMAX!§7) + */ + private val overallProgressPattern by patternGroup.pattern( + "overallprogress", + "§7Overall Progress: §b[\\d.]+%(?: §7\\(§c§lMAX!§7\\))?" + ) + private val progressPattern by patternGroup.pattern( "progress", "(?[0-9kKmMbB,.]+)/(?[0-9kKmMbB,.]+\$)" @@ -97,7 +118,7 @@ object BestiaryData { isCategory = inventoryName == "Bestiary ➜ Fishing" || inventoryName == "Bestiary" stackList.putAll(items) inInventory = true - overallProgressEnabled = items[52]?.getLore()?.any { it == "§7Overall Progress: §aSHOWN" } ?: false + overallProgressEnabled = isOverallProgressEnabled(items) update() } @@ -384,6 +405,21 @@ object BestiaryData { } } + private fun isOverallProgressEnabled(inventoryItems: Map): Boolean { + if (inventoryItems[52]?.item == Items.ender_eye) { + return inventoryItems[52]?.getLore()?.any { it == "§7Overall Progress: §aSHOWN" } == true + } + + indexes.forEach { index -> + val item = inventoryItems[index] ?: return true + val hasTierProgress = item.getLore().any { tierProgressPattern.matches(it) } + val hasOverallProgress = item.getLore().any { overallProgressPattern.matches(it) } + if (hasTierProgress && !hasOverallProgress) return false + } + + return true + } + private fun isBestiaryGui(stack: ItemStack?, name: String): Boolean { if (stack == null) return false val bestiaryGuiTitleMatcher = titlePattern.matcher(name) -- cgit