From 72abdd03d4699f93afbcac56ab998cb8f58cf731 Mon Sep 17 00:00:00 2001 From: J10a1n15 <45315647+j10a1n15@users.noreply.github.com> Date: Tue, 1 Oct 2024 00:37:24 +0200 Subject: [PATCH] resolve reviews --- .../config/features/misc/MiscConfig.java | 6 +++++ .../{TimeOffset.kt => ComputerTimeOffset.kt} | 27 ++++++++++++------- 2 files changed, 23 insertions(+), 10 deletions(-) rename src/main/java/at/hannibal2/skyhanni/utils/{TimeOffset.kt => ComputerTimeOffset.kt} (57%) diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/MiscConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/MiscConfig.java index 9d503c3986be..ac0f093fafdd 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/misc/MiscConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/MiscConfig.java @@ -334,4 +334,10 @@ public class MiscConfig { @ConfigEditorBoolean @FeatureToggle public boolean userluckEnabled = true; + + @Expose + @ConfigOption(name = "Yes please annoy me about pc time offset", desc ="i love annyoing chat warnins yes yes") + @ConfigEditorBoolean + @FeatureToggle + public boolean warnAboutPcTimeOffset = true; } diff --git a/src/main/java/at/hannibal2/skyhanni/utils/TimeOffset.kt b/src/main/java/at/hannibal2/skyhanni/utils/ComputerTimeOffset.kt similarity index 57% rename from src/main/java/at/hannibal2/skyhanni/utils/TimeOffset.kt rename to src/main/java/at/hannibal2/skyhanni/utils/ComputerTimeOffset.kt index b1cfb263b8aa..e131aa8ac099 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/TimeOffset.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/ComputerTimeOffset.kt @@ -10,30 +10,34 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import org.apache.commons.net.ntp.NTPUDPClient import java.net.InetAddress import kotlin.math.abs -import kotlin.math.absoluteValue +import kotlin.time.Duration +import kotlin.time.Duration.Companion.milliseconds +import kotlin.time.Duration.Companion.seconds import kotlin.time.DurationUnit import kotlin.time.toDuration @SkyHanniModule -object TimeOffset { - var offsetMillis = 0L +object ComputerTimeOffset { + var offsetMillis: Duration? = null private set init { SkyHanniMod.coroutineScope.launch { - offsetMillis = getNtpOffset("time.google.com") ?: 0 - print("Time offset: $offsetMillis") + offsetMillis = getNtpOffset("time.google.com") + offsetMillis?.let { + print("SkyHanni detected a time offset of ${it.format()}.") + } ?: print("SkyHanni failed to detect a time offset.") } } - private fun getNtpOffset(ntpServer: String): Long? { + private fun getNtpOffset(ntpServer: String): Duration? { return try { val client = NTPUDPClient() val address = InetAddress.getByName(ntpServer) val timeInfo = client.getTime(address) timeInfo.computeDetails() - timeInfo.offset + timeInfo.offset.toDuration(DurationUnit.MILLISECONDS) } catch (e: Exception) { e.printStackTrace() null @@ -42,14 +46,17 @@ object TimeOffset { @SubscribeEvent fun onProfileJoin(event: ProfileJoinEvent) { - if (abs(offsetMillis) > 10 * 1000) { - val formatted = offsetMillis.toDuration(DurationUnit.MILLISECONDS).format() - ChatUtils.userError("Your computer's clock is off by $formatted. Please update your time settings.") + if (!SkyHanniMod.feature.misc.warnAboutPcTimeOffset) return + offsetMillis?.let { + if (it.absoluteValue > 5.seconds) { + ChatUtils.userError("Your computer's clock is off by ${it.format()}. Please update your time settings.") + } } } @SubscribeEvent fun onDebugCollect(event: DebugDataCollectEvent) { + offsetMillis?.absoluteValue?.let { if (it < 100.milliseconds) return } event.title("Time Offset") event.addData("$offsetMillis ms") }