From 9385f4f402bbfc9f06e292811d671193715864e3 Mon Sep 17 00:00:00 2001 From: Thunderblade73 <85900443+Thunderblade73@users.noreply.github.com> Date: Sat, 21 Sep 2024 15:32:42 +0200 Subject: [PATCH] soft fail instead of hard crash --- .../java/at/hannibal2/skyhanni/api/ReforgeAPI.kt | 14 +++++++++++++- .../hannibal2/skyhanni/data/model/SkyblockStat.kt | 6 ++++++ .../skyhanni/utils/json/SkyHanniTypeAdapters.kt | 2 +- 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 987a864af77e..534d38d47c82 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 182309634f72..f31c95958659 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 2048be522061..13aec1d92b6a 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 = SimpleStringTypeAdapter( { name.lowercase() }, - { SkyblockStat.valueOf(this.uppercase()) }, + { SkyblockStat.getValue(this.uppercase()) }, ) val TRACKER_DISPLAY_MODE = SimpleStringTypeAdapter.forEnum()