@@ -21,13 +21,15 @@ import net.minecraftforge.common.MinecraftForge
2121import net.minecraftforge.event.entity.EntityJoinWorldEvent
2222import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
2323import net.minecraftforge.fml.common.gameevent.TickEvent
24- import java.util.regex.Matcher
25- import java.util.regex.Pattern
2624
2725@SkyblockTweaks.EventComponent
2826object 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