aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at
diff options
context:
space:
mode:
authorCalMWolfs <94038482+CalMWolfs@users.noreply.github.com>2024-03-27 04:38:29 +1100
committerGitHub <noreply@github.com>2024-03-26 18:38:29 +0100
commit619b69c8e06d0795f6bae9fff2d0d71c2016020f (patch)
treeccf994e077d86af68c1d99fc85e5146b60b4fc14 /src/main/java/at
parente7a378eab8ce9697538cab722a25def96964ba79 (diff)
downloadskyhanni-619b69c8e06d0795f6bae9fff2d0d71c2016020f.tar.gz
skyhanni-619b69c8e06d0795f6bae9fff2d0d71c2016020f.tar.bz2
skyhanni-619b69c8e06d0795f6bae9fff2d0d71c2016020f.zip
Improve mining tracker (#1236)
Diffstat (limited to 'src/main/java/at')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningEventConfig.java5
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/mining/eventtracker/MiningEventDisplay.kt59
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/mining/eventtracker/MiningEventTracker.kt9
4 files changed, 42 insertions, 33 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt b/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt
index f2d64490f..841b8c188 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt
+++ b/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt
@@ -11,7 +11,7 @@ import com.google.gson.JsonPrimitive
object ConfigUpdaterMigrator {
val logger = LorenzLogger("ConfigMigration")
- const val CONFIG_VERSION = 28
+ const val CONFIG_VERSION = 29
fun JsonElement.at(chain: List<String>, init: Boolean): JsonElement? {
if (chain.isEmpty()) return this
if (this !is JsonObject) return null
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningEventConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningEventConfig.java
index 4e8eee363..0476bb524 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningEventConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningEventConfig.java
@@ -24,7 +24,7 @@ public class MiningEventConfig {
@Expose
@ConfigOption(name = "What to Show", desc = "Choose which island's events are shown in the gui.")
@ConfigEditorDropdown
- public ShowType showType = ShowType.BOTH;
+ public ShowType showType = ShowType.ALL;
@Expose
@ConfigOption(name = "Compressed Format", desc = "Compresses the event names so that they are shorter.")
@@ -38,9 +38,10 @@ public class MiningEventConfig {
public boolean passedEvents = false;
public enum ShowType {
- BOTH("Both Mining Islands"),
+ ALL("All Mining Islands"),
CRYSTAL("Crystal Hollows Only"),
DWARVEN("Dwarven Mines Only"),
+ MINESHAFT("Mineshaft Only"),
CURRENT("Current Island Only"),
;
diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/eventtracker/MiningEventDisplay.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/eventtracker/MiningEventDisplay.kt
index 656df781f..4e1fbcef5 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/mining/eventtracker/MiningEventDisplay.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/mining/eventtracker/MiningEventDisplay.kt
@@ -16,10 +16,7 @@ object MiningEventDisplay {
private val config get() = SkyHanniMod.feature.mining.miningEvent
private var display = mutableListOf<String>()
- private var dwarvenEvents = listOf<RunningEventType>()
- private var crystalEvents = listOf<RunningEventType>()
- private var lastDwarvenEvent: MiningEventType? = null
- private var lastCrystalEvent: MiningEventType? = null
+ private val islandEventData: MutableMap<IslandType, MiningIslandEventInfo> = mutableMapOf()
@SubscribeEvent
fun onTick(event: LorenzTickEvent) {
@@ -35,31 +32,29 @@ object MiningEventDisplay {
private fun updateDisplay() {
display.clear()
- updateEvents(IslandType.DWARVEN_MINES, dwarvenEvents, lastDwarvenEvent)
- updateEvents(IslandType.CRYSTAL_HOLLOWS, crystalEvents, lastCrystalEvent)
+ updateEvents()
}
- private fun updateEvents(islandType: IslandType, events: List<RunningEventType>, lastEvent: MiningEventType?) {
- val shouldShow = when (config.showType) {
- MiningEventConfig.ShowType.DWARVEN -> islandType == IslandType.DWARVEN_MINES
- MiningEventConfig.ShowType.CRYSTAL -> islandType == IslandType.CRYSTAL_HOLLOWS
- MiningEventConfig.ShowType.CURRENT -> islandType.isInIsland()
- else -> true
- }
+ private fun updateEvents() {
+ islandEventData.forEach { (islandType, eventDetails) ->
+ val shouldShow = when (config.showType) {
+ MiningEventConfig.ShowType.DWARVEN -> islandType == IslandType.DWARVEN_MINES
+ MiningEventConfig.ShowType.CRYSTAL -> islandType == IslandType.CRYSTAL_HOLLOWS
+ MiningEventConfig.ShowType.MINESHAFT -> islandType == IslandType.MINESHAFT
+ MiningEventConfig.ShowType.CURRENT -> islandType.isInIsland()
+ else -> true
+ }
- events.firstOrNull()?.let { firstEvent ->
- if (firstEvent.endsAt.asTimeMark().isInPast()) {
- when (islandType) {
- IslandType.DWARVEN_MINES -> lastDwarvenEvent = firstEvent.event
- IslandType.CRYSTAL_HOLLOWS -> lastCrystalEvent = firstEvent.event
- else -> Unit
+ eventDetails.islandEvents.firstOrNull()?.let { firstEvent ->
+ if (firstEvent.endsAt.asTimeMark().isInPast()) {
+ eventDetails.lastEvent = firstEvent.event
}
}
- }
- if (shouldShow) {
- val upcomingEvents = formatUpcomingEvents(events, lastEvent)
- display.add("§a${islandType.displayName}§8: $upcomingEvents")
+ if (shouldShow) {
+ val upcomingEvents = formatUpcomingEvents(eventDetails.islandEvents, eventDetails.lastEvent)
+ display.add("§a${islandType.displayName}§8: $upcomingEvents")
+ }
}
}
@@ -75,14 +70,16 @@ object MiningEventDisplay {
fun updateData(eventData: MiningEventData) {
eventData.runningEvents.forEach { (islandType, events) ->
- when (islandType) {
- IslandType.DWARVEN_MINES -> dwarvenEvents =
- events.sortedBy { it.endsAt - it.event.defaultLength.inWholeMilliseconds }
+ val sorted = events.sortedBy { it.endsAt - it.event.defaultLength.inWholeMilliseconds }
- IslandType.CRYSTAL_HOLLOWS -> crystalEvents =
- events.filter { !it.event.dwarvenSpecific }
- .sortedBy { it.endsAt - it.event.defaultLength.inWholeMilliseconds }
- else -> Unit
+ val oldData = islandEventData[islandType]
+ if (oldData == null) {
+ //todo remove once mineshaft is on main server
+ if (sorted.isNotEmpty() || islandType != IslandType.MINESHAFT) {
+ islandEventData[islandType] = MiningIslandEventInfo(sorted)
+ }
+ } else {
+ oldData.islandEvents = sorted
}
}
}
@@ -90,3 +87,5 @@ object MiningEventDisplay {
private fun shouldDisplay() = LorenzUtils.inSkyBlock && config.enabled && !ReminderUtils.isBusy() &&
!(!config.outsideMining && !LorenzUtils.inAdvancedMiningIsland())
}
+
+private class MiningIslandEventInfo(var islandEvents: List<RunningEventType>, var lastEvent: MiningEventType? = null)
diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/eventtracker/MiningEventTracker.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/eventtracker/MiningEventTracker.kt
index e4d8e31a3..9d0ce3c33 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/mining/eventtracker/MiningEventTracker.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/mining/eventtracker/MiningEventTracker.kt
@@ -2,6 +2,7 @@ package at.hannibal2.skyhanni.features.mining.eventtracker
import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.config.ConfigManager
+import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator
import at.hannibal2.skyhanni.data.BossbarData
import at.hannibal2.skyhanni.data.HypixelData
import at.hannibal2.skyhanni.data.IslandType
@@ -18,6 +19,7 @@ import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher
import at.hannibal2.skyhanni.utils.TimeUtils
import at.hannibal2.skyhanni.utils.fromJson
import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern
+import com.google.gson.JsonPrimitive
import kotlinx.coroutines.launch
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import kotlin.time.Duration.Companion.milliseconds
@@ -171,4 +173,11 @@ class MiningEventTracker {
MiningEventDisplay.updateData(miningEventData.data)
}
}
+
+ @SubscribeEvent
+ fun onConfigFix(event: ConfigUpdaterMigrator.ConfigFixEvent) {
+ event.transform(29, "mining.miningEvent.showType") { element ->
+ if (element.asString == "BOTH") JsonPrimitive("ALL") else element
+ }
+ }
}