diff options
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features')
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/features/misc/items/enchants/EnchantParser.kt | 32 | ||||
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/features/misc/items/enchants/FormattedEnchant.kt | 3 |
2 files changed, 14 insertions, 21 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/items/enchants/EnchantParser.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/items/enchants/EnchantParser.kt index dbd8a3a1b..a1aacfb0c 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/misc/items/enchants/EnchantParser.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/misc/items/enchants/EnchantParser.kt @@ -1,13 +1,12 @@ package at.hannibal2.skyhanni.features.misc.items.enchants import at.hannibal2.skyhanni.SkyHanniMod -import at.hannibal2.skyhanni.api.event.HandleEvent import at.hannibal2.skyhanni.config.features.inventory.EnchantParsingConfig import at.hannibal2.skyhanni.config.features.inventory.EnchantParsingConfig.CommaFormat import at.hannibal2.skyhanni.events.ChatHoverEvent import at.hannibal2.skyhanni.events.ConfigLoadEvent +import at.hannibal2.skyhanni.events.LorenzToolTipEvent import at.hannibal2.skyhanni.events.RepositoryReloadEvent -import at.hannibal2.skyhanni.events.item.ItemHoverEvent import at.hannibal2.skyhanni.features.chroma.ChromaManager import at.hannibal2.skyhanni.mixins.hooks.GuiChatHook import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule @@ -39,7 +38,7 @@ object EnchantParser { val patternGroup = RepoPattern.group("misc.items.enchantparsing") val enchantmentPattern by patternGroup.pattern( - "enchants", "(§9§d§l|§d§l§d§l|§9)(?<enchant>[A-Za-z][A-Za-z '-]+) (?<levelNumeral>[IVXLCDM]+|[0-9]+)(?<stacking>§9, |\$| §8\\d{1,3}(,\\d{3})*)" + "enchants", "(?<enchant>[A-Za-z][A-Za-z '-]+) (?<levelNumeral>[IVXLCDM]+)(?<stacking>, |\$| \\d{1,3}(,\\d{3})*)" ) private val grayEnchantPattern by patternGroup.pattern( "grayenchants", "^(Respiration|Aqua Affinity|Depth Strider|Efficiency).*" @@ -92,10 +91,10 @@ object EnchantParser { } } - @HandleEvent(onlyOnSkyblock = true) - fun onTooltipEvent(event: ItemHoverEvent) { + @SubscribeEvent + fun onTooltipEvent(event: LorenzToolTipEvent) { // If enchants doesn't have any enchant data then we have no data to parse enchants correctly - if (!this.enchants.hasEnchantData()) return + if (!isEnabled() || !this.enchants.hasEnchantData()) return currentItem = event.itemStack @@ -221,7 +220,7 @@ object EnchantParser { val strippedLine = loreList[i].removeColor() if (startEnchant == -1) { - if (this.enchants.containsEnchantment(enchants, loreList[i])) startEnchant = i + if (this.enchants.containsEnchantment(enchants, strippedLine)) startEnchant = i } else if (strippedLine.trim().isEmpty() && endEnchant == -1) endEnchant = i - 1 } @@ -233,27 +232,22 @@ object EnchantParser { var lastEnchant: FormattedEnchant? = null for (i in startEnchant..endEnchant) { - val matcher = enchantmentPattern.matcher(loreList[i]) + val unformattedLine = loreList[i].removeColor() + val matcher = enchantmentPattern.matcher(unformattedLine) var containsEnchant = false var enchantsOnThisLine = 0 - var isRoman = true while (matcher.find()) { // Pull enchant, enchant level and stacking amount if applicable val enchant = this.enchants.getFromLore(matcher.group("enchant")) - val level = try { - // If one enchant is not a roman numeral we assume all are not roman numerals (idk a situation where this wouldn't be the case) - matcher.group("levelNumeral").toInt().also { isRoman = false } - } catch (e: NumberFormatException) { - matcher.group("levelNumeral").romanToDecimal() - } - val stacking = if (matcher.group("stacking").trimStart().removeColor().matches("[\\d,]+\$".toRegex())) { + val level = matcher.group("levelNumeral").romanToDecimal() + val stacking = if (matcher.group("stacking").trimStart().matches("[\\d,]+\$".toRegex())) { shouldBeSingleColumn = true matcher.group("stacking") } else "empty" // Last found enchant - lastEnchant = FormattedEnchant(enchant, level, stacking, isRoman) + lastEnchant = FormattedEnchant(enchant, level, stacking) if (!orderedEnchants.add(lastEnchant)) { for (e: FormattedEnchant in orderedEnchants) { @@ -281,10 +275,10 @@ object EnchantParser { // Normal is leaving the formatting as Hypixel provides it if (config.format.get() == EnchantParsingConfig.EnchantFormat.NORMAL) { normalFormatting(insertEnchants) - // Compressed is always forcing 3 enchants per line, except when there is stacking enchant progress visible + // Compressed is always forcing 3 enchants per line, except when there is stacking enchant progress visible } else if (config.format.get() == EnchantParsingConfig.EnchantFormat.COMPRESSED && !shouldBeSingleColumn) { compressedFormatting(insertEnchants) - // Stacked is always forcing 1 enchant per line + // Stacked is always forcing 1 enchant per line } else { stackedFormatting(insertEnchants) } diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/items/enchants/FormattedEnchant.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/items/enchants/FormattedEnchant.kt index 73cf57e7a..504415296 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/misc/items/enchants/FormattedEnchant.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/misc/items/enchants/FormattedEnchant.kt @@ -6,7 +6,6 @@ class FormattedEnchant( private val enchant: Enchant, private val level: Int, stacking: String, - private val isRoman: Boolean ) : Comparable<FormattedEnchant> { private val stacking: String = stacking get() = "§8$field" @@ -20,7 +19,7 @@ class FormattedEnchant( fun getFormattedString(): String { val builder = StringBuilder() - builder.append(enchant.getFormattedName(level)).append(" ").append(if (isRoman) level.toRoman() else level) + builder.append(enchant.getFormattedName(level)).append(" ").append(level.toRoman()) return if (!stacking.contains("empty")) builder.append(stacking).toString() else builder.toString() } |