diff options
author | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2023-02-18 22:54:58 +0100 |
---|---|---|
committer | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2023-02-18 22:54:58 +0100 |
commit | cfa9dff0c90be83ab219db10ef08abb8c6aabca0 (patch) | |
tree | 9a726d9e8cb937c5f9f867f8f78f5aaa27e002da /src/main/java/at/hannibal2/skyhanni/features/garden | |
parent | 8e57a5b1a7ea98a086fae0883e42cd34558b0a58 (diff) | |
download | skyhanni-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.kt | 64 |
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 |