diff options
8 files changed, 20 insertions, 12 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/data/BitsAPI.kt b/src/main/java/at/hannibal2/skyhanni/data/BitsAPI.kt index 022a18d92..a501ba25f 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/BitsAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/BitsAPI.kt @@ -146,7 +146,7 @@ object BitsAPI { @SubscribeEvent fun onScoreboardChange(event: ScoreboardUpdateEvent) { if (!isEnabled()) return - for (line in event.scoreboard) { + for (line in event.added) { val message = line.trimWhiteSpace().removeResets() bitsScoreboardPattern.matchMatcher(message) { diff --git a/src/main/java/at/hannibal2/skyhanni/data/HotmData.kt b/src/main/java/at/hannibal2/skyhanni/data/HotmData.kt index beb7581b0..614772b19 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/HotmData.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/HotmData.kt @@ -680,7 +680,7 @@ enum class HotmData( fun onScoreboardUpdate(event: ScoreboardUpdateEvent) { if (!LorenzUtils.inSkyBlock) return - ScoreboardPattern.powderPattern.firstMatcher(event.scoreboard) { + ScoreboardPattern.powderPattern.firstMatcher(event.added) { val type = HotmAPI.PowderType.entries.firstOrNull { it.displayName == group("type") } ?: return val amount = group("amount").formatLong() val difference = amount - type.getCurrent() diff --git a/src/main/java/at/hannibal2/skyhanni/data/MiningAPI.kt b/src/main/java/at/hannibal2/skyhanni/data/MiningAPI.kt index fbe304098..0289d5e0e 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/MiningAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/MiningAPI.kt @@ -165,7 +165,7 @@ object MiningAPI { @SubscribeEvent fun onScoreboardChange(event: ScoreboardUpdateEvent) { - val newCold = coldPattern.firstMatcher(event.scoreboard) { + val newCold = coldPattern.firstMatcher(event.added) { group("cold").toInt().absoluteValue } ?: return diff --git a/src/main/java/at/hannibal2/skyhanni/data/PurseAPI.kt b/src/main/java/at/hannibal2/skyhanni/data/PurseAPI.kt index 0f029a1f2..6b080c394 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/PurseAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/PurseAPI.kt @@ -7,7 +7,7 @@ import at.hannibal2.skyhanni.events.ScoreboardUpdateEvent import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule import at.hannibal2.skyhanni.utils.NumberUtil.formatDouble import at.hannibal2.skyhanni.utils.NumberUtil.million -import at.hannibal2.skyhanni.utils.RegexUtils.matchFirst +import at.hannibal2.skyhanni.utils.RegexUtils.firstMatcher import at.hannibal2.skyhanni.utils.SimpleTimeMark import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern import net.minecraft.client.Minecraft @@ -19,7 +19,7 @@ object PurseAPI { private val patternGroup = RepoPattern.group("data.purse") val coinsPattern by patternGroup.pattern( "coins", - "(§.)*(Piggy|Purse): §6(?<coins>[\\d,.]+)( ?(§.)*\\([+-](?<earned>[\\d,.]+)\\)?|.*)?$", + "(?:§.)*(?:Piggy|Purse): §6(?<coins>[\\d,.]+)(?: ?(?:§.)*\\([+-](?<earned>[\\d,.]+)\\)?|.*)?$", ) val piggyPattern by patternGroup.pattern( "piggy", @@ -37,13 +37,13 @@ object PurseAPI { @SubscribeEvent fun onScoreboardChange(event: ScoreboardUpdateEvent) { - event.scoreboard.matchFirst(coinsPattern) { + coinsPattern.firstMatcher(event.added) { val newPurse = group("coins").formatDouble() val diff = newPurse - currentPurse if (diff == 0.0) return currentPurse = newPurse - PurseChangeEvent(diff, getCause(diff)).postAndCatch() + PurseChangeEvent(diff, currentPurse, getCause(diff)).postAndCatch() } } diff --git a/src/main/java/at/hannibal2/skyhanni/data/ScoreboardData.kt b/src/main/java/at/hannibal2/skyhanni/data/ScoreboardData.kt index 42de7a75b..7b40e6d6b 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/ScoreboardData.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/ScoreboardData.kt @@ -110,15 +110,16 @@ object ScoreboardData { val list = fetchScoreboardLines().reversed() val semiFormatted = list.map { cleanSB(it) } if (semiFormatted != sidebarLines) { - RawScoreboardUpdateEvent(semiFormatted).postAndCatch() sidebarLines = semiFormatted + RawScoreboardUpdateEvent(semiFormatted).postAndCatch() } sidebarLinesRaw = list val new = formatLines(list) if (new != sidebarLinesFormatted) { - ScoreboardUpdateEvent(new).postAndCatch() + val old = sidebarLinesFormatted sidebarLinesFormatted = new + ScoreboardUpdateEvent(old, new).postAndCatch() } } diff --git a/src/main/java/at/hannibal2/skyhanni/events/PurseChangeEvent.kt b/src/main/java/at/hannibal2/skyhanni/events/PurseChangeEvent.kt index d776fe32b..776a226d6 100644 --- a/src/main/java/at/hannibal2/skyhanni/events/PurseChangeEvent.kt +++ b/src/main/java/at/hannibal2/skyhanni/events/PurseChangeEvent.kt @@ -1,6 +1,6 @@ package at.hannibal2.skyhanni.events -class PurseChangeEvent(val coins: Double, val reason: PurseChangeCause) : LorenzEvent() +class PurseChangeEvent(val coins: Double, val purse: Double, val reason: PurseChangeCause) : LorenzEvent() enum class PurseChangeCause { GAIN_MOB_KILL, diff --git a/src/main/java/at/hannibal2/skyhanni/events/ScoreboardUpdateEvent.kt b/src/main/java/at/hannibal2/skyhanni/events/ScoreboardUpdateEvent.kt index 9480e8061..59fb9493c 100644 --- a/src/main/java/at/hannibal2/skyhanni/events/ScoreboardUpdateEvent.kt +++ b/src/main/java/at/hannibal2/skyhanni/events/ScoreboardUpdateEvent.kt @@ -1,3 +1,10 @@ package at.hannibal2.skyhanni.events -class ScoreboardUpdateEvent(val scoreboard: List<String>) : LorenzEvent() +class ScoreboardUpdateEvent( + val old: List<String>, + val scoreboard: List<String>, +) : LorenzEvent() { + + val added by lazy { scoreboard - old.toSet() } + val removed by lazy { old - scoreboard.toSet() } +} diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/pests/PestAPI.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/pests/PestAPI.kt index e239caeab..d6ab8873c 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/pests/PestAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/pests/PestAPI.kt @@ -223,7 +223,7 @@ object PestAPI { fun onScoreboardChange(event: ScoreboardUpdateEvent) { if (!GardenAPI.inGarden()) return if (!firstScoreboardCheck) return - checkScoreboardLines(event.scoreboard) + checkScoreboardLines(event.added) } @SubscribeEvent |
