aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/features/garden
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-02-18 22:54:58 +0100
committerhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-02-18 22:54:58 +0100
commitcfa9dff0c90be83ab219db10ef08abb8c6aabca0 (patch)
tree9a726d9e8cb937c5f9f867f8f78f5aaa27e002da /src/main/java/at/hannibal2/skyhanni/features/garden
parent8e57a5b1a7ea98a086fae0883e42cd34558b0a58 (diff)
downloadskyhanni-cfa9dff0c90be83ab219db10ef08abb8c6aabca0.tar.gz
skyhanni-cfa9dff0c90be83ab219db10ef08abb8c6aabca0.tar.bz2
skyhanni-cfa9dff0c90be83ab219db10ef08abb8c6aabca0.zip
Added Visitor Timer.
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features/garden')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorTimer.kt64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorTimer.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorTimer.kt
new file mode 100644
index 000000000..3125cfc36
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorTimer.kt
@@ -0,0 +1,64 @@
+package at.hannibal2.skyhanni.features.garden
+
+import at.hannibal2.skyhanni.SkyHanniMod
+import at.hannibal2.skyhanni.data.IslandType
+import at.hannibal2.skyhanni.events.TabListUpdateEvent
+import at.hannibal2.skyhanni.utils.LorenzUtils
+import at.hannibal2.skyhanni.utils.RenderUtils.renderString
+import at.hannibal2.skyhanni.utils.TimeUtils
+import net.minecraftforge.client.event.RenderGameOverlayEvent
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import java.util.regex.Pattern
+
+class GardenVisitorTimer {
+ private val patternNextVisitor = Pattern.compile(" Next Visitor: §r§b(.*)")
+ private val patternVisitors = Pattern.compile("§b§lVisitors: §r§f\\((\\d)\\)")
+ private var render = ""
+ private var lastMillis = 0L
+
+ @SubscribeEvent
+ fun onTick(event: TabListUpdateEvent) {
+ if (!isEnabled()) return
+
+ var visitorsAmount = 0
+ var millis = 15 * 60_000L
+ for (line in event.tabList) {
+ var matcher = patternNextVisitor.matcher(line)
+ if (matcher.matches()) {
+ val rawTime = matcher.group(1)
+ millis = TimeUtils.getMillis(rawTime)
+ }
+
+ matcher = patternVisitors.matcher(line)
+ if (matcher.matches()) {
+ visitorsAmount = matcher.group(1).toInt()
+ }
+ }
+
+ val diff = lastMillis - millis
+ if (diff == 0L) return
+ lastMillis = millis
+
+ val extraSpeed = if (diff in 1001..10_000) {
+ val factor = diff / 1000
+ "§f/§e" + TimeUtils.formatDuration(millis / factor)
+ } else ""
+
+ val visitorLabel = if (visitorsAmount == 1) "Visitor" else "Visitors"
+ val formatDuration = TimeUtils.formatDuration(millis)
+ render = "§b$visitorsAmount $visitorLabel §f(Next in §e$formatDuration$extraSpeed§f)"
+ }
+
+ @SubscribeEvent
+ fun onRenderOverlay(event: RenderGameOverlayEvent.Post) {
+ if (event.type != RenderGameOverlayEvent.ElementType.ALL) return
+ if (!isEnabled()) return
+
+ SkyHanniMod.feature.garden.visitorHelperTimerPos.renderString(render)
+ }
+
+ private fun isEnabled() =
+ LorenzUtils.inSkyBlock &&
+ SkyHanniMod.feature.garden.visitorHelperTimerEnabled &&
+ LorenzUtils.skyBlockIsland == IslandType.GARDEN
+} \ No newline at end of file