Skip to content

Commit 96230a5

Browse files
authored
Fix regex to not fuck up with mob types and not recreate the regex on every call (#13)
* Fix regex to not fuck up with mob types * silly * Update SkyblockMobDetector.kt * Fix and ensure that it works
1 parent 605c2ef commit 96230a5

1 file changed

Lines changed: 13 additions & 18 deletions

File tree

src/main/java/mrfast/sbt/apis/SkyblockMobDetector.kt

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,15 @@ import net.minecraftforge.common.MinecraftForge
2121
import net.minecraftforge.event.entity.EntityJoinWorldEvent
2222
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
2323
import net.minecraftforge.fml.common.gameevent.TickEvent
24-
import java.util.regex.Matcher
25-
import java.util.regex.Pattern
2624

2725
@SkyblockTweaks.EventComponent
2826
object SkyblockMobDetector {
2927
private val skyblockMobHashMap = HashMap<Entity, SkyblockMob>()
30-
28+
private val normalMobRegex = "\\[Lv\\d+k?] (?:[༕ൠ☮⊙Ž✰♨⚂❆☽✿☠⸕⚓♆♣⚙\uFE0E♃⛨✈⸙] )?(.+?) [\\d.,]+[MkB]?/[\\d.,]+[MkB]?❤".toRegex()
29+
private val slayerMobRegex = "(?<=☠\\s)[A-Za-z]+\\s[A-Za-z]+(?:\\s[IVX]+)?".toRegex()
30+
private val dungeonMobRegex = "(?:[༕ൠ☮⊙Ž✰♨⚂❆☽✿☠⸕⚓♆♣⚙︎♃⛨✈⸙] )?✯?\\s*(?:Flaming|Super|Healing|Boomer|Golden|Speedy|Fortified|Stormy|Healthy)?\\s*([\\w\\s]+?)\\s*([\\d.,]+[mkM?]*|[?]+)❤".toRegex()
31+
private val regexPatterns = listOf(normalMobRegex, slayerMobRegex, dungeonMobRegex)
32+
3133
class SkyblockMob(val mobNameEntity: Entity, val skyblockMob: Entity) {
3234
var skyblockMobId: String? = null
3335
}
@@ -114,20 +116,13 @@ object SkyblockMobDetector {
114116
private fun updateMobData(sbMob: SkyblockMob) {
115117
val rawMobName = sbMob.mobNameEntity.displayName.unformattedText.clean().replace(",", "")
116118

117-
val normalMobRegex = "\\[Lv(?:\\d+k?)] (.+?) [\\d.,]+[MkB]?/[\\d.,]+[MkB]?❤"
118-
val slayerMobRegex = "(?<=☠\\s)[A-Za-z]+\\s[A-Za-z]+(?:\\s[IVX]+)?"
119-
val dungeonMobRegex = "✯?\\s*(?:Flaming|Super|Healing|Boomer|Golden|Speedy|Fortified|Stormy|Healthy)?\\s*([\\w\\s]+?)\\s*([\\d.,]+[mkM?]*|[?]+)❤"
120-
121-
var pattern: Pattern
122-
var matcher: Matcher? = null
119+
var matcher: MatchResult? = null
123120

124121
// Iterate through the regex patterns
125-
val regexPatterns = listOf(normalMobRegex, slayerMobRegex, dungeonMobRegex)
126-
var regexBeingUsed: String? = null
122+
var regexBeingUsed: Regex? = null
127123
for (regex in regexPatterns) {
128-
pattern = Pattern.compile(regex)
129-
matcher = pattern.matcher(rawMobName)
130-
if (matcher.find()) {
124+
matcher = regex.find(rawMobName)
125+
if (matcher != null) {
131126
regexBeingUsed = regex
132127
break
133128
}
@@ -136,12 +131,12 @@ object SkyblockMobDetector {
136131
if (regexBeingUsed != null) {
137132
matcher = matcher ?: return
138133
when (regexBeingUsed) {
139-
normalMobRegex -> sbMob.skyblockMobId = matcher.group(1)
140-
slayerMobRegex -> sbMob.skyblockMobId = matcher.group() + " Slayer"
134+
normalMobRegex -> sbMob.skyblockMobId = matcher.groupValues[1]
135+
slayerMobRegex -> sbMob.skyblockMobId = matcher.value + " Slayer"
141136
dungeonMobRegex -> {
142-
sbMob.skyblockMobId = matcher.group(1)
137+
sbMob.skyblockMobId = matcher.groupValues[1]
143138
if (rawMobName.startsWith("")) {
144-
sbMob.skyblockMobId = matcher.group(1) + " Pest"
139+
sbMob.skyblockMobId = matcher.groupValues[1] + " Pest"
145140
}
146141
}
147142
}

0 commit comments

Comments
 (0)