blob: 8a0670e98d8f4b9287dc73f5d483998c01619a7d (
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
package at.hannibal2.skyhanni.features.chat
import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.events.LorenzChatEvent
import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.LorenzUtils.colorCodeToRarity
import at.hannibal2.skyhanni.utils.RegexUtils.matchMatchers
import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern
import net.minecraft.util.ChatComponentText
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
@SkyHanniModule
object RareDropMessages {
private val chatGroup = RepoPattern.group("pet.chatdrop")
/**
* REGEX-TEST: §6§lPET DROP! §r§5Baby Yeti §r§b(+§r§b168% §r§b✯ Magic Find§r§b)
* REGEX-TEST: §6§lPET DROP! §r§5Slug §6(§6+1300☘)
*/
private val petDroppedPattern by chatGroup.pattern(
"pet.petdroppedmessage",
"(?<start>(?:§.)*PET DROP! )(?:§.)*§(?<rarityColor>.)(?<petName>[^§(.]+)(?<end> .*)"
)
/**
* REGEX-TEST: §5§lGREAT CATCH! §r§bYou found a §r§7[Lvl 1] §r§aGuardian§r§b.
*/
private val petFishedPattern by chatGroup.pattern(
"pet.petfishedmessage",
"(?<start>(?:§.)*GREAT CATCH! (?:§.)*You found a (?:§.)*\\[Lvl 1] )(?:§.)*§(?<rarityColor>.)(?<petName>[^§(.]+)(?<end>.*)"
)
/**
* REGEX-TEST: §aYou claimed a §5Tarantula Pet§a! §r§aYou can manage your Pets in the §r§fPets Menu§r§a in your §r§fSkyBlock Menu§r§a.
*/
private val petClaimedPattern by chatGroup.pattern(
"pet.petclaimedmessage",
"(?<start>(?:§.)*You claimed a )(?:§.)*§(?<rarityColor>.)(?<petName>[^§(.]+)(?<end>.*You can manage your Pets.*)"
)
/**
* REGEX-TEST: §b[MVP§r§c+§r§b] Empa_§r§f §r§ehas obtained §r§a§r§7[Lvl 1] §r§6Bal§r§e!
*/
private val petObtainedPattern by chatGroup.pattern(
"pet.petobtainedmessage",
"(?<start>.*has obtained (?:§.)*\\[Lvl 1] )(?:§.)*§(?<rarityColor>.)(?<petName>[^§(.]+)(?<end>.*)"
)
/**
* REGEX-TEST: §e[NPC] Oringo§f: §b✆ §f§r§8• §fBlue Whale Pet
* REGEX-TEST: §e[NPC] Oringo§f: §b✆ §f§r§8• §5Giraffe Pet
*/
private val oringoPattern by chatGroup.pattern(
"pet.oringopattern",
"(?<start>§e\\[NPC] Oringo§f: §b✆ §f§r§8• )§(?<rarityColor>.)(?<petName>[^§(.]+)(?<end> Pet)"
)
private val patterns = listOf(
petDroppedPattern, petFishedPattern, petClaimedPattern, petObtainedPattern, oringoPattern
)
private val config get() = SkyHanniMod.feature.chat.petRarityDropMessage
@SubscribeEvent
fun onChat(event: LorenzChatEvent) {
if (!LorenzUtils.inSkyBlock) return
if (!config) return
patterns.matchMatchers(event.message) {
var start = group("start")
val rarityColor = group("rarityColor")
val rarityName = colorCodeToRarity(rarityColor.first()).uppercase()
val petName = group("petName")
val end = group("end")
if (start.endsWith("a ") && rarityName.matches("(?i)[aeiou].*".toRegex()))
start = start.replace(" $".toRegex(), "n ")
event.chatComponent = ChatComponentText(
"$start§$rarityColor§l$rarityName §$rarityColor$petName$end"
)
}
}
}
|