From 57b9cfb59288207b5f0b98c994b5f0fe07380c97 Mon Sep 17 00:00:00 2001 From: Empa Date: Fri, 18 Oct 2024 17:33:38 +0200 Subject: [PATCH 1/2] hanni changes --- .../gui/customscoreboard/ChunkedStatsConfig.java | 4 ++-- .../gui/customscoreboard/CustomScoreboardConfig.java | 4 ++-- .../features/gui/customscoreboard/EventsConfig.java | 1 + src/main/java/at/hannibal2/skyhanni/data/MiningAPI.kt | 2 +- .../{ChunkedStatsLines.kt => ChunkedStatsLine.kt} | 4 ++-- .../features/gui/customscoreboard/CustomScoreboard.kt | 2 +- .../gui/customscoreboard/ScoreboardConfigElement.kt | 3 ++- .../features/gui/customscoreboard/ScoreboardPattern.kt | 3 +++ .../elements/ScoreboardElementChunkedStats.kt | 6 +++--- .../java/at/hannibal2/skyhanni/utils/CollectionUtils.kt | 9 +++++++++ 10 files changed, 26 insertions(+), 12 deletions(-) rename src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/{ChunkedStatsLines.kt => ChunkedStatsLine.kt} (99%) diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/ChunkedStatsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/ChunkedStatsConfig.java index 5ff1d50b2338..8e0941d30198 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/ChunkedStatsConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/ChunkedStatsConfig.java @@ -1,6 +1,6 @@ package at.hannibal2.skyhanni.config.features.gui.customscoreboard; -import at.hannibal2.skyhanni.features.gui.customscoreboard.ChunkedStatsLines; +import at.hannibal2.skyhanni.features.gui.customscoreboard.ChunkedStatsLine; import com.google.gson.annotations.Expose; import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorDraggableList; import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorSlider; @@ -17,7 +17,7 @@ public class ChunkedStatsConfig { desc = "Select the stats you want to display chunked on the scoreboard." ) @ConfigEditorDraggableList - public List chunkedStats = new ArrayList<>(ChunkedStatsLines.getEntries()); + public List chunkedStats = new ArrayList<>(ChunkedStatsLine.getEntries()); @Expose @ConfigOption( diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/CustomScoreboardConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/CustomScoreboardConfig.java index 89d4768509cb..944b44cd4a86 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/CustomScoreboardConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/CustomScoreboardConfig.java @@ -31,8 +31,8 @@ public class CustomScoreboardConfig { name = "Appearance", desc = "Drag text to change the appearance of the advanced scoreboard." ) - @ConfigEditorDraggableList() - public Property> scoreboardEntries = Property.of(new ArrayList<>(ScoreboardConfigElement.defaultOption)); + @ConfigEditorDraggableList + public Property> scoreboardEntries = Property.of(new ArrayList<>(ScoreboardConfigElement.defaultOptions)); @ConfigOption(name = "Reset Appearance", desc = "Reset the appearance of the advanced scoreboard.") @ConfigEditorButton(buttonText = "Reset") diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/EventsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/EventsConfig.java index 3145d7d8c22e..b091c8e90fee 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/EventsConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/EventsConfig.java @@ -23,6 +23,7 @@ public class EventsConfig { @ConfigOption(name = "Reset Events Priority", desc = "Reset the priority of all events.") @ConfigEditorButton(buttonText = "Reset") + // TODO move into kotlin public Runnable reset = () -> { eventEntries.get().clear(); eventEntries.get().addAll(ScoreboardConfigEventElement.defaultOption); diff --git a/src/main/java/at/hannibal2/skyhanni/data/MiningAPI.kt b/src/main/java/at/hannibal2/skyhanni/data/MiningAPI.kt index 84fcfedf6f24..fbe304098299 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/MiningAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/MiningAPI.kt @@ -14,7 +14,6 @@ import at.hannibal2.skyhanni.events.ServerBlockChangeEvent import at.hannibal2.skyhanni.events.mining.OreMinedEvent import at.hannibal2.skyhanni.events.player.PlayerDeathEvent import at.hannibal2.skyhanni.events.skyblock.ScoreboardAreaChangeEvent -import at.hannibal2.skyhanni.features.gui.customscoreboard.ScoreboardPattern import at.hannibal2.skyhanni.features.mining.OreBlock import at.hannibal2.skyhanni.features.mining.isTitanium import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule @@ -46,6 +45,7 @@ object MiningAPI { private val glaciteAreaPattern by group.pattern("area.glacite", "Glacite Tunnels|Great Glacite Lake") private val dwarvenBaseCampPattern by group.pattern("area.basecamp", "Dwarven Base Camp") + // TODO add regex tests private val coldResetPattern by group.pattern( "cold.reset", "§6The warmth of the campfire reduced your §r§b❄ Cold §r§6to §r§a0§r§6!|§c ☠ §r§7You froze to death§r§7\\.", diff --git a/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ChunkedStatsLines.kt b/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ChunkedStatsLine.kt similarity index 99% rename from src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ChunkedStatsLines.kt rename to src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ChunkedStatsLine.kt index bae687e9c827..57000be68b86 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ChunkedStatsLines.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ChunkedStatsLine.kt @@ -26,7 +26,7 @@ import at.hannibal2.skyhanni.features.gui.customscoreboard.elements.ScoreboardEl private val hideEmptyLines get() = informationFilteringConfig.hideEmptyLines -enum class ChunkedStatsLines( +enum class ChunkedStatsLine( private val displayPair: () -> String, private val showWhen: () -> Boolean, private val showIsland: () -> Boolean, @@ -92,7 +92,7 @@ enum class ChunkedStatsLines( companion object { - private var currentIslandStats = listOf() + private var currentIslandStats = listOf() fun getChunkedStats() = buildList { currentIslandStats.forEach { stat -> diff --git a/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/CustomScoreboard.kt b/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/CustomScoreboard.kt index ac077fd56212..14f311aad281 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/CustomScoreboard.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/CustomScoreboard.kt @@ -257,7 +257,7 @@ object CustomScoreboard { fun resetAppearance() { with(config.scoreboardEntries) { get().clear() - get().addAll(ScoreboardConfigElement.defaultOption) + get().addAll(ScoreboardConfigElement.defaultOptions) notifyObservers() } } diff --git a/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ScoreboardConfigElement.kt b/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ScoreboardConfigElement.kt index 1a315c43d10b..9d9dcb378617 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ScoreboardConfigElement.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ScoreboardConfigElement.kt @@ -35,6 +35,7 @@ import at.hannibal2.skyhanni.features.gui.customscoreboard.elements.ScoreboardEl import at.hannibal2.skyhanni.features.gui.customscoreboard.elements.ScoreboardElementUnknown import at.hannibal2.skyhanni.features.gui.customscoreboard.elements.ScoreboardElementVisiting +// TODO once the config can support dynamic lists, remove this enum enum class ScoreboardConfigElement(val element: ScoreboardElement) { TITLE(ScoreboardElementTitle), PROFILE(ScoreboardElementProfile), @@ -84,7 +85,7 @@ enum class ScoreboardConfigElement(val element: ScoreboardElement) { companion object { @JvmField - val defaultOption = listOf( + val defaultOptions = listOf( TITLE, PROFILE, PURSE, diff --git a/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ScoreboardPattern.kt b/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ScoreboardPattern.kt index cf08642172d3..259e983f9fd0 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ScoreboardPattern.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ScoreboardPattern.kt @@ -19,6 +19,8 @@ object ScoreboardPattern { // Main scoreboard private val mainSb = scoreboardGroup.group("main") + + //TODO add regex tests val motesPattern by mainSb.pattern( "motes", "(?:§.)*Motes: (?:§.)*(?[\\d,]+).*", @@ -123,6 +125,7 @@ object ScoreboardPattern { "solo", "§3§lSolo", ) + @Suppress("MaxLineLength") val teammatesPattern by dungeonSb.pattern( "teammates", diff --git a/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/elements/ScoreboardElementChunkedStats.kt b/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/elements/ScoreboardElementChunkedStats.kt index e30274fd9f4b..08cbe478e448 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/elements/ScoreboardElementChunkedStats.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/elements/ScoreboardElementChunkedStats.kt @@ -1,8 +1,8 @@ package at.hannibal2.skyhanni.features.gui.customscoreboard.elements -import at.hannibal2.skyhanni.features.gui.customscoreboard.ChunkedStatsLines.Companion.getChunkedStats -import at.hannibal2.skyhanni.features.gui.customscoreboard.ChunkedStatsLines.Companion.shouldShowChunkedStats -import at.hannibal2.skyhanni.features.gui.customscoreboard.ChunkedStatsLines.Companion.showChunkedStatsIsland +import at.hannibal2.skyhanni.features.gui.customscoreboard.ChunkedStatsLine.Companion.getChunkedStats +import at.hannibal2.skyhanni.features.gui.customscoreboard.ChunkedStatsLine.Companion.shouldShowChunkedStats +import at.hannibal2.skyhanni.features.gui.customscoreboard.ChunkedStatsLine.Companion.showChunkedStatsIsland import at.hannibal2.skyhanni.features.gui.customscoreboard.CustomScoreboard.chunkedConfig // internal, widget and scoreboard diff --git a/src/main/java/at/hannibal2/skyhanni/utils/CollectionUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/CollectionUtils.kt index 4cecc1c00568..81fcb1f272a6 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/CollectionUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/CollectionUtils.kt @@ -117,6 +117,15 @@ object CollectionUtils { return null } + /** + * Returns a sublist of this list, starting after the first occurrence of the specified element. + * + * @param after The element after which the sublist should start. + * @param skip The number of elements to skip after the occurrence of `after` (default is 1). + * @param amount The number of elements to include in the returned sublist (default is 1). + * @return A list containing up to `amount` elements starting `skip` elements after the first occurrence of `after`, + * or an empty list if `after` is not found. + */ fun List.sublistAfter(after: String, skip: Int = 1, amount: Int = 1): List { val startIndex = indexOf(after) if (startIndex == -1) return emptyList() From ea713664a65901b64265608c4b2e8f6267464ec4 Mon Sep 17 00:00:00 2001 From: Empa Date: Fri, 18 Oct 2024 17:57:10 +0200 Subject: [PATCH 2/2] bump migrator --- .../at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt | 2 +- .../gui/customscoreboard/CustomScoreboardConfigFix.kt | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt b/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt index 8228ae025274..93c7d3407235 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt +++ b/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt @@ -12,7 +12,7 @@ import com.google.gson.JsonPrimitive object ConfigUpdaterMigrator { val logger = LorenzLogger("ConfigMigration") - const val CONFIG_VERSION = 62 + const val CONFIG_VERSION = 63 fun JsonElement.at(chain: List, init: Boolean): JsonElement? { if (chain.isEmpty()) return this if (this !is JsonObject) return null diff --git a/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/CustomScoreboardConfigFix.kt b/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/CustomScoreboardConfigFix.kt index d6aa6e7e821b..44dac812764e 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/CustomScoreboardConfigFix.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/CustomScoreboardConfigFix.kt @@ -91,16 +91,16 @@ object CustomScoreboardConfigFix { JsonPrimitive(!it.asBoolean) } - event.transform(62, EVENT_ENTRIES_KEY) { element -> + event.transform(63, EVENT_ENTRIES_KEY) { element -> replaceElements(element, listOf("GARDEN_CLEAN_UP", "GARDEN_PASTING"), ScoreboardConfigEventElement.GARDEN.name) } listOf("customTitle", "customFooter").forEach { key -> - event.transform(62, "$TITLE_AND_FOOTER_KEY.$key") { + event.transform(63, "$TITLE_AND_FOOTER_KEY.$key") { JsonPrimitive(it.asString.replace("&", "&&")) } } listOf("alignTitle", "alignFooter").forEach { key -> - event.move(62, "$TITLE_AND_FOOTER_KEY.alignTitleAndFooter", "$TITLE_AND_FOOTER_KEY.$key") + event.move(63, "$TITLE_AND_FOOTER_KEY.alignTitleAndFooter", "$TITLE_AND_FOOTER_KEY.$key") } }