aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/GUIConfig.java27
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/misc/InGameDateDisplay.kt31
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt8
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/jsonobjects/TabListJson.java11
5 files changed, 54 insertions, 27 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/GUIConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/GUIConfig.java
index 177c0b3ce..79df5cdd8 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/GUIConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/GUIConfig.java
@@ -98,15 +98,15 @@ public class GUIConfig {
@Expose
@ConfigOption(name = "In-Game Date", desc = "")
@Accordion
- public InGameDateConfig inGameDateConfig = new InGameDateConfig();
+ public InGameDateConfig inGameDate = new InGameDateConfig();
public static class InGameDateConfig {
@Expose
@ConfigOption(
- name = "Enabled",
- desc = "Show the in-game date of SkyBlock (like in Apec, §ebut with mild delays§7).\n" +
- "(Though this one includes the SkyBlock year!)"
+ name = "Enabled",
+ desc = "Show the in-game date of SkyBlock (like in Apec, §ebut with mild delays§7).\n" +
+ "(Though this one includes the SkyBlock year!)"
)
@ConfigEditorBoolean
@FeatureToggle
@@ -117,8 +117,8 @@ public class GUIConfig {
@Expose
@ConfigOption(
- name = "Use Scoreboard for Date",
- desc = "Uses the scoreboard instead to find the current month, date, and time. Greater \"accuracy\", depending on who's asking."
+ name = "Use Scoreboard for Date",
+ desc = "Uses the scoreboard instead to find the current month, date, and time. Greater \"accuracy\", depending on who's asking."
)
@ConfigEditorBoolean
@FeatureToggle
@@ -126,8 +126,8 @@ public class GUIConfig {
@Expose
@ConfigOption(
- name = "Show Sun/Moon",
- desc = "Show the sun or moon symbol seen on the scoreboard."
+ name = "Show Sun/Moon",
+ desc = "Show the sun or moon symbol seen on the scoreboard."
)
@ConfigEditorBoolean
@FeatureToggle
@@ -135,13 +135,14 @@ public class GUIConfig {
@Expose
@ConfigOption(
- name = "Refresh Rate",
- desc = "Change the time in seconds you would like to refresh the In-Game Date Display.\n§eNOTE: If \"Use Scoreboard for Date\" is enabled, this setting is ignored."
+ name = "Refresh Rate",
+ desc = "Change the time in seconds you would like to refresh the In-Game Date Display." +
+ "\n§eNOTE: If \"Use Scoreboard for Date\" is enabled, this setting is ignored."
)
@ConfigEditorSlider(
- minValue = 1,
- maxValue = 60,
- minStep = 1
+ minValue = 1,
+ maxValue = 60,
+ minStep = 1
)
public int refreshSeconds = 30;
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/InGameDateDisplay.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/InGameDateDisplay.kt
index 1874d1143..1b08e7ebd 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/misc/InGameDateDisplay.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/misc/InGameDateDisplay.kt
@@ -4,23 +4,33 @@ import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.data.ScoreboardData
import at.hannibal2.skyhanni.events.GuiRenderEvent
import at.hannibal2.skyhanni.events.LorenzTickEvent
+import at.hannibal2.skyhanni.events.RepositoryReloadEvent
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.RenderUtils.renderString
-import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher
+import at.hannibal2.skyhanni.utils.StringUtils.matches
import at.hannibal2.skyhanni.utils.StringUtils.removeColor
import at.hannibal2.skyhanni.utils.TimeUtils.formatted
+import at.hannibal2.skyhanni.utils.jsonobjects.TabListJson
import io.github.moulberry.notenoughupdates.util.SkyBlockTime
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class InGameDateDisplay {
- private val config get() = SkyHanniMod.feature.gui.inGameDateConfig
- private val monthAndDatePattern = ".*((Early|Late) )?(Winter|Spring|Summer|Autumn) [0-9]{1,2}(nd|rd|th|st).*".toPattern()
+ private val config get() = SkyHanniMod.feature.gui.inGameDate
+ private val monthAndDatePattern =
+ ".*((Early|Late) )?(Winter|Spring|Summer|Autumn) [0-9]{1,2}(nd|rd|th|st).*".toPattern()
private var display = ""
+ // sun, moon, spooky
+ private var sunMoonIcons = emptyList<String>()
+
+ @SubscribeEvent
+ fun onRepoReload(event: RepositoryReloadEvent) {
+ sunMoonIcons = event.getConstant<TabListJson>("TabList").sun_moon_symbols
+ }
+
@SubscribeEvent
fun onTick(event: LorenzTickEvent) {
if (!isEnabled()) return
- if (!LorenzUtils.inSkyBlock) return
if (!config.useScoreboard && !event.repeatSeconds(config.refreshSeconds)) return
if (config.useScoreboard && !event.repeatSeconds(1)) return
@@ -33,16 +43,17 @@ class InGameDateDisplay {
if (config.useScoreboard) {
val list = ScoreboardData.sidebarLinesFormatted //we need this to grab the moon/sun symbol
val year = "Year ${date.year}"
- var monthAndDate = "??" //initalize as "??" as fallback value in case none of the scoreboard lines match
- for (line in list) { monthAndDatePattern.matchMatcher(line) { monthAndDate = line } }
- val time = list.find{ it.lowercase().contains("am ") || it.lowercase().contains("pm ") } ?: "??"
+ val monthAndDate = list.find { monthAndDatePattern.matches(it) } ?: "??"
+ val time = list.find { it.lowercase().contains("am ") || it.lowercase().contains("pm ") } ?: "??"
theBaseString = "$monthAndDate, $year ${time.trim()}".removeColor()
- if (!config.includeSunMoon) theBaseString = theBaseString.replace("☽", "").replace("☀", "").replace("࿇", "")
+ if (!config.includeSunMoon) {
+ sunMoonIcons.forEach { theBaseString = theBaseString.replace(it, "") }
+ }
} else {
theBaseString = date.formatted()
if (config.includeSunMoon) {
- if ((date.hour >= 6) && (date.hour < 17)) theBaseString = "$theBaseString ☀"
- else theBaseString = "$theBaseString ☽"
+ theBaseString = if ((date.hour >= 6) && (date.hour < 17)) "$theBaseString ☀"
+ else "$theBaseString ☽"
}
}
display = theBaseString
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt
index 28afe3b4e..751271510 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt
@@ -139,6 +139,7 @@ object LorenzUtils {
}
// TODO replace all calls with regex
+ @Deprecated("Do not use complicated string operations", ReplaceWith("Regex"))
fun String.between(start: String, end: String): String = this.split(start, end)[1]
// TODO use derpy() on every use case
@@ -426,11 +427,12 @@ object LorenzUtils {
val tileSign = (this as AccessorGuiEditSign).tileSign
return (tileSign.signText[1].unformattedText.removeColor() == "^^^^^^"
- && tileSign.signText[2].unformattedText.removeColor() == "Set your"
- && tileSign.signText[3].unformattedText.removeColor() == "speed cap!")
+ && tileSign.signText[2].unformattedText.removeColor() == "Set your"
+ && tileSign.signText[3].unformattedText.removeColor() == "speed cap!")
}
- fun inIsland(island: IslandType) = inSkyBlock && (skyBlockIsland == island || island == IslandType.CATACOMBS && inDungeons)
+ fun inIsland(island: IslandType) =
+ inSkyBlock && (skyBlockIsland == island || island == IslandType.CATACOMBS && inDungeons)
fun IslandType.isInIsland() = inIsland(this)
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt
index 66eb0faad..0900b3812 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt
@@ -235,4 +235,6 @@ object StringUtils {
fun String.convertToFormatted(): String {
return this.replace("&&", "§")
}
-} \ No newline at end of file
+
+ fun Pattern.matches(string: String) = matcher(string).matches()
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/jsonobjects/TabListJson.java b/src/main/java/at/hannibal2/skyhanni/utils/jsonobjects/TabListJson.java
new file mode 100644
index 000000000..03c256256
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/utils/jsonobjects/TabListJson.java
@@ -0,0 +1,11 @@
+package at.hannibal2.skyhanni.utils.jsonobjects;
+
+import com.google.gson.annotations.Expose;
+
+import java.util.List;
+
+public class TabListJson {
+
+ @Expose
+ public List<String> sun_moon_symbols;
+}