diff options
author | hannibal2 <24389977+hannibal002@users.noreply.github.com> | 2024-04-07 11:01:41 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-07 11:01:41 +0200 |
commit | f31e5aa4218b77e54f9438adc629c1c2bdd3e291 (patch) | |
tree | 4f7c6625b0bcc631fa755585ea1739affc143b64 | |
parent | 3cda068bcbb9b98a8e7704f5e14fffa535c079a1 (diff) | |
download | skyhanni-f31e5aa4218b77e54f9438adc629c1c2bdd3e291.tar.gz skyhanni-f31e5aa4218b77e54f9438adc629c1c2bdd3e291.tar.bz2 skyhanni-f31e5aa4218b77e54f9438adc629c1c2bdd3e291.zip |
Improvement: Allow receiving inquisitor information from all chat (#1316)
Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
3 files changed, 17 insertions, 6 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/event/diana/InquisitorSharingConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/event/diana/InquisitorSharingConfig.java index c719a7101..567d9c3cb 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/event/diana/InquisitorSharingConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/event/diana/InquisitorSharingConfig.java @@ -34,4 +34,9 @@ public class InquisitorSharingConfig { @ConfigOption(name = "Show Despawn Time", desc = "Show the time until the shared Inquisitor will despawn.") @ConfigEditorBoolean public boolean showDespawnTime = true; + + @Expose + @ConfigOption(name = "Read Global Chat", desc = "Also read the global chat for detecting inquistiors, not only party chat.") + @ConfigEditorBoolean + public boolean globalChat = false; } diff --git a/src/main/java/at/hannibal2/skyhanni/features/event/diana/InquisitorWaypointShare.kt b/src/main/java/at/hannibal2/skyhanni/features/event/diana/InquisitorWaypointShare.kt index 31de087cd..42a4c8850 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/event/diana/InquisitorWaypointShare.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/event/diana/InquisitorWaypointShare.kt @@ -13,6 +13,7 @@ import at.hannibal2.skyhanni.utils.EntityUtils import at.hannibal2.skyhanni.utils.KeyboardManager import at.hannibal2.skyhanni.utils.LorenzLogger import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.utils.LorenzUtils.hasGroup import at.hannibal2.skyhanni.utils.LorenzVec import at.hannibal2.skyhanni.utils.SimpleTimeMark import at.hannibal2.skyhanni.utils.SoundUtils @@ -34,12 +35,13 @@ object InquisitorWaypointShare { private val config get() = SkyHanniMod.feature.event.diana.inquisitorSharing private val patternGroup = RepoPattern.group("diana.waypoints") + /** * REGEX-TEST: §9Party §8> User Name§f: §rx: 2.3, y: 4.5, z: 6.7 */ private val partyOnlyCoordsPattern by patternGroup.pattern( "party.onlycoords", - "§9Party §8> (?<playerName>.+)§f: §rx: (?<x>[^ ]+),? y: (?<y>[^ ]+),? z: (?<z>[^ ]+)" + "(?<party>§9Party §8> )?(?<playerName>.+)§f: §rx: (?<x>[^ ]+),? y: (?<y>[^ ]+),? z: (?<z>[^ ]+)" ) //Support for https://www.chattriggers.com/modules/v/inquisitorchecker @@ -48,11 +50,11 @@ object InquisitorWaypointShare { */ private val partyInquisitorCheckerPattern by patternGroup.pattern( "party.inquisitorchecker", - "§9Party §8> (?<playerName>.+)§f: §rA MINOS INQUISITOR has spawned near \\[(?<area>.*)] at Coords (?<x>[^ ]+) (?<y>[^ ]+) (?<z>[^ ]+)" + "(?<party>§9Party §8> )?(?<playerName>.+)§f: §rA MINOS INQUISITOR has spawned near \\[(?<area>.*)] at Coords (?<x>[^ ]+) (?<y>[^ ]+) (?<z>[^ ]+)" ) private val diedPattern by patternGroup.pattern( "died", - "§9Party §8> (?<playerName>.*)§f: §rInquisitor dead!" + "(?<party>§9Party §8> )?(?<playerName>.*)§f: §rInquisitor dead!" ) private var time = 0L @@ -258,6 +260,7 @@ object InquisitorWaypointShare { } } diedPattern.matchMatcher(message) { + if (block()) return val rawName = group("playerName") val name = rawName.cleanPlayerName() val displayName = rawName.cleanPlayerName(displayName = true) @@ -267,7 +270,10 @@ object InquisitorWaypointShare { } } + private fun Matcher.block(): Boolean = !hasGroup("party") && !config.globalChat + private fun Matcher.detectFromChat(): Boolean { + if (block()) return false val rawName = group("playerName") val x = group("x").trim().toDoubleOrNull() ?: return false val y = group("y").trim().toDoubleOrNull() ?: return false diff --git a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt index c45bcae0e..df622503a 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt @@ -356,9 +356,9 @@ object LorenzUtils { * Get the group, otherwise, return null * @param groupName The group name in the pattern */ - fun Matcher.groupOrNull(groupName: String): String? { - return runCatching { this.group(groupName) }.getOrNull() - } + fun Matcher.groupOrNull(groupName: String): String? = runCatching { this.group(groupName) }.getOrNull() + + fun Matcher.hasGroup(groupName: String): Boolean = groupOrNull(groupName) != null fun inAdvancedMiningIsland() = IslandType.DWARVEN_MINES.isInIsland() || IslandType.CRYSTAL_HOLLOWS.isInIsland() || IslandType.MINESHAFT.isInIsland() |