diff --git a/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/RepoErrorData.kt b/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/RepoErrorData.kt new file mode 100644 index 000000000000..4866176516c3 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/RepoErrorData.kt @@ -0,0 +1,10 @@ +package at.hannibal2.skyhanni.data.jsonobjects.repo + +import com.google.gson.annotations.Expose + +data class RepoErrorData( + @Expose var messageExact: List?, + @Expose var messageStartsWith: List?, + @Expose var replaceMessage: String?, + @Expose var affectedVersions: List = listOf(), +) diff --git a/src/main/java/at/hannibal2/skyhanni/test/command/ErrorManager.kt b/src/main/java/at/hannibal2/skyhanni/test/command/ErrorManager.kt index 56a50ecebd06..e0fcf8fcbdc3 100644 --- a/src/main/java/at/hannibal2/skyhanni/test/command/ErrorManager.kt +++ b/src/main/java/at/hannibal2/skyhanni/test/command/ErrorManager.kt @@ -1,6 +1,10 @@ package at.hannibal2.skyhanni.test.command import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.config.ConfigManager +import at.hannibal2.skyhanni.data.jsonobjects.repo.RepoErrorData +import at.hannibal2.skyhanni.events.RepositoryReloadEvent +import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule import at.hannibal2.skyhanni.utils.ChatUtils import at.hannibal2.skyhanni.utils.KeyboardManager import at.hannibal2.skyhanni.utils.LorenzUtils @@ -8,9 +12,12 @@ import at.hannibal2.skyhanni.utils.OSUtils import at.hannibal2.skyhanni.utils.StringUtils import at.hannibal2.skyhanni.utils.StringUtils.removeColor import at.hannibal2.skyhanni.utils.TimeLimitedSet +import at.hannibal2.skyhanni.utils.json.fromJson import net.minecraft.client.Minecraft +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import kotlin.time.Duration.Companion.minutes +@SkyHanniModule object ErrorManager { // random id -> error message @@ -158,12 +165,57 @@ object ErrorManager { if (finalMessage.last() !in ".?!") { finalMessage += "§c." } - ChatUtils.clickableChat( - "§c[SkyHanni-${SkyHanniMod.version}]: $finalMessage Click here to copy the error into the clipboard.", - onClick = { copyError(randomId) }, - "§eClick to copy!", - prefix = false, - ) + + var hideError = false + for (repoError in repoErrors) { + for (s in repoError.messageStartsWith ?: listOf()) { + if (rawMessage.startsWith(s)) { + hideError = true + } + } + for (s in repoError.messageExact ?: listOf()) { + if (rawMessage == s) { + hideError = true + } + } + if (hideError) { + if (repoError.replaceMessage != null) { + finalMessage = repoError.replaceMessage!! + hideError = false + } + break + } + } + + if (!hideError) { + ChatUtils.clickableChat( + "§c[SkyHanni-${SkyHanniMod.version}]: $finalMessage Click here to copy the error into the clipboard.", + onClick = { copyError(randomId) }, + "§eClick to copy!", + prefix = false, + ) + } + + } + + private var repoErrors: List = listOf() + + @SubscribeEvent + fun onRepoReload(event: RepositoryReloadEvent) { + val chatErrors = event.repoLocation.resolve("chat_errors") + repoErrors = if (chatErrors.exists()) { + chatErrors.listFiles() + .filter { + it != null && it.isFile && it.canRead() + } + .map { + ConfigManager.gson.fromJson(it.readText()) + }.filter { + SkyHanniMod.version in it.affectedVersions + } + } else { + listOf() + } } private fun buildExtraDataString(extraData: Array>): String {