blob: 3c962ad0ac057d1caf7da3654e82861fa7240ff2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
package at.hannibal2.skyhanni.data
import at.hannibal2.skyhanni.events.ActionBarUpdateEvent
import at.hannibal2.skyhanni.events.ActionBarValueUpdateEvent
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
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 onActionBarUpdate(event: ActionBarUpdateEvent) {
if (!LorenzUtils.inSkyBlock) return
entries.mapNotNull { data ->
data.pattern.matchMatcher(event.actionBar) {
val newValue = group(1)
if (data.value != newValue) {
data.value = newValue
ActionBarValueUpdateEvent(data)
} else null
}
}.forEach { it.postAndCatch() }
}
}
}
|