aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonCopilot.kt70
1 files changed, 35 insertions, 35 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonCopilot.kt b/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonCopilot.kt
index 8119535fd..f776eb155 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonCopilot.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/dungeon/DungeonCopilot.kt
@@ -11,12 +11,23 @@ import at.hannibal2.skyhanni.events.LorenzChatEvent
import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.RenderUtils.renderString
-import at.hannibal2.skyhanni.utils.StringUtils.matchRegex
+import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher
import net.minecraft.entity.item.EntityArmorStand
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class DungeonCopilot {
+ private val config get() = SkyHanniMod.feature.dungeon.dungeonCopilot
+
+ private val countdownPattern =
+ "(.*) has started the dungeon countdown. The dungeon will begin in 1 minute.".toPattern()
+ private val keyPatternsList = listOf(
+ "§eA §r§a§r§[6c]§r§[8c](?<key>Wither|Blood) Key§r§e was picked up!".toPattern(),
+ "(.*) §r§ehas obtained §r§a§r§[6c]§r§[8c](?<key>Wither|Blood) Key§r§e!".toPattern()
+ )
+ private val witherDoorPattern = "(.*) opened a §r§8§lWITHER §r§adoor!".toPattern()
+ private val bloodDoorPattern = "§cThe §r§c§lBLOOD DOOR§r§c has been opened!".toPattern()
+
private var nextStep = ""
private var searchForKey = false
@@ -24,60 +35,49 @@ class DungeonCopilot {
fun onChatMessage(event: LorenzChatEvent) {
if (!isEnabled()) return
- val message = event.message
+ val blockReason = copilot(event.message)
+ if (blockReason != "") event.blockedReason = blockReason
+ }
- if (message.matchRegex("(.*) has started the dungeon countdown. The dungeon will begin in 1 minute.")) {
+ private fun copilot(message: String): String {
+ countdownPattern.matchMatcher(message) {
changeNextStep("Ready up")
}
- if (message.endsWith("§a is now ready!")) {
- var name = LorenzUtils.getPlayerName()
- if (message.contains(name)) {
- changeNextStep("Wait for the dungeon to start!")
- }
+
+ if (message.endsWith("§a is now ready!") && message.contains(LorenzUtils.getPlayerName())) {
+ changeNextStep("Wait for the dungeon to start!")
}
+ // Key Pickup
var foundKeyOrDoor = false
-
- //key pickup
- if (message.matchRegex("(.*) §r§ehas obtained §r§a§r§6§r§8Wither Key§r§e!") ||
- message == "§eA §r§a§r§6§r§8Wither Key§r§e was picked up!"
- ) {
- changeNextStep("Open Wither Door")
- foundKeyOrDoor = true
-
+ keyPatternsList.any {
+ it.matchMatcher(message) {
+ val key = group("key")
+ changeNextStep("Open $key Door")
+ foundKeyOrDoor = true
+ } != null
}
- if (message.matchRegex("(.*) §r§ehas obtained §r§a§r§c§r§cBlood Key§r§e!") ||
- message == "§eA §r§a§r§c§r§cBlood Key§r§e was picked up!"
- ) {
- changeNextStep("Open Blood Door")
- foundKeyOrDoor = true
- }
-
- if (message.matchRegex("(.*) opened a §r§8§lWITHER §r§adoor!")) {
+ witherDoorPattern.matchMatcher(message) {
changeNextStep("Clear next room")
searchForKey = true
foundKeyOrDoor = true
}
- if (message == "§cThe §r§c§lBLOOD DOOR§r§c has been opened!") {
+ bloodDoorPattern.matchMatcher(message) {
changeNextStep("Wait for Blood Room to fully spawn")
foundKeyOrDoor = true
}
- if (foundKeyOrDoor && SkyHanniMod.feature.dungeon.messageFilter.keysAndDoors) {
- event.blockedReason = "dungeon_keys_and_doors"
- }
-
+ if (foundKeyOrDoor && SkyHanniMod.feature.dungeon.messageFilter.keysAndDoors) return "dungeon_keys_and_doors"
- if (message == "§c[BOSS] The Watcher§r§f: That will be enough for now.") {
- changeNextStep("Clear Blood Room")
- }
+ if (message == "§c[BOSS] The Watcher§r§f: That will be enough for now.") changeNextStep("Clear Blood Room")
if (message == "§c[BOSS] The Watcher§r§f: You have proven yourself. You may pass.") {
- event.blockedReason = "dungeon copilot"
changeNextStep("Enter Boss Room")
+ return "dungeon_copilot"
}
+ return ""
}
private fun changeNextStep(step: String) {
@@ -126,14 +126,14 @@ class DungeonCopilot {
}
private fun isEnabled(): Boolean {
- return LorenzUtils.inDungeons && SkyHanniMod.feature.dungeon.dungeonCopilot.enabled
+ return LorenzUtils.inDungeons && config.enabled
}
@SubscribeEvent
fun onRenderOverlay(event: GuiRenderEvent.GuiOverlayRenderEvent) {
if (!isEnabled()) return
- SkyHanniMod.feature.dungeon.dungeonCopilot.pos.renderString(nextStep, posLabel = "Dungeon Copilot")
+ config.pos.renderString(nextStep, posLabel = "Dungeon Copilot")
}
@SubscribeEvent