summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/test/command
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/test/command')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/test/command/ErrorManager.kt47
1 files changed, 40 insertions, 7 deletions
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 a954f572d..277452f5a 100644
--- a/src/main/java/at/hannibal2/skyhanni/test/command/ErrorManager.kt
+++ b/src/main/java/at/hannibal2/skyhanni/test/command/ErrorManager.kt
@@ -47,16 +47,25 @@ object ErrorManager {
} ?: "Error id not found!")
}
+ @Deprecated("Use data as well", ReplaceWith("logErrorStateWithData()"))
fun logErrorState(userMessage: String, internalMessage: String) {
- logError(IllegalStateException(internalMessage), userMessage)
+ logError(IllegalStateException(internalMessage), userMessage, false)
}
- // we love java
- fun logError(throwable: Throwable, message: String) {
- logError(throwable, message, false)
+ fun logErrorStateWithData(userMessage: String, internalMessage: String, vararg extraData: Pair<String, Any?>) {
+ logError(IllegalStateException(internalMessage), userMessage, false, *extraData)
}
- fun logError(throwable: Throwable, message: String, ignoreErrorCache: Boolean) {
+ fun logError(throwable: Throwable, message: String, vararg extraData: Pair<String, Any?>) {
+ logError(throwable, message, false, *extraData)
+ }
+
+ fun logError(
+ throwable: Throwable,
+ message: String,
+ ignoreErrorCache: Boolean,
+ vararg extraData: Pair<String, Any?>
+ ) {
val error = Error(message, throwable)
error.printStackTrace()
Minecraft.getMinecraft().thePlayer ?: return
@@ -73,10 +82,12 @@ object ErrorManager {
val stackTrace = throwable.getCustomStackTrace(false).joinToString("\n").removeSpam()
val randomId = UUID.randomUUID().toString()
+ val extraDataString = buildExtraDataString(extraData)
val rawMessage = message.removeColor()
- errorMessages[randomId] = "```\nSkyHanni ${SkyHanniMod.version}: $rawMessage\n \n$stackTrace\n```"
+ errorMessages[randomId] =
+ "```\nSkyHanni ${SkyHanniMod.version}: $rawMessage\n \n$stackTrace\n$extraDataString```"
fullErrorMessages[randomId] =
- "```\nSkyHanni ${SkyHanniMod.version}: $rawMessage\n(full stack trace)\n \n$fullStackTrace\n```"
+ "```\nSkyHanni ${SkyHanniMod.version}: $rawMessage\n(full stack trace)\n \n$fullStackTrace\n$extraDataString```"
LorenzUtils.clickableChat(
"§c[SkyHanni-${SkyHanniMod.version}]: $message§c. Click here to copy the error into the clipboard.",
@@ -84,6 +95,28 @@ object ErrorManager {
false
)
}
+
+ private fun buildExtraDataString(extraData: Array<out Pair<String, Any?>>): String {
+ val extraDataString = if (extraData.isNotEmpty()) {
+ val builder = StringBuilder()
+ for ((key, value) in extraData) {
+ builder.append(key)
+ builder.append(": ")
+ if (value is Iterable<*>) {
+ builder.append("\n")
+ for (line in value) {
+ builder.append(" - '$line'")
+ builder.append("\n")
+ }
+ } else {
+ builder.append("'$value'")
+ }
+ builder.append("\n")
+ }
+ "\nExtra data:\n$builder"
+ } else ""
+ return extraDataString
+ }
}
private fun Throwable.getCustomStackTrace(full: Boolean, parent: List<String> = emptyList()): List<String> = buildList {