summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/data
diff options
context:
space:
mode:
authorThunderblade73 <85900443+Thunderblade73@users.noreply.github.com>2024-01-20 10:06:38 +0100
committerGitHub <noreply@github.com>2024-01-20 10:06:38 +0100
commit2d11b0cfe4adf7b6535d91cbdf339e47898d925e (patch)
treeb52e4912cdd42fef593ddd040edd49fcd187b965 /src/main/java/at/hannibal2/skyhanni/data
parent1f950c47b505a47ca49be67b7f0d85c2c65ae1da (diff)
downloadskyhanni-2d11b0cfe4adf7b6535d91cbdf339e47898d925e.tar.gz
skyhanni-2d11b0cfe4adf7b6535d91cbdf339e47898d925e.tar.bz2
skyhanni-2d11b0cfe4adf7b6535d91cbdf339e47898d925e.zip
Feature: SkyblockXPInChat (#919)
Added Skyblock XP Chat. #919
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/data')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/ActionBarStatsData.kt70
1 files changed, 51 insertions, 19 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/data/ActionBarStatsData.kt b/src/main/java/at/hannibal2/skyhanni/data/ActionBarStatsData.kt
index cddf83d0b..e4f78142f 100644
--- a/src/main/java/at/hannibal2/skyhanni/data/ActionBarStatsData.kt
+++ b/src/main/java/at/hannibal2/skyhanni/data/ActionBarStatsData.kt
@@ -1,29 +1,61 @@
package at.hannibal2.skyhanni.data
+import at.hannibal2.skyhanni.events.ActionBarValueUpdate
import at.hannibal2.skyhanni.events.LorenzActionBarEvent
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher
+import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import org.intellij.lang.annotations.Language
-object ActionBarStatsData {
- // TODO USE SH-REPO
- private val patterns = mapOf(
- "health" to "§[c6](?<health>[\\d,]+)/[\\d,]+❤.*".toPattern(),
- "defense" to ".*§a(?<defense>[\\d,]+)§a❈.*".toPattern(),
- "mana" to ".*§b(?<mana>[\\d,]+)/[\\d,]+✎.*".toPattern(),
- "riftTime" to "§[a7](?<riftTime>[\\dms ]+)ф.*".toPattern(),
- )
-
- var groups = mutableMapOf("health" to "", "riftTime" to "", "defense" to "", "mana" to "")
-
- @SubscribeEvent
- fun onActionBar(event: LorenzActionBarEvent) {
- if (!LorenzUtils.inSkyBlock) return
-
- for ((groupName, pattern) in patterns) {
- pattern.matchMatcher(event.message) {
- groups[groupName] = group(groupName)
- }
+enum class ActionBarStatsData(@Language("RegExp") rawPattern: String) {
+ HEALTH(
+ // language=RegExp
+ "§[c6](?<health>[\\d,]+)/[\\d,]+❤.*"
+ ),
+ DEFENSE(
+ // language=RegExp
+ ".*§a(?<defense>[\\d,]+)§a❈.*"
+ ),
+ MANA(
+ // language=RegExp
+ ".*§b(?<mana>[\\d,]+)/[\\d,]+✎.*"
+ ),
+ RIFT_TIME(
+ // language=RegExp
+ "§[a7](?<riftTime>[\\dms ]+)ф.*"
+ ),
+ SKYBLOCK_XP(
+ // language=RegExp
+ ".*(§b\\+\\d+ SkyBlock XP §.\\([^()]+\\)§b \\(\\d+/\\d+\\)).*"
+ ),
+ ;
+
+ private val repoKey = name.replace("_", ".").lowercase()
+
+ internal val pattern by RepoPattern.pattern("actionbar.$repoKey", rawPattern)
+ var value: String = ""
+ private set
+
+ companion object {
+
+ init {
+ entries.forEach { it.pattern }
+ }
+
+ @SubscribeEvent
+ fun onActionBar(event: LorenzActionBarEvent) {
+ if (!LorenzUtils.inSkyBlock) return
+
+ entries.mapNotNull { data ->
+ data.pattern.matchMatcher(event.message) {
+ val newValue = group(1)
+ if (data.value != newValue) {
+ data.value = newValue
+ ActionBarValueUpdate(data)
+ } else null
+ }
+ }.forEach { it.postAndCatch() }
}
}
}