summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/features
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-11-17 11:22:47 +0100
committerhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-11-17 11:22:47 +0100
commite2e03722f8db36b51597cb254b889e3ce94b1dfa (patch)
tree47efc86738cc4760bd287a5a0027e036a756373d /src/main/java/at/hannibal2/skyhanni/features
parent9b110e9f7015921e8cdc1629b3aeae8975cc4a9b (diff)
downloadskyhanni-e2e03722f8db36b51597cb254b889e3ce94b1dfa.tar.gz
skyhanni-e2e03722f8db36b51597cb254b889e3ce94b1dfa.tar.bz2
skyhanni-e2e03722f8db36b51597cb254b889e3ce94b1dfa.zip
Using duration and SimpleTimeMark in GardenVisitorTimer. Added TimeUtils.getDuration and deprecated TimeUtils.getMillis
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorTimer.kt57
1 files changed, 31 insertions, 26 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorTimer.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorTimer.kt
index 06bb732cc..7e26e900b 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorTimer.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorTimer.kt
@@ -12,6 +12,7 @@ import at.hannibal2.skyhanni.test.command.ErrorManager
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.RenderUtils.renderString
import at.hannibal2.skyhanni.utils.SimpleTimeMark
+import at.hannibal2.skyhanni.utils.SimpleTimeMark.Companion.asTimeMark
import at.hannibal2.skyhanni.utils.SoundUtils
import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher
import at.hannibal2.skyhanni.utils.StringUtils.removeColor
@@ -20,16 +21,18 @@ import at.hannibal2.skyhanni.utils.TimeUtils
import at.hannibal2.skyhanni.utils.TimeUtils.format
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import kotlin.concurrent.fixedRateTimer
-import kotlin.math.roundToLong
+import kotlin.time.Duration
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.seconds
+import kotlin.time.DurationUnit
+import kotlin.time.toDuration
class GardenVisitorTimer {
private val config get() = SkyHanniMod.feature.garden.visitors.timer
private val pattern = "§b§lVisitors: §r§f\\((?<time>.*)\\)".toPattern()
private var render = ""
- private var lastMillis = 0L
- private var sixthVisitorArrivalTime: Long = 0
+ private var lastMillis = 0.seconds
+ private var sixthVisitorArrivalTime = SimpleTimeMark.farPast()
private var visitorJustArrived = false
private var sixthVisitorReady = false
private var lastTimerValue = ""
@@ -37,11 +40,11 @@ class GardenVisitorTimer {
//TODO nea?
// private val visitorInterval by dynamic(GardenAPI::config, Storage.ProfileSpecific.GardenStorage::visitorInterval)
- private var visitorInterval: Long?
- get() = GardenAPI.storage?.visitorInterval
+ private var visitorInterval: Duration?
+ get() = GardenAPI.storage?.visitorInterval?.toDuration(DurationUnit.MILLISECONDS)
set(value) {
value?.let {
- GardenAPI.storage?.visitorInterval = it
+ GardenAPI.storage?.visitorInterval = it.inWholeMilliseconds
}
}
@@ -71,8 +74,8 @@ class GardenVisitorTimer {
@SubscribeEvent
fun onPreProfileSwitch(event: PreProfileSwitchEvent) {
render = ""
- lastMillis = 0
- sixthVisitorArrivalTime = 0
+ lastMillis = 0.seconds
+ sixthVisitorArrivalTime = SimpleTimeMark.farPast()
visitorJustArrived = false
sixthVisitorReady = false
}
@@ -100,14 +103,14 @@ class GardenVisitorTimer {
lastTimerUpdate = SimpleTimeMark.now()
lastTimerValue = rawTime
}
- millis = TimeUtils.getMillis(rawTime)
+ millis = TimeUtils.getDuration(rawTime)
}
}
if (lastVisitors != -1 && visitorsAmount - lastVisitors == 1) {
if (!queueFull) {
- visitorInterval = ((millis - 1) / 60_000L + 1) * 60_000L
- GardenAPI.storage?.visitorInterval = visitorInterval
+ visitorInterval = millis
+ this.visitorInterval = visitorInterval
} else {
updateSixthVisitorArrivalTime()
}
@@ -119,10 +122,11 @@ class GardenVisitorTimer {
visitorJustArrived = false
sixthVisitorReady = false
}
- millis = sixthVisitorArrivalTime - System.currentTimeMillis()
- GardenAPI.storage?.nextSixthVisitorArrival =
- System.currentTimeMillis() + millis + (5 - visitorsAmount) * visitorInterval
- if (isSixthVisitorEnabled() && millis < 0) {
+ millis = sixthVisitorArrivalTime.timeUntil()
+
+ val nextSixthVisitorArrival = SimpleTimeMark.now() + millis + (visitorInterval * (5 - visitorsAmount))
+ GardenAPI.storage?.nextSixthVisitorArrival = nextSixthVisitorArrival.toMillis()
+ if (isSixthVisitorEnabled() && millis.isNegative()) {
visitorsAmount++
if (!sixthVisitorReady) {
LorenzUtils.sendTitle("§a6th Visitor Ready", 5.seconds)
@@ -135,27 +139,28 @@ class GardenVisitorTimer {
val showGrayGuess = visitorsAmount < 5 && sinceLastTimerUpdate in 500.milliseconds..60.seconds
val diff = lastMillis - millis
- if (diff == 0L && visitorsAmount == lastVisitors && !showGrayGuess) return
+ if (diff == 0.seconds && visitorsAmount == lastVisitors && !showGrayGuess) return
lastMillis = millis
lastVisitors = visitorsAmount
val formatColor = if (queueFull) "6" else "e"
- val extraSpeed = if (diff in 2000..10_000) {
- val factor = diff / 1000.0
- "§7/§$formatColor" + TimeUtils.formatDuration((millis / factor).roundToLong())
+ val extraSpeed = if (diff in 2.seconds..10.seconds) {
+ val factor = diff.inWholeSeconds.toDouble()
+ val duration = millis / factor
+ "§7/§$formatColor" + duration.format()
} else ""
- if (config.newVisitorPing && millis < 10000) {
+ if (config.newVisitorPing && millis < 10.seconds) {
SoundUtils.playBeepSound()
}
val formatDuration = if (showGrayGuess) {
val oneMinute = 60.seconds
- val min = TimeUtils.formatDuration(millis - oneMinute.inWholeMilliseconds, maxUnits = 1)
+ val min = TimeUtils.formatDuration(millis - oneMinute, maxUnits = 1)
val sec = (oneMinute - sinceLastTimerUpdate).format(maxUnits = 1)
"$min §7$sec"
} else TimeUtils.formatDuration(millis)
- val next = if (queueFull && (!isSixthVisitorEnabled() || millis < 0)) "§cQueue Full!" else {
+ val next = if (queueFull && (!isSixthVisitorEnabled() || millis.isNegative())) "§cQueue Full!" else {
"Next in §$formatColor$formatDuration$extraSpeed"
}
val visitorLabel = if (visitorsAmount == 1) "visitor" else "visitors"
@@ -173,21 +178,21 @@ class GardenVisitorTimer {
fun onWorldChange(event: LorenzWorldChangeEvent) {
lastVisitors = -1
GardenAPI.storage?.nextSixthVisitorArrival?.let {
- sixthVisitorArrivalTime = it
+ sixthVisitorArrivalTime = it.asTimeMark()
}
sixthVisitorReady = false
- lastMillis = sixthVisitorArrivalTime - System.currentTimeMillis()
+ lastMillis = sixthVisitorArrivalTime.timeUntil()
}
@SubscribeEvent
fun onBlockBreak(event: CropClickEvent) {
if (!isEnabled()) return
- sixthVisitorArrivalTime -= 100
+ sixthVisitorArrivalTime -= 100.milliseconds
}
private fun updateSixthVisitorArrivalTime() {
visitorInterval?.let {
- sixthVisitorArrivalTime = System.currentTimeMillis() + it
+ sixthVisitorArrivalTime = SimpleTimeMark.now() + it
}
}