aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/features
diff options
context:
space:
mode:
authorErymanthus[#5074] | (u/)RayDeeUx <51521765+RayDeeUx@users.noreply.github.com>2023-11-02 19:04:20 -0400
committerGitHub <noreply@github.com>2023-11-03 00:04:20 +0100
commitc14cfe950c8d0959e7c6b6fed7fd091b0cf826fe (patch)
treeeb1bec22bba4be6cdec82b9fa726b26aa1b83af4 /src/main/java/at/hannibal2/skyhanni/features
parent27f0b207793ddedf406fd56521d0ae0537279661 (diff)
downloadskyhanni-c14cfe950c8d0959e7c6b6fed7fd091b0cf826fe.tar.gz
skyhanni-c14cfe950c8d0959e7c6b6fed7fd091b0cf826fe.tar.bz2
skyhanni-c14cfe950c8d0959e7c6b6fed7fd091b0cf826fe.zip
Feature: The Great Spook Display Utilities and Notif Sound (#660)
Added support for showing the primal fear data from tab list as gui elements and play warning sound when the next primal fear can spawn. #660
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/event/spook/TheGreatSpook.kt58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/event/spook/TheGreatSpook.kt b/src/main/java/at/hannibal2/skyhanni/features/event/spook/TheGreatSpook.kt
new file mode 100644
index 000000000..f0334549e
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/features/event/spook/TheGreatSpook.kt
@@ -0,0 +1,58 @@
+package at.hannibal2.skyhanni.features.event.spook
+
+import at.hannibal2.skyhanni.SkyHanniMod
+import at.hannibal2.skyhanni.events.GuiRenderEvent
+import at.hannibal2.skyhanni.events.LorenzTickEvent
+import at.hannibal2.skyhanni.utils.LorenzUtils
+import at.hannibal2.skyhanni.utils.RenderUtils.renderString
+import at.hannibal2.skyhanni.utils.SoundUtils
+import at.hannibal2.skyhanni.utils.TabListData
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+
+class TheGreatSpook {
+// §r§cPrimal Fears§r§7: §r§6§lREADY!!
+ private val config get() = SkyHanniMod.feature.event.spook
+ private var displayTimer = ""
+ private var displayFearStat = ""
+ private var displayTimeLeft = ""
+ private var notificationSeconds = 0
+
+ @SubscribeEvent
+ fun onTick(event: LorenzTickEvent) {
+ if (isAllDisabled()) return
+ if (!event.repeatSeconds(1)) return
+
+ if (isTimerEnabled() || isNotificationEnabled()) displayTimer = checkTabList(" §r§cPrimal Fears§r§7: ")
+ if (isFearStatEnabled()) displayFearStat = checkTabList(" §r§5Fear: ")
+ if (isTimeLeftEnabled()) displayTimeLeft = checkTabList(" §r§dEnds In§r§7: ")
+ if (isNotificationEnabled()) {
+ if (displayTimer.endsWith("READY!!")) {
+ if (notificationSeconds > 0) {
+ SoundUtils.playBeepSound()
+ notificationSeconds--
+ }
+ } else if (displayTimer.isNotEmpty()) {
+ notificationSeconds = 5
+ }
+ }
+ }
+
+ private fun checkTabList(matchString: String): String {
+ return (TabListData.getTabList().find { it.contains(matchString) } ?: "").trim()
+ }
+ @SubscribeEvent
+ fun onRenderOverlay(event: GuiRenderEvent.GuiOverlayRenderEvent) {
+ if (isTimerEnabled()) config.positionTimer.renderString(displayTimer, posLabel = "Primal Fear Timer")
+ if (isFearStatEnabled()) config.positionFear.renderString(displayFearStat, posLabel = "Fear Stat Display")
+ if (isTimeLeftEnabled()) config.positionTimeLeft.renderString(displayTimeLeft, posLabel = "Time Left Display")
+ }
+
+ private fun isTimerEnabled(): Boolean = LorenzUtils.inSkyBlock && config.primalFearTimer
+
+ private fun isNotificationEnabled(): Boolean = LorenzUtils.inSkyBlock && config.primalFearNotification
+ private fun isFearStatEnabled(): Boolean = LorenzUtils.inSkyBlock && config.fearStatDisplay
+ private fun isTimeLeftEnabled(): Boolean = LorenzUtils.inSkyBlock && config.greatSpookTimeLeft
+
+ private fun isAllDisabled(): Boolean = !isTimeLeftEnabled() && !isTimerEnabled() && !isFearStatEnabled() &&
+ !isNotificationEnabled()
+}