diff options
author | Thunderblade73 <85900443+Thunderblade73@users.noreply.github.com> | 2024-06-13 18:27:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-13 18:27:06 +0200 |
commit | ed9a2aa7fafaf0d987d34f8eea529a206d535747 (patch) | |
tree | 23de2c85c76c6667947e2d64757eb4c431f7e977 | |
parent | 17d8e4898a3897cd6b3110ed4b8035e3d9285029 (diff) | |
download | skyhanni-ed9a2aa7fafaf0d987d34f8eea529a206d535747.tar.gz skyhanni-ed9a2aa7fafaf0d987d34f8eea529a206d535747.tar.bz2 skyhanni-ed9a2aa7fafaf0d987d34f8eea529a206d535747.zip |
Future Fix: CustomeScoreboard UnkownLinesHandler auto adds patterns from the repo (#2068)
Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
2 files changed, 156 insertions, 136 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ScoreboardPattern.kt b/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ScoreboardPattern.kt index 81e8b2382..984e91750 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ScoreboardPattern.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ScoreboardPattern.kt @@ -1,44 +1,51 @@ package at.hannibal2.skyhanni.features.gui.customscoreboard +import at.hannibal2.skyhanni.events.RepositoryReloadEvent import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent @SkyHanniModule object ScoreboardPattern { - val group = RepoPattern.group("features.gui.customscoreboard") + private val group = RepoPattern.group("features.gui.customscoreboard") // Stats from the scoreboard - private val scoreboardGroup = group.group("scoreboard") + private val scoreboardGroup by group.exclusiveGroup("scoreboard") + + @SubscribeEvent + fun onRepositoryReload(event: RepositoryReloadEvent) { + UnknownLinesHandler.remoteOnlyPatterns = scoreboardGroup.getUnusedPatterns().toTypedArray() + } // main scoreboard private val mainSb = scoreboardGroup.group("main") val motesPattern by mainSb.pattern( "motes", - "^(§.)*Motes: (§.)*(?<motes>[\\d,]+).*$" + "^(§.)*Motes: (§.)*(?<motes>[\\d,]+).*$", ) val heatPattern by mainSb.pattern( "heat", - "^Heat: (?<heat>.*)$" + "^Heat: (?<heat>.*)$", ) // this line is weird (either text or number), ill leave it as is; it even has different colors? val coldPattern by mainSb.pattern( "cold", - "^(?:§.)*Cold: §.(?<cold>-?\\d+)❄$" + "^(?:§.)*Cold: §.(?<cold>-?\\d+)❄$", ) val copperPattern by mainSb.pattern( "copper", - "^(§.)*Copper: (§.)*(?<copper>[\\d,]+).*$" + "^(§.)*Copper: (§.)*(?<copper>[\\d,]+).*$", ) val locationPattern by mainSb.pattern( "location", - "^\\s*(?<location>(§7⏣|§5ф) .*)$" + "^\\s*(?<location>(§7⏣|§5ф) .*)$", ) val lobbyCodePattern by mainSb.pattern( "lobbycode", - "^\\s*§.((\\d{2}/\\d{2}/\\d{2})|Server closing: [\\d:]+) §8(?<code>.*)\$" + "^\\s*§.((\\d{2}/\\d{2}/\\d{2})|Server closing: [\\d:]+) §8(?<code>.*)\$", ) val datePattern by mainSb.pattern( "date", - "^\\s*(Late |Early )?(Spring|Summer|Autumn|Winter) \\d{1,2}(st|nd|rd|th)?.*" + "^\\s*(Late |Early )?(Spring|Summer|Autumn|Winter) \\d{1,2}(st|nd|rd|th)?.*", ) /** @@ -47,135 +54,135 @@ object ScoreboardPattern { */ val timePattern by mainSb.pattern( "time", - "^\\s*§7\\d{1,2}:\\d{2}(?:am|pm)\\s*(?<symbol>(§b☽|§e☀|§.⚡|§.☔))?.*$" + "^\\s*§7\\d{1,2}:\\d{2}(?:am|pm)\\s*(?<symbol>(§b☽|§e☀|§.⚡|§.☔))?.*$", ) val footerPattern by mainSb.pattern( "footer", - "§e(www|alpha).hypixel.net\$" + "§e(www|alpha).hypixel.net\$", ) val yearVotesPattern by mainSb.pattern( "yearvotes", - "(?<yearvotes>^§6Year \\d+ Votes\$)" + "(?<yearvotes>^§6Year \\d+ Votes\$)", ) val votesPattern by mainSb.pattern( "votes", - "(?<votes>§[caebd]\\|+(§f)?\\|+ §(.+)$)" + "(?<votes>§[caebd]\\|+(§f)?\\|+ §(.+)$)", ) val waitingForVotePattern by mainSb.pattern( "waitingforvote", - "(§7Waiting for|§7your vote\\.\\.\\.)$" + "(§7Waiting for|§7your vote\\.\\.\\.)$", ) val northstarsPattern by mainSb.pattern( "northstars", - "North Stars: §d(?<northstars>[\\w,]+).*$" + "North Stars: §d(?<northstars>[\\w,]+).*$", ) val profileTypePattern by mainSb.pattern( "profiletype", - "^\\s*(§7♲ §7Ironman|§a☀ §aStranded|§.Ⓑ §.Bingo).*$" + "^\\s*(§7♲ §7Ironman|§a☀ §aStranded|§.Ⓑ §.Bingo).*$", ) val emptyLinesPattern by mainSb.pattern( "emptylines", - "^\\s*$" + "^\\s*$", ) // multi use private val multiUseSb = scoreboardGroup.group("multiuse") val autoClosingPattern by multiUseSb.pattern( "autoclosing", - "(§.)*Auto-closing in: §c(\\d{1,2}:)?\\d{1,2}$" + "(§.)*Auto-closing in: §c(\\d{1,2}:)?\\d{1,2}$", ) val startingInPattern by multiUseSb.pattern( "startingin", - "(§.)*Starting in: §.(\\d{1,2}:)?\\d{1,2}$" + "(§.)*Starting in: §.(\\d{1,2}:)?\\d{1,2}$", ) val timeElapsedPattern by multiUseSb.pattern( "timeelapsed", - "(§.)*Time Elapsed: (§.)*(?<time>(\\w+[ydhms] ?)+)$" + "(§.)*Time Elapsed: (§.)*(?<time>(\\w+[ydhms] ?)+)$", ) val instanceShutdownPattern by multiUseSb.pattern( "instanceshutdown", - "(§.)*Instance Shutdown In: (§.)*(?<time>(\\w+[ydhms] ?)+)$" + "(§.)*Instance Shutdown In: (§.)*(?<time>(\\w+[ydhms] ?)+)$", ) val timeLeftPattern by multiUseSb.pattern( "timeleft", - "(?:§.)*Time Left: (?:§.)*[\\w:,.\\s]+$" + "(?:§.)*Time Left: (?:§.)*[\\w:,.\\s]+$", ) // dungeon scoreboard private val dungeonSb = scoreboardGroup.group("dungeon") val m7dragonsPattern by dungeonSb.pattern( "m7dragons", - "^(§cNo Alive Dragons|§8- (?:§.)+[\\w\\s]+Dragon§a [\\w,.]+§.❤)$" + "^(§cNo Alive Dragons|§8- (?:§.)+[\\w\\s]+Dragon§a [\\w,.]+§.❤)$", ) val keysPattern by dungeonSb.pattern( "keys", - "Keys: §.■ §.[✗✓] §.■ §a.x$" + "Keys: §.■ §.[✗✓] §.■ §a.x$", ) val clearedPattern by dungeonSb.pattern( "cleared", - "(§.)*Cleared: (§.)*(?<percent>[\\w,.]+)% (§.)*\\((§.)*(?<score>[\\w,.]+)(§.)*\\)$" + "(§.)*Cleared: (§.)*(?<percent>[\\w,.]+)% (§.)*\\((§.)*(?<score>[\\w,.]+)(§.)*\\)$", ) val soloPattern by dungeonSb.pattern( "solo", - "§3§lSolo$" + "§3§lSolo$", ) val teammatesPattern by dungeonSb.pattern( "teammates", - "(§.)*(?<classAbbv>\\[\\w]) (§.)*(?<username>[a-zA-Z0-9_]{2,16}) ((§.)*(?<classLevel>\\[Lvl?(?<level>[\\w,.]+)?]?)|(§.)*(?<health>[\\w,.]+)(§.)*.?)$" + "(§.)*(?<classAbbv>\\[\\w]) (§.)*(?<username>[a-zA-Z0-9_]{2,16}) ((§.)*(?<classLevel>\\[Lvl?(?<level>[\\w,.]+)?]?)|(§.)*(?<health>[\\w,.]+)(§.)*.?)$", ) val floor3GuardiansPattern by dungeonSb.pattern( "floor3guardians", - "§. - §.(?:Healthy|Reinforced|Laser|Chaos)§a [\\w,.]*(?:§c❤)?" + "§. - §.(?:Healthy|Reinforced|Laser|Chaos)§a [\\w,.]*(?:§c❤)?", ) // kuudra private val kuudraSb = scoreboardGroup.group("kuudra") val wavePattern by kuudraSb.pattern( "wave", - "^(§.)*Wave: (§.)*\\d+(§.)*( §.- §.\\d+:\\d+)?$" + "^(§.)*Wave: (§.)*\\d+(§.)*( §.- §.\\d+:\\d+)?$", ) val tokensPattern by kuudraSb.pattern( "tokens", - "^(§.)*Tokens: §.[\\w,]+$" + "^(§.)*Tokens: §.[\\w,]+$", ) val submergesPattern by kuudraSb.pattern( "submerges", - "^(§.)*Submerges In: (§.)*[\\w,?:]+$" + "^(§.)*Submerges In: (§.)*[\\w,?:]+$", ) // farming private val farmingSb = scoreboardGroup.group("farming") val medalsPattern by farmingSb.pattern( "medals", - "§[6fc]§l(GOLD|SILVER|BRONZE) §fmedals: §[6fc]\\d+$" + "§[6fc]§l(GOLD|SILVER|BRONZE) §fmedals: §[6fc]\\d+$", ) val lockedPattern by farmingSb.pattern( "locked", - "^\\s*§cLocked$" + "^\\s*§cLocked$", ) val cleanUpPattern by farmingSb.pattern( "cleanup", - "^\\s*(§.)*Cleanup(§.)*: (§.)*[\\d,.]*%?$" + "^\\s*(§.)*Cleanup(§.)*: (§.)*[\\d,.]*%?$", ) val pastingPattern by farmingSb.pattern( "pasting", - "^\\s*§f(Barn )?Pasting§7: (§.)*[\\d,.]+%?$" + "^\\s*§f(Barn )?Pasting§7: (§.)*[\\d,.]+%?$", ) val peltsPattern by farmingSb.pattern( "pelts", - "^(§.)*Pelts: (§.)*([\\d,]+).*$" + "^(§.)*Pelts: (§.)*([\\d,]+).*$", ) val mobLocationPattern by farmingSb.pattern( "moblocation", - "^(§.)*Tracker Mob Location:" + "^(§.)*Tracker Mob Location:", ) val jacobsContestPattern by farmingSb.pattern( "jacobscontest", - "^§eJacob's Contest$" + "^§eJacob's Contest$", ) val plotPattern by farmingSb.pattern( "plot", - "\\s*§aPlot §7-.*" + "\\s*§aPlot §7-.*", ) // mining @@ -191,7 +198,7 @@ object ScoreboardPattern { */ val powderPattern by miningSb.pattern( "powder", - "(?:§.)*᠅ (?:§.)(?<type>Gemstone|Mithril|Glacite)(?: Powder)?(?:§.)*:? (?:§.)*(?<amount>[\\d,.]*)" + "(?:§.)*᠅ (?:§.)(?<type>Gemstone|Mithril|Glacite)(?: Powder)?(?:§.)*:? (?:§.)*(?<amount>[\\d,.]*)", ) /** @@ -201,167 +208,167 @@ object ScoreboardPattern { */ val powderGreedyPattern by miningSb.pattern( "powdergreedy", - "(?:§.)*᠅ (?:§.)(?<type>Gemstone|Mithril|Glacite)(?: Powder)?.*$" + "(?:§.)*᠅ (?:§.)(?<type>Gemstone|Mithril|Glacite)(?: Powder)?.*$", ) val windCompassPattern by miningSb.pattern( "windcompass", - "§9Wind Compass$" + "§9Wind Compass$", ) val windCompassArrowPattern by miningSb.pattern( "windcompassarrow", - "( )*((§[a-zA-Z0-9]|[⋖⋗≈])+)( )*((§[a-zA-Z0-9]|[⋖⋗≈])+)?( )*" + "( )*((§[a-zA-Z0-9]|[⋖⋗≈])+)( )*((§[a-zA-Z0-9]|[⋖⋗≈])+)?( )*", ) val miningEventPattern by miningSb.pattern( "miningevent", - "^Event: §.§L.*$" + "^Event: §.§L.*$", ) val miningEventZonePattern by miningSb.pattern( "miningeventzone", - "^Zone: §.*$" + "^Zone: §.*$", ) val raffleUselessPattern by miningSb.pattern( "raffleuseless", - "^(Find tickets on the|ground and bring them|to the raffle box)$" + "^(Find tickets on the|ground and bring them|to the raffle box)$", ) val raffleTicketsPattern by miningSb.pattern( "raffletickets", - "^Tickets: §a\\d+ §7\\(\\d{1,3}\\.\\d%\\)$" + "^Tickets: §a\\d+ §7\\(\\d{1,3}\\.\\d%\\)$", ) val rafflePoolPattern by miningSb.pattern( "rafflepool", - "^Pool: §6\\d+§8/500$" + "^Pool: §6\\d+§8/500$", ) val mithrilUselessPattern by miningSb.pattern( "mithriluseless", - "^§7Give Tasty Mithril to Don!$" + "^§7Give Tasty Mithril to Don!$", ) val mithrilRemainingPattern by miningSb.pattern( "mithrilremaining", - "^Remaining: §a(\\d+ Tasty Mithril|FULL)$" + "^Remaining: §a(\\d+ Tasty Mithril|FULL)$", ) val mithrilYourMithrilPattern by miningSb.pattern( "mithrilyourmithril", - "^Your Tasty Mithril: §c\\d+.*$" + "^Your Tasty Mithril: §c\\d+.*$", ) val nearbyPlayersPattern by miningSb.pattern( "nearbyplayers", - "^Nearby Players: §.(\\d+|N/A)$" + "^Nearby Players: §.(\\d+|N/A)$", ) val uselessGoblinPattern by miningSb.pattern( "uselessgoblin", - "^§7Kill goblins!$" + "^§7Kill goblins!$", ) val remainingGoblinPattern by miningSb.pattern( - "remaininggoblin", "^Remaining: §a\\d+ goblins$" + "remaininggoblin", "^Remaining: §a\\d+ goblins$", ) val yourGoblinKillsPattern by miningSb.pattern( - "yourgoblin", "^Your kills: §c\\d+ ☠( §a\\(\\+\\d+\\))?$" + "yourgoblin", "^Your kills: §c\\d+ ☠( §a\\(\\+\\d+\\))?$", ) val mineshaftNotStartedPattern by miningSb.pattern( "mineshaft.notstarted", - "(?:§.)*Not started.*" + "(?:§.)*Not started.*", ) val fortunateFreezingBonusPattern by miningSb.pattern( "fortunatefreezing.bonus", - "Event Bonus: §6\\+\\d+☘" + "Event Bonus: §6\\+\\d+☘", ) val fossilDustPattern by miningSb.pattern( "fossildust", - "Fossil Dust: §f[\\d.,]+.*" + "Fossil Dust: §f[\\d.,]+.*", ) // combat private val combatSb = scoreboardGroup.group("combat") val magmaChamberPattern by combatSb.pattern( "magmachamber", - "^Magma Chamber$" + "^Magma Chamber$", ) val magmaBossPattern by combatSb.pattern( "magmaboss", - "^§7Boss: §[c6e]\\d{1,3}%$" + "^§7Boss: §[c6e]\\d{1,3}%$", ) val damageSoakedPattern by combatSb.pattern( "damagesoaked", - "^§7Damage Soaked:" + "^§7Damage Soaked:", ) val killMagmasPattern by combatSb.pattern( "killmagmas", - "^§6Kill the Magmas:$" + "^§6Kill the Magmas:$", ) val killMagmasDamagedSoakedBarPattern by combatSb.pattern( "killmagmasbar", - "^((§.)*▎+)+.*$" + "^((§.)*▎+)+.*$", ) val reformingPattern by combatSb.pattern( "magmareforming", - "^§cThe boss is (?:re)?forming!$" + "^§cThe boss is (?:re)?forming!$", ) val bossHealthPattern by combatSb.pattern( "magmabosshealth", - "^§7Boss Health:$" + "^§7Boss Health:$", ) val bossHealthBarPattern by combatSb.pattern( "magmabosshealthbar", - "^§.(\\d{1,2}(\\.\\d)?M|\\d{1,3}k)§f/§a10M§c❤$" + "^§.(\\d{1,2}(\\.\\d)?M|\\d{1,3}k)§f/§a10M§c❤$", ) val broodmotherPattern by combatSb.pattern( "broodmother", - "^§4Broodmother§7: §[e64](Slain|Dormant|Soon|Awakening|Imminent|Alive!)$" + "^§4Broodmother§7: §[e64](Slain|Dormant|Soon|Awakening|Imminent|Alive!)$", ) val bossHPPattern by combatSb.pattern( "bosshp", - "^(Protector|Dragon) HP: §a(,?\\d{1,3})* §c❤$" + "^(Protector|Dragon) HP: §a(,?\\d{1,3})* §c❤$", ) val bossDamagePattern by combatSb.pattern( "bossdamage", - "^Your Damage: §c(,?\\d{1,3}(\\.\\d)?)*$" + "^Your Damage: §c(,?\\d{1,3}(\\.\\d)?)*$", ) val slayerQuestPattern by combatSb.pattern( "slayerquest", - "^Slayer Quest$" + "^Slayer Quest$", ) // misc private val miscSb = scoreboardGroup.group("misc") val essencePattern by miscSb.pattern( "essence", - "^\\s*.*Essence: §.(?<essence>-?\\d+(:?,\\d{3})*(?:\\.\\d+)?)$" + "^\\s*.*Essence: §.(?<essence>-?\\d+(:?,\\d{3})*(?:\\.\\d+)?)$", ) val redstonePattern by miscSb.pattern( "redstone", - "\\s*(§.)*⚡ §cRedstone: (§.)*\\d{1,3}%$" + "\\s*(§.)*⚡ §cRedstone: (§.)*\\d{1,3}%$", ) val visitingPattern by miscSb.pattern( "visiting", - "^\\s*§a✌ §7\\(§.\\d+(§.)?/\\d+(§.)?\\)$" + "^\\s*§a✌ §7\\(§.\\d+(§.)?/\\d+(§.)?\\)$", ) val flightDurationPattern by miscSb.pattern( "flightduration", - "^\\s*Flight Duration: §a(:?\\d{1,3})*$" + "^\\s*Flight Duration: §a(:?\\d{1,3})*$", ) val dojoChallengePattern by miscSb.pattern( "dojochallenge", - "^(§.)*Challenge: (§.)*(?<challenge>[\\w ]+)$" + "^(§.)*Challenge: (§.)*(?<challenge>[\\w ]+)$", ) val dojoDifficultyPattern by miscSb.pattern( "dojodifficulty", - "^(§.)*Difficulty: (§.)*(?<difficulty>[\\w ]+)$" + "^(§.)*Difficulty: (§.)*(?<difficulty>[\\w ]+)$", ) val dojoPointsPattern by miscSb.pattern( "dojopoints", - "^(§.)*Points: (§.)*[\\w.]+ ?(§7\\(§.*§7\\))?\$" + "^(§.)*Points: (§.)*[\\w.]+ ?(§7\\(§.*§7\\))?\$", ) val dojoTimePattern by miscSb.pattern( "dojotime", - "^(§.)*Time: (§.)*[\\w.]+( §7\\(§.*§7\\))?$" + "^(§.)*Time: (§.)*[\\w.]+( §7\\(§.*§7\\))?$", ) val objectivePattern by miscSb.pattern( "objective", - "^(§.)*(Objective|Quest).*" + "^(§.)*(Objective|Quest).*", ) val queuePattern by miscSb.pattern( "queued", - "Queued:.*" + "Queued:.*", ) val queuePositionPattern by miscSb.pattern( "queueposition", @@ -379,83 +386,83 @@ object ScoreboardPattern { // this thirdObjectiveLinePattern includes all those weird objective lines that go into a third scoreboard line val thirdObjectiveLinePattern by miscSb.pattern( "thirdobjectiveline", - "(\\s*§.\\(§.\\w+§./§.\\w+§.\\)|§f Mages.*|§f Barbarians.*|§edefeat Kuudra|§eand stun him)" + "(\\s*§.\\(§.\\w+§./§.\\w+§.\\)|§f Mages.*|§f Barbarians.*|§edefeat Kuudra|§eand stun him)", ) // collection of lines that just randomly exist and I have no clue how on earth to effectively remove them val wtfAreThoseLinesPattern by miscSb.pattern( "wtfarethoselines", - "^(§eMine \\d+ .*|§eKill 100 Automatons|§eFind a Jungle Key|§eFind the \\d+ Missing Pieces?|§eTalk to the Goblin King)$" + "^(§eMine \\d+ .*|§eKill 100 Automatons|§eFind a Jungle Key|§eFind the \\d+ Missing Pieces?|§eTalk to the Goblin King)$", ) val darkAuctionCurrentItemPattern by miscSb.pattern( "darkauction.currentitem", - "^Current Item:$" + "^Current Item:$", ) // events private val eventsSb = scoreboardGroup.group("events") val travelingZooPattern by eventsSb.pattern( "travelingzoo", - "§aTraveling Zoo§f \\d{0,2}:\\d{2}$" + "§aTraveling Zoo§f \\d{0,2}:\\d{2}$", ) val newYearPattern by eventsSb.pattern( "newyear", - "§dNew Year Event!§f \\d{0,2}?:?\\d{2}$" + "§dNew Year Event!§f \\d{0,2}?:?\\d{2}$", ) val spookyPattern by eventsSb.pattern( "spooky", - "§6Spooky Festival§f \\d{0,2}?:?\\d{2}$" + "§6Spooky Festival§f \\d{0,2}?:?\\d{2}$", ) val winterEventStartPattern by eventsSb.pattern( "wintereventstart", - "(§.)*Event Start: §.\\d+:\\d+$" + "(§.)*Event Start: §.\\d+:\\d+$", ) val winterNextWavePattern by eventsSb.pattern( "wintereventnextwave", - "(§.)*Next Wave: (§.)*(\\d+:\\d+|Soon!)$" + "(§.)*Next Wave: (§.)*(\\d+:\\d+|Soon!)$", ) val winterWavePattern by eventsSb.pattern( "wintereventwave", - "(§.)*Wave \\d+$" + "(§.)*Wave \\d+$", ) val winterMagmaLeftPattern by eventsSb.pattern( "wintereventmagmaleft", - "(§.)*Magma Cubes Left: §.\\d+$" + "(§.)*Magma Cubes Left: §.\\d+$", ) val winterTotalDmgPattern by eventsSb.pattern( "wintereventtotaldmg", - "(§.)*Your Total Damage: §.\\d+.*$" + "(§.)*Your Total Damage: §.\\d+.*$", ) val winterCubeDmgPattern by eventsSb.pattern( "wintereventcubedmg", - "(§.)*Your Cube Damage: §.\\d+$" + "(§.)*Your Cube Damage: §.\\d+$", ) // rift private val riftSb = scoreboardGroup.group("rift") val riftDimensionPattern by riftSb.pattern( "dimension", - "^\\s*§fRift Dimension$" + "^\\s*§fRift Dimension$", ) val riftHotdogTitlePattern by riftSb.pattern( "hotdogtitle", - "^§6Hot Dog Contest$" + "^§6Hot Dog Contest$", ) val riftHotdogEatenPattern by riftSb.pattern( "hotdogeaten", - "^Eaten: §.\\d+\\/\\d+$" + "^Eaten: §.\\d+\\/\\d+$", ) val riftAveikxPattern by riftSb.pattern( "aveikx", - "Time spent sitting|with Ävaeìkx: .*" + "Time spent sitting|with Ävaeìkx: .*", ) val riftHayEatenPattern by riftSb.pattern( "hayeaten", - "^Hay Eaten: §.[\\d,.]+/[\\d,.]+\$" + "^Hay Eaten: §.[\\d,.]+/[\\d,.]+\$", ) val cluesPattern by riftSb.pattern( "clues", - "Clues: §.\\d+/\\d+" + "Clues: §.\\d+/\\d+", ) private val carnivalSb = scoreboardGroup.group("carnival") @@ -465,7 +472,7 @@ object ScoreboardPattern { */ val carnivalPattern by carnivalSb.pattern( "carnival", - "§eCarnival§f (?:\\d+:?)*" + "§eCarnival§f (?:\\d+:?)*", ) /** @@ -475,7 +482,7 @@ object ScoreboardPattern { */ val carnivalTasksPattern by carnivalSb.pattern( "tasks", - "§.§l(?:Catch a Fish|Fruit Diggin|Zombie Shoot)(?:§.§l(?:g|out))?" + "§.§l(?:Catch a Fish|Fruit Diggin|Zombie Shoot)(?:§.§l(?:g|out))?", ) /** @@ -483,7 +490,7 @@ object ScoreboardPattern { */ val carnivalTokensPattern by carnivalSb.pattern( "tokens", - "(?:§f)*Carnival Tokens: §e\\d+" + "(?:§f)*Carnival Tokens: §e\\d+", ) /** @@ -491,7 +498,7 @@ object ScoreboardPattern { */ val carnivalFruitsPattern by carnivalSb.pattern( "fruits", - "(?:§f)?Fruits: §.\\d+§.\\/§.\\d+" + "(?:§f)?Fruits: §.\\d+§.\\/§.\\d+", ) /** @@ -500,7 +507,7 @@ object ScoreboardPattern { */ val carnivalScorePattern by carnivalSb.pattern( "score", - "(?:§f)?Score: §.\\d+.*" + "(?:§f)?Score: §.\\d+.*", ) /** @@ -508,7 +515,7 @@ object ScoreboardPattern { */ val carnivalCatchStreakPattern by carnivalSb.pattern( "catchstreak", - "(?:§f)?Catch Streak: §.\\d+" + "(?:§f)?Catch Streak: §.\\d+", ) /** @@ -517,7 +524,7 @@ object ScoreboardPattern { */ val carnivalAccuracyPattern by carnivalSb.pattern( "accuracy", - "(?:§f)?Accuracy: §.\\d+(?:\\.\\d+)?%" + "(?:§f)?Accuracy: §.\\d+(?:\\.\\d+)?%", ) /** @@ -525,41 +532,41 @@ object ScoreboardPattern { */ val carnivalKillsPattern by carnivalSb.pattern( "kills", - "(?:§f)?Kills: §.\\d+" + "(?:§f)?Kills: §.\\d+", ) // Stats from the tablist private val tablistGroup = group.group("tablist") val gemsPattern by tablistGroup.pattern( "gems", - "^\\s*Gems: §a(?<gems>\\d*,?(\\.\\d+)?[a-zA-Z]?)$" + "^\\s*Gems: §a(?<gems>\\d*,?(\\.\\d+)?[a-zA-Z]?)$", ) val bankPattern by tablistGroup.pattern( "bank", - "^\\s*Bank: §6(?<bank>[\\w.,]+(?:§7 \\/ §6(?<coop>[\\w.,]+))?)$" + "^\\s*Bank: §6(?<bank>[\\w.,]+(?:§7 \\/ §6(?<coop>[\\w.,]+))?)$", ) val mithrilPowderPattern by tablistGroup.pattern( "mithrilpowder", - "^\\s*Mithril(?: Powder)?: (?:§.)+(?<mithrilpowder>[\\d,\\.]+)$" + "^\\s*Mithril(?: Powder)?: (?:§.)+(?<mithrilpowder>[\\d,\\.]+)$", ) val gemstonePowderPattern by tablistGroup.pattern( "gemstonepowder", - "^\\s*Gemstone(?: Powder)?: (?:§.)+(?<gemstonepowder>[\\d,\\.]+)$" + "^\\s*Gemstone(?: Powder)?: (?:§.)+(?<gemstonepowder>[\\d,\\.]+)$", ) val glacitePowderPattern by tablistGroup.pattern( "glacitepowder", - "^\\s*Glacite(?: Powder)?: (?:§.)+(?<glacitepowder>[\\d,\\.]+)$" + "^\\s*Glacite(?: Powder)?: (?:§.)+(?<glacitepowder>[\\d,\\.]+)$", ) val eventNamePattern by tablistGroup.pattern( "event", - "^\\s*§e§lEvent: §r(?<name>§.*)$" + "^\\s*§e§lEvent: §r(?<name>§.*)$", ) val eventTimeEndsPattern by tablistGroup.pattern( "eventtime", - "^\\s+Ends In: §r§e(?<time>.*)$" + "^\\s+Ends In: §r§e(?<time>.*)$", ) val eventTimeStartsPattern by tablistGroup.pattern( "eventtimestarts", - "^\\s+Starts In: §r§e(?<time>.*)$" + "^\\s+Starts In: §r§e(?<time>.*)$", ) } diff --git a/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/UnknownLinesHandler.kt b/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/UnknownLinesHandler.kt index 005fdd5a7..9b82f9b6f 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/UnknownLinesHandler.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/UnknownLinesHandler.kt @@ -9,9 +9,13 @@ import at.hannibal2.skyhanni.utils.ChatUtils import at.hannibal2.skyhanni.utils.CollectionUtils.nextAfter import at.hannibal2.skyhanni.utils.RegexUtils.matches import at.hannibal2.skyhanni.utils.StringUtils.removeResets +import java.util.regex.Pattern import at.hannibal2.skyhanni.features.gui.customscoreboard.ScoreboardPattern as SbPattern object UnknownLinesHandler { + + internal lateinit var remoteOnlyPatterns: Array<Pattern> + fun handleUnknownLines() { val sidebarLines = ScoreboardData.sidebarLinesFormatted @@ -20,9 +24,9 @@ object UnknownLinesHandler { .filter { it.isNotBlank() } .filter { it.trim().length > 3 } - /* + /** * Remove known lines with patterns - */ + **/ val patternsToExclude = listOf( PurseAPI.coinsPattern, SbPattern.motesPattern, @@ -130,57 +134,66 @@ object UnknownLinesHandler { SbPattern.carnivalCatchStreakPattern, SbPattern.carnivalAccuracyPattern, SbPattern.carnivalKillsPattern, + *remoteOnlyPatterns, ) unconfirmedUnknownLines = unconfirmedUnknownLines.filterNot { line -> patternsToExclude.any { pattern -> pattern.matches(line) } } - /* + /** * remove known text - */ + **/ // remove objectives - val objectiveLine = - sidebarLines.firstOrNull { SbPattern.objectivePattern.matches(it) } - ?: "Objective" + val objectiveLine = sidebarLines.firstOrNull { SbPattern.objectivePattern.matches(it) } + ?: "Objective" unconfirmedUnknownLines = unconfirmedUnknownLines.filter { sidebarLines.nextAfter(objectiveLine) != it } // TODO create function unconfirmedUnknownLines = unconfirmedUnknownLines.filter { - sidebarLines.nextAfter(objectiveLine, 2) != it - && !SbPattern.thirdObjectiveLinePattern.matches(it) + sidebarLines.nextAfter(objectiveLine, 2) != it && + !SbPattern.thirdObjectiveLinePattern.matches(it) } // Remove jacobs contest for (i in 1..3) unconfirmedUnknownLines = unconfirmedUnknownLines.filter { - sidebarLines.nextAfter(sidebarLines.firstOrNull { line -> - SbPattern.jacobsContestPattern.matches(line) - } ?: "§eJacob's Contest", i) != it + sidebarLines.nextAfter( + sidebarLines.firstOrNull { line -> + SbPattern.jacobsContestPattern.matches(line) + } ?: "§eJacob's Contest", + i, + ) != it } // Remove slayer for (i in 1..2) unconfirmedUnknownLines = unconfirmedUnknownLines.filter { - sidebarLines.nextAfter(sidebarLines.firstOrNull { line -> - SbPattern.slayerQuestPattern.matches(line) - } ?: "Slayer Quest", i) != it + sidebarLines.nextAfter( + sidebarLines.firstOrNull { line -> + SbPattern.slayerQuestPattern.matches(line) + } ?: "Slayer Quest", + i, + ) != it } // remove trapper mob location unconfirmedUnknownLines = unconfirmedUnknownLines.filter { - sidebarLines.nextAfter(sidebarLines.firstOrNull { line -> - SbPattern.mobLocationPattern.matches(line) - } ?: "Tracker Mob Location:") != it + sidebarLines.nextAfter( + sidebarLines.firstOrNull { line -> + SbPattern.mobLocationPattern.matches(line) + } ?: "Tracker Mob Location:", + ) != it } // da unconfirmedUnknownLines = unconfirmedUnknownLines.filter { - sidebarLines.nextAfter(sidebarLines.firstOrNull { line -> - SbPattern.darkAuctionCurrentItemPattern.matches(line) - } ?: "Current Item:") != it + sidebarLines.nextAfter( + sidebarLines.firstOrNull { line -> + SbPattern.darkAuctionCurrentItemPattern.matches(line) + } ?: "Current Item:", + ) != it } - /* * Handle broken scoreboard lines */ |