aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEmpa <42304516+ItsEmpa@users.noreply.github.com>2024-04-03 21:25:54 +0200
committerGitHub <noreply@github.com>2024-04-03 21:25:54 +0200
commitb51b07e0d308289a050356e0106055eed38656b3 (patch)
tree74eba9e116824f56482ac890494d81b954f0c69b /src
parentad5879d319b236ddec744978dfaebebf91135209 (diff)
downloadskyhanni-b51b07e0d308289a050356e0106055eed38656b3.tar.gz
skyhanni-b51b07e0d308289a050356e0106055eed38656b3.tar.bz2
skyhanni-b51b07e0d308289a050356e0106055eed38656b3.zip
Backend: KuudraAPI (#1209)
Co-authored-by: Cal <cwolfson58@gmail.com> Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
Diffstat (limited to 'src')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/events/KuudraCompleteEvent.kt3
-rw-r--r--src/main/java/at/hannibal2/skyhanni/events/KuudraEnterEvent.kt3
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/nether/KuudraAPI.kt67
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/CrimsonIsleReputationHelper.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailykuudra/KuudraTier.kt15
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/DailyQuestHelper.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/quest/KuudraQuest.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/kuudra/DailyKuudraBossHelper.kt (renamed from src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailykuudra/DailyKuudraBossHelper.kt)36
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt3
10 files changed, 93 insertions, 48 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt
index b98feae29..4a02294ca 100644
--- a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt
+++ b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt
@@ -322,6 +322,7 @@ import at.hannibal2.skyhanni.features.misc.trevor.TrevorSolver
import at.hannibal2.skyhanni.features.misc.trevor.TrevorTracker
import at.hannibal2.skyhanni.features.misc.update.UpdateManager
import at.hannibal2.skyhanni.features.misc.visualwords.ModifyVisualWords
+import at.hannibal2.skyhanni.features.nether.KuudraAPI
import at.hannibal2.skyhanni.features.nether.PabloHelper
import at.hannibal2.skyhanni.features.nether.SulphurSkitterBox
import at.hannibal2.skyhanni.features.nether.VolcanoExplosivityDisplay
@@ -490,7 +491,6 @@ class SkyHanniMod {
loadModule(TrackerManager)
loadModule(ScoreboardPattern)
loadModule(UtilsPatterns)
- loadModule(PetAPI)
loadModule(BossbarData)
loadModule(EntityUtils)
loadModule(ChatUtils)
@@ -520,6 +520,8 @@ class SkyHanniMod {
loadModule(MayorAPI)
loadModule(SkillAPI)
loadModule(VisitorAPI)
+ loadModule(KuudraAPI)
+ loadModule(PetAPI)
loadModule(IsFishingDetection)
loadModule(LorenzUtils)
loadModule(NEUItems)
diff --git a/src/main/java/at/hannibal2/skyhanni/events/KuudraCompleteEvent.kt b/src/main/java/at/hannibal2/skyhanni/events/KuudraCompleteEvent.kt
new file mode 100644
index 000000000..98b207f49
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/events/KuudraCompleteEvent.kt
@@ -0,0 +1,3 @@
+package at.hannibal2.skyhanni.events
+
+class KuudraCompleteEvent(val kuudraTier: Int) : LorenzEvent()
diff --git a/src/main/java/at/hannibal2/skyhanni/events/KuudraEnterEvent.kt b/src/main/java/at/hannibal2/skyhanni/events/KuudraEnterEvent.kt
new file mode 100644
index 000000000..8482058a7
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/events/KuudraEnterEvent.kt
@@ -0,0 +1,3 @@
+package at.hannibal2.skyhanni.events
+
+class KuudraEnterEvent(val kuudraTier: Int) : LorenzEvent()
diff --git a/src/main/java/at/hannibal2/skyhanni/features/nether/KuudraAPI.kt b/src/main/java/at/hannibal2/skyhanni/features/nether/KuudraAPI.kt
new file mode 100644
index 000000000..8bbaa35c9
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/features/nether/KuudraAPI.kt
@@ -0,0 +1,67 @@
+package at.hannibal2.skyhanni.features.nether
+
+import at.hannibal2.skyhanni.data.ScoreboardData
+import at.hannibal2.skyhanni.events.KuudraCompleteEvent
+import at.hannibal2.skyhanni.events.KuudraEnterEvent
+import at.hannibal2.skyhanni.events.LorenzChatEvent
+import at.hannibal2.skyhanni.events.LorenzTickEvent
+import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
+import at.hannibal2.skyhanni.utils.LorenzVec
+import at.hannibal2.skyhanni.utils.NEUInternalName
+import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher
+import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+
+object KuudraAPI {
+
+ private val patternGroup = RepoPattern.group("data.kuudra")
+
+ private val tierPattern by patternGroup.pattern(
+ "scoreboard.tier",
+ " §7⏣ §cKuudra's Hollow §8\\(T(?<tier>.*)\\)"
+ )
+ private val completePattern by patternGroup.pattern(
+ "chat.complete",
+ "§.\\s*(?:§.)*KUUDRA DOWN!"
+ )
+
+ var kuudraTier: Int? = null
+ fun inKuudra() = kuudraTier != null
+
+ @SubscribeEvent
+ fun onTick(event: LorenzTickEvent) {
+ if (kuudraTier == null) {
+ for (line in ScoreboardData.sidebarLinesFormatted) {
+ tierPattern.matchMatcher(line) {
+ val tier = group("tier").toInt()
+ kuudraTier = tier
+ KuudraEnterEvent(tier).postAndCatch()
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ fun onWorldChange(event: LorenzWorldChangeEvent) {
+ kuudraTier = null
+ }
+
+ @SubscribeEvent
+ fun onChat(event: LorenzChatEvent) {
+ val message = event.message
+ completePattern.matchMatcher(message) {
+ val tier = kuudraTier ?: return
+ KuudraCompleteEvent(tier).postAndCatch()
+ }
+ }
+
+ class KuudraTier(
+ val name: String,
+ val displayItem: NEUInternalName,
+ val location: LorenzVec?,
+ val tierNumber: Int,
+ var doneToday: Boolean = false,
+ ) {
+ fun getDisplayName() = "Tier $tierNumber ($name)"
+ }
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/CrimsonIsleReputationHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/CrimsonIsleReputationHelper.kt
index 9d969fae2..73b45aa94 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/CrimsonIsleReputationHelper.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/CrimsonIsleReputationHelper.kt
@@ -10,9 +10,9 @@ import at.hannibal2.skyhanni.events.ConfigLoadEvent
import at.hannibal2.skyhanni.events.GuiRenderEvent
import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.events.RepositoryReloadEvent
-import at.hannibal2.skyhanni.features.nether.reputationhelper.dailykuudra.DailyKuudraBossHelper
import at.hannibal2.skyhanni.features.nether.reputationhelper.dailyquest.DailyQuestHelper
import at.hannibal2.skyhanni.features.nether.reputationhelper.dailyquest.QuestLoader
+import at.hannibal2.skyhanni.features.nether.reputationhelper.kuudra.DailyKuudraBossHelper
import at.hannibal2.skyhanni.features.nether.reputationhelper.miniboss.DailyMiniBossHelper
import at.hannibal2.skyhanni.utils.ChatUtils
import at.hannibal2.skyhanni.utils.CollectionUtils.addAsSingletonList
diff --git a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailykuudra/KuudraTier.kt b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailykuudra/KuudraTier.kt
deleted file mode 100644
index 85889f94b..000000000
--- a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailykuudra/KuudraTier.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package at.hannibal2.skyhanni.features.nether.reputationhelper.dailykuudra
-
-import at.hannibal2.skyhanni.utils.LorenzVec
-import at.hannibal2.skyhanni.utils.NEUInternalName
-
-class KuudraTier(
- val name: String,
- val displayItem: NEUInternalName,
- val location: LorenzVec?,
- val tierNumber: Int,
- var doneToday: Boolean = false,
-) {
-
- fun getDisplayName() = "Tier $tierNumber ($name)"
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/DailyQuestHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/DailyQuestHelper.kt
index 580fdbc56..ae6850e78 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/DailyQuestHelper.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/DailyQuestHelper.kt
@@ -10,9 +10,9 @@ import at.hannibal2.skyhanni.events.LorenzChatEvent
import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent
import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.events.TabListUpdateEvent
+import at.hannibal2.skyhanni.features.nether.KuudraAPI
import at.hannibal2.skyhanni.features.nether.reputationhelper.CrimsonIsleReputationHelper
import at.hannibal2.skyhanni.features.nether.reputationhelper.FactionType
-import at.hannibal2.skyhanni.features.nether.reputationhelper.dailykuudra.KuudraTier
import at.hannibal2.skyhanni.features.nether.reputationhelper.dailyquest.quest.DojoQuest
import at.hannibal2.skyhanni.features.nether.reputationhelper.dailyquest.quest.FetchQuest
import at.hannibal2.skyhanni.features.nether.reputationhelper.dailyquest.quest.KuudraQuest
@@ -263,7 +263,7 @@ class DailyQuestHelper(val reputationHelper: CrimsonIsleReputationHelper) {
}
}
- fun finishKuudra(kuudraTier: KuudraTier) {
+ fun finishKuudra(kuudraTier: KuudraAPI.KuudraTier) {
val kuudraQuest = getQuest<KuudraQuest>() ?: return
// TODO make inline method for this two lines
if (kuudraQuest.kuudraTier == kuudraTier && kuudraQuest.state == QuestState.ACCEPTED) {
diff --git a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/quest/KuudraQuest.kt b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/quest/KuudraQuest.kt
index 096b46267..aadb9f110 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/quest/KuudraQuest.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/quest/KuudraQuest.kt
@@ -1,6 +1,6 @@
package at.hannibal2.skyhanni.features.nether.reputationhelper.dailyquest.quest
-import at.hannibal2.skyhanni.features.nether.reputationhelper.dailykuudra.KuudraTier
+import at.hannibal2.skyhanni.features.nether.KuudraAPI.KuudraTier
class KuudraQuest(val kuudraTier: KuudraTier, state: QuestState) :
Quest(
@@ -10,4 +10,4 @@ class KuudraQuest(val kuudraTier: KuudraTier, state: QuestState) :
"Kill Kuudra ${kuudraTier.name} Tier",
state,
displayName = kuudraTier.getDisplayName()
- ) \ No newline at end of file
+ )
diff --git a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailykuudra/DailyKuudraBossHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/kuudra/DailyKuudraBossHelper.kt
index 5c7208c62..265f59471 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailykuudra/DailyKuudraBossHelper.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/kuudra/DailyKuudraBossHelper.kt
@@ -1,18 +1,17 @@
-package at.hannibal2.skyhanni.features.nether.reputationhelper.dailykuudra
+package at.hannibal2.skyhanni.features.nether.reputationhelper.kuudra
import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.config.storage.ProfileSpecificStorage
import at.hannibal2.skyhanni.data.IslandType
-import at.hannibal2.skyhanni.data.ScoreboardData
import at.hannibal2.skyhanni.data.jsonobjects.repo.CrimsonIsleReputationJson.ReputationQuest
-import at.hannibal2.skyhanni.events.LorenzChatEvent
+import at.hannibal2.skyhanni.events.KuudraCompleteEvent
import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent
+import at.hannibal2.skyhanni.features.nether.KuudraAPI
import at.hannibal2.skyhanni.features.nether.reputationhelper.CrimsonIsleReputationHelper
import at.hannibal2.skyhanni.test.GriffinUtils.drawWaypointFilled
import at.hannibal2.skyhanni.utils.ChatUtils
import at.hannibal2.skyhanni.utils.CollectionUtils.addAsSingletonList
import at.hannibal2.skyhanni.utils.LorenzColor
-import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.LorenzUtils.isInIsland
import at.hannibal2.skyhanni.utils.LorenzVec
import at.hannibal2.skyhanni.utils.NEUItems.getItemStack
@@ -21,7 +20,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class DailyKuudraBossHelper(private val reputationHelper: CrimsonIsleReputationHelper) {
- val kuudraTiers = mutableListOf<KuudraTier>()
+ val kuudraTiers = mutableListOf<KuudraAPI.KuudraTier>()
private var kuudraLocation: LorenzVec? = null
private var allKuudraDone = true
@@ -42,25 +41,10 @@ class DailyKuudraBossHelper(private val reputationHelper: CrimsonIsleReputationH
}
@SubscribeEvent
- fun onChat(event: LorenzChatEvent) {
- if (!LorenzUtils.inKuudraFight) return
- if (!config.enabled) return
-
- val message = event.message
- if (!message.contains("KUUDRA DOWN!") || message.contains(":")) return
-
- for (line in ScoreboardData.sidebarLines) {
- if (line.contains("Kuudra's") && line.contains("Hollow") && line.contains("(")) {
- val tier = line.substringAfter("(T").substring(0, 1).toInt()
- val kuudraTier = getByTier(tier)!!
- finished(kuudraTier)
- return
- }
- }
- }
-
- private fun finished(kuudraTier: KuudraTier) {
- ChatUtils.debug("Detected kuudra tier done: $kuudraTier")
+ fun onKuudraDone(event: KuudraCompleteEvent) {
+ val tier = event.kuudraTier
+ val kuudraTier = getByTier(tier) ?: return
+ ChatUtils.debug("Detected kuudra tier done: ${kuudraTier.getDisplayName()}")
reputationHelper.questHelper.finishKuudra(kuudraTier)
kuudraTier.doneToday = true
updateAllKuudraDone()
@@ -109,7 +93,7 @@ class DailyKuudraBossHelper(private val reputationHelper: CrimsonIsleReputationH
if (location != null) {
kuudraLocation = location
}
- kuudraTiers.add(KuudraTier(displayName, displayItem, location, tier))
+ kuudraTiers.add(KuudraAPI.KuudraTier(displayName, displayItem, location, tier))
tier++
}
@@ -118,7 +102,7 @@ class DailyKuudraBossHelper(private val reputationHelper: CrimsonIsleReputationH
fun loadData(storage: ProfileSpecificStorage.CrimsonIsleStorage) {
if (kuudraTiers.isEmpty()) return
for (name in storage.kuudraTiersDone) {
- getByDisplayName(name)!!.doneToday = true
+ getByDisplayName(name)?.doneToday = true
}
updateAllKuudraDone()
}
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt
index 048100f71..a9b72f72c 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt
@@ -8,6 +8,7 @@ import at.hannibal2.skyhanni.data.TitleManager
import at.hannibal2.skyhanni.events.GuiContainerEvent
import at.hannibal2.skyhanni.features.dungeon.DungeonAPI
import at.hannibal2.skyhanni.features.misc.visualwords.ModifyVisualWords
+import at.hannibal2.skyhanni.features.nether.KuudraAPI
import at.hannibal2.skyhanni.mixins.transformers.AccessorGuiEditSign
import at.hannibal2.skyhanni.test.TestBingo
import at.hannibal2.skyhanni.utils.ChatUtils.lastButtonClicked
@@ -58,7 +59,7 @@ object LorenzUtils {
val skyBlockArea get() = if (inSkyBlock) HypixelData.skyBlockArea else "?"
- val inKuudraFight get() = IslandType.KUUDRA_ARENA.isInIsland()
+ val inKuudraFight get() = inSkyBlock && KuudraAPI.inKuudra()
val noTradeMode get() = HypixelData.noTrade