Skip to content

Commit

Permalink
Feature: Last server (#2046)
Browse files Browse the repository at this point in the history
Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
  • Loading branch information
j10a1n15 and hannibal002 authored Aug 31, 2024
1 parent c1c3fcc commit 31f9e29
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package at.hannibal2.skyhanni.config.features.misc;

import at.hannibal2.skyhanni.config.FeatureToggle;
import com.google.gson.annotations.Expose;
import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorBoolean;
import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorSlider;
import io.github.notenoughupdates.moulconfig.annotations.ConfigOption;

public class LastServersConfig {

@Expose
@ConfigOption(name = "Enabled", desc = "Receive notifications when you rejoin a server you have previously joined.")
@ConfigEditorBoolean
@FeatureToggle
public boolean enabled = false;

@Expose
@ConfigOption(name = "Notification Time", desc = "Get notified if you rejoin a server within the specified number of seconds.")
@ConfigEditorSlider(minValue = 5, maxValue = 300, minStep = 1)
public Integer warnTime = 60;
}
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,11 @@ public class MiscConfig {
@Accordion
public RemindersConfig reminders = new RemindersConfig();

@Expose
@ConfigOption(name = "Last Servers", desc = "")
@Accordion
public LastServersConfig lastServers = new LastServersConfig();

@Expose
@ConfigOption(name = "Show Outside SkyBlock", desc = "Show these features outside of SkyBlock.")
@ConfigEditorDraggableList
Expand Down
36 changes: 36 additions & 0 deletions src/main/java/at/hannibal2/skyhanni/features/misc/LastServers.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package at.hannibal2.skyhanni.features.misc

import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.data.HypixelData
import at.hannibal2.skyhanni.events.SecondPassedEvent
import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
import at.hannibal2.skyhanni.utils.ChatUtils
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.SimpleTimeMark
import at.hannibal2.skyhanni.utils.TimeUtils.format
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import kotlin.time.Duration.Companion.seconds

@SkyHanniModule
object LastServers {

private val config get() = SkyHanniMod.feature.misc.lastServers
private var lastServerId: String? = null
private val lastServers = mutableMapOf<String, SimpleTimeMark>()

@SubscribeEvent
fun onSecondPassed(event: SecondPassedEvent) {
if (!isEnabled() || HypixelData.serverId == lastServerId) return

val id = HypixelData.serverId ?: return
lastServers.entries.removeIf { it.value.passedSince() > config.warnTime.seconds }
lastServers[id]?.passedSince()?.let {
ChatUtils.chat("§7You already joined this server §b${it.format()}§7 ago.")
}
ChatUtils.debug("Adding $id to last servers.")
lastServers[id] = SimpleTimeMark.now()
lastServerId = id
}

private fun isEnabled() = LorenzUtils.inSkyBlock && config.enabled
}

0 comments on commit 31f9e29

Please sign in to comment.