package at.hannibal2.skyhanni.features.misc import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.events.GuiRenderEvent import at.hannibal2.skyhanni.events.LorenzChatEvent import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent import at.hannibal2.skyhanni.utils.LorenzUtils import at.hannibal2.skyhanni.utils.RenderUtils.renderString import at.hannibal2.skyhanni.utils.SimpleTimeMark import at.hannibal2.skyhanni.utils.TimeUtils.format import net.minecraftforge.fml.common.eventhandler.SubscribeEvent class LimboTimeTracker { private val config get() = SkyHanniMod.feature.misc private var limboJoinTime = SimpleTimeMark.farPast() private var inLimbo = false @SubscribeEvent fun onChat(event: LorenzChatEvent) { if (event.message == "§cYou are AFK. Move around to return from AFK." || event.message == "§cYou were spawned in Limbo.") { limboJoinTime = SimpleTimeMark.now() inLimbo = true } } @SubscribeEvent fun onWorldChange(event: LorenzWorldChangeEvent) { if (!inLimbo) return leaveLimbo() } @SubscribeEvent fun onRenderOverlay(event: GuiRenderEvent.GuiOverlayRenderEvent) { if (!isEnabled()) return if (!inLimbo) return if (LorenzUtils.inSkyBlock) { leaveLimbo() return } val duration = limboJoinTime.passedSince().format() config.showTimeInLimboPosition.renderString("§eIn limbo since §b$duration", posLabel = "Limbo Time Tracker") } private fun leaveLimbo() { inLimbo = false if (!isEnabled()) return val passedSince = limboJoinTime.passedSince() val duration = passedSince.format() LorenzUtils.run { chat("§e[SkyHanni] You left the limbo after §b$duration") } } fun isEnabled() = config.showTimeInLimbo }