aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThunderblade73 <85900443+Thunderblade73@users.noreply.github.com>2024-09-21 23:14:34 +0200
committerGitHub <noreply@github.com>2024-09-21 23:14:34 +0200
commit1ae2d448cc34c20c34c0aee1a97bdd01801a6b66 (patch)
tree13f5b796e3abab068fca4ade29455e35f834a034 /src
parentd2072b83949b90bd7c2f5bfa6bd0c08941953879 (diff)
downloadskyhanni-1ae2d448cc34c20c34c0aee1a97bdd01801a6b66.tar.gz
skyhanni-1ae2d448cc34c20c34c0aee1a97bdd01801a6b66.tar.bz2
skyhanni-1ae2d448cc34c20c34c0aee1a97bdd01801a6b66.zip
Fix: ReforgeAPI fix hard crash for unkown stat (#2562)
Diffstat (limited to 'src')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/api/ReforgeAPI.kt14
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/model/SkyblockStat.kt6
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/json/SkyHanniTypeAdapters.kt2
3 files changed, 20 insertions, 2 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/api/ReforgeAPI.kt b/src/main/java/at/hannibal2/skyhanni/api/ReforgeAPI.kt
index 987a864af..534d38d47 100644
--- a/src/main/java/at/hannibal2/skyhanni/api/ReforgeAPI.kt
+++ b/src/main/java/at/hannibal2/skyhanni/api/ReforgeAPI.kt
@@ -5,6 +5,7 @@ import at.hannibal2.skyhanni.data.model.SkyblockStat
import at.hannibal2.skyhanni.data.model.SkyblockStatList
import at.hannibal2.skyhanni.events.NeuRepositoryReloadEvent
import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
+import at.hannibal2.skyhanni.test.command.ErrorManager
import at.hannibal2.skyhanni.utils.ItemCategory
import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName
import at.hannibal2.skyhanni.utils.ItemUtils.getItemCategoryOrNull
@@ -176,7 +177,18 @@ object ReforgeAPI {
while (reader.hasNext()) {
val name = reader.nextName()
val value = reader.nextDouble()
- list[SkyblockStat.valueOf(name.uppercase())] = value
+
+ val stat = SkyblockStat.getValueOrNull(name.uppercase()) ?: run {
+ ErrorManager.logErrorStateWithData(
+ "Unknown stat: '${name.uppercase()}'",
+ "Stat list could not parse stat",
+ "failed" to name.uppercase(),
+ betaOnly = true,
+ )
+ continue
+ }
+
+ list[stat] = value
}
reader.endObject()
return list
diff --git a/src/main/java/at/hannibal2/skyhanni/data/model/SkyblockStat.kt b/src/main/java/at/hannibal2/skyhanni/data/model/SkyblockStat.kt
index 182309634..f31c95958 100644
--- a/src/main/java/at/hannibal2/skyhanni/data/model/SkyblockStat.kt
+++ b/src/main/java/at/hannibal2/skyhanni/data/model/SkyblockStat.kt
@@ -53,6 +53,8 @@ enum class SkyblockStat(val icon: String) {
FEAR("§a☠"),
HEAT_RESISTANCE("§c♨"),
+
+ UNKNOWN("§c?")
;
val capitalizedName = name.lowercase().allLettersFirstUppercase()
@@ -65,6 +67,10 @@ enum class SkyblockStat(val icon: String) {
val fontSizeOfLargestIcon by lazy {
entries.maxOf { Minecraft.getMinecraft().fontRendererObj.getStringWidth(it.icon) } + 1
}
+
+ fun getValueOrNull(string: String): SkyblockStat? = entries.firstOrNull { it.name == string }
+
+ fun getValue(string: String): SkyblockStat = getValueOrNull(string) ?: UNKNOWN
}
}
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/json/SkyHanniTypeAdapters.kt b/src/main/java/at/hannibal2/skyhanni/utils/json/SkyHanniTypeAdapters.kt
index 2048be522..13aec1d92 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/json/SkyHanniTypeAdapters.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/json/SkyHanniTypeAdapters.kt
@@ -67,7 +67,7 @@ object SkyHanniTypeAdapters {
val SKYBLOCK_STAT: TypeAdapter<SkyblockStat> = SimpleStringTypeAdapter(
{ name.lowercase() },
- { SkyblockStat.valueOf(this.uppercase()) },
+ { SkyblockStat.getValue(this.uppercase()) },
)
val TRACKER_DISPLAY_MODE = SimpleStringTypeAdapter.forEnum<SkyHanniTracker.DefaultDisplayMode>()