From 7d9a6a101071c75773668e0881b37466506307dd Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal002@users.noreply.github.com> Date: Mon, 19 Feb 2024 13:29:45 +0100 Subject: Item name rewrite and cache #1016 --- .../at/hannibal2/skyhanni/data/OwnInventoryData.kt | 4 ++-- src/main/java/at/hannibal2/skyhanni/data/PetAPI.kt | 25 ++++++++++++++++++++-- .../java/at/hannibal2/skyhanni/data/SlayerAPI.kt | 12 ++--------- 3 files changed, 27 insertions(+), 14 deletions(-) (limited to 'src/main/java/at/hannibal2/skyhanni/data') diff --git a/src/main/java/at/hannibal2/skyhanni/data/OwnInventoryData.kt b/src/main/java/at/hannibal2/skyhanni/data/OwnInventoryData.kt index 824b895bb..2bc9cf3c3 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/OwnInventoryData.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/OwnInventoryData.kt @@ -11,7 +11,7 @@ import at.hannibal2.skyhanni.utils.CollectionUtils.addOrPut import at.hannibal2.skyhanni.utils.DelayedRun import at.hannibal2.skyhanni.utils.InventoryUtils import at.hannibal2.skyhanni.utils.ItemUtils.getInternalNameOrNull -import at.hannibal2.skyhanni.utils.ItemUtils.getItemName +import at.hannibal2.skyhanni.utils.ItemUtils.itemName import at.hannibal2.skyhanni.utils.LorenzUtils import at.hannibal2.skyhanni.utils.NEUInternalName import at.hannibal2.skyhanni.utils.SimpleTimeMark @@ -109,7 +109,7 @@ class OwnInventoryData { fun onChat(event: LorenzChatEvent) { sackToInventoryChatPattern.matchMatcher(event.message) { val name = group("name") - ignoreItem(500.milliseconds) { it.getItemName().contains(name) } + ignoreItem(500.milliseconds) { it.itemName.contains(name) } } } diff --git a/src/main/java/at/hannibal2/skyhanni/data/PetAPI.kt b/src/main/java/at/hannibal2/skyhanni/data/PetAPI.kt index f422c0b12..d5efd3735 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/PetAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/PetAPI.kt @@ -1,13 +1,23 @@ package at.hannibal2.skyhanni.data +import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher import at.hannibal2.skyhanni.utils.StringUtils.matches import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern object PetAPI { - private val petMenuPattern by RepoPattern.pattern( - "misc.pet.menu.title", + private val patternGroup = RepoPattern.group("misc.pet") + private val petMenuPattern by patternGroup.pattern( + "menu.title", "Pets(?: \\(\\d+/\\d+\\) )?" ) + private val petItemName by patternGroup.pattern( + "item.name", + "§.\\[Lvl (?\\d)] (?.*)" + ) + private val neuRepoPetItemName by patternGroup.pattern( + "item.name.neu.format", + "(§f§f)?§7\\[Lvl 1➡(100|200)] (?.*)" + ) fun isPetMenu(inventoryTitle: String): Boolean = petMenuPattern.matches(inventoryTitle) @@ -19,4 +29,15 @@ object PetAPI { } fun isCurrentPet(petName: String): Boolean = currentPet?.contains(petName) ?: false + + fun getCleanName(nameWithLevel: String): String? { + petItemName.matchMatcher(nameWithLevel) { + return group("name") + } + neuRepoPetItemName.matchMatcher(nameWithLevel) { + return group("name") + } + + return null + } } diff --git a/src/main/java/at/hannibal2/skyhanni/data/SlayerAPI.kt b/src/main/java/at/hannibal2/skyhanni/data/SlayerAPI.kt index 64d1f6206..296e2db65 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/SlayerAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/SlayerAPI.kt @@ -8,10 +8,9 @@ import at.hannibal2.skyhanni.events.SlayerProgressChangeEvent import at.hannibal2.skyhanni.events.SlayerQuestCompleteEvent import at.hannibal2.skyhanni.features.slayer.SlayerType import at.hannibal2.skyhanni.utils.CollectionUtils.nextAfter -import at.hannibal2.skyhanni.utils.ItemUtils.nameWithEnchantment +import at.hannibal2.skyhanni.utils.ItemUtils.itemName import at.hannibal2.skyhanni.utils.LorenzUtils import at.hannibal2.skyhanni.utils.NEUInternalName -import at.hannibal2.skyhanni.utils.NEUItems.getItemStack import at.hannibal2.skyhanni.utils.NEUItems.getNpcPriceOrNull import at.hannibal2.skyhanni.utils.NEUItems.getPrice import at.hannibal2.skyhanni.utils.NumberUtil @@ -46,7 +45,7 @@ object SlayerAPI { } val amountFormat = if (amount != 1) "§7${amount}x §r" else "" - val displayName = getNameWithEnchantmentFor(internalName) + val displayName = internalName.itemName val price = internalName.getPrice() val npcPrice = internalName.getNpcPriceOrNull() ?: 0.0 @@ -61,13 +60,6 @@ object SlayerAPI { return result } - private fun getNameWithEnchantmentFor(internalName: NEUInternalName): String { - if (internalName.asString() == "WISP_POTION") { - return "§fWisp's Ice-Flavored Water" - } - return internalName.getItemStack().nameWithEnchantment ?: error("Could not find name for $internalName") - } - @SubscribeEvent fun onDebugDataCollect(event: DebugDataCollectEvent) { event.title("Slayer") -- cgit