From 77c8494166ae426ef7b116109fd7c80204f28812 Mon Sep 17 00:00:00 2001 From: alexcrea Date: Tue, 3 Mar 2026 04:23:07 +0100 Subject: [PATCH] Add last detected error in diag optional --- .../cuanvil/command/DiagnosticExecutor.kt | 17 +++++++++++++++++ .../xyz/alexcrea/cuanvil/util/MetricsUtil.kt | 3 +++ 2 files changed, 20 insertions(+) diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/command/DiagnosticExecutor.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/command/DiagnosticExecutor.kt index e550bd1..a89318c 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/command/DiagnosticExecutor.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/command/DiagnosticExecutor.kt @@ -29,6 +29,7 @@ import xyz.alexcrea.cuanvil.dependency.packet.ProtocoLibWrapper import xyz.alexcrea.cuanvil.dependency.packet.versions.PaperPacketManager import xyz.alexcrea.cuanvil.enchant.CAEnchantmentRegistry import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener +import xyz.alexcrea.cuanvil.util.MetricsUtil import java.util.* import java.util.stream.Collectors @@ -59,6 +60,7 @@ class DiagnosticExecutor: CASubCommand() { PLUGIN_PRIVACY("plugin_privacy"), NO_MERGE_TEST("no_merge_test"), FULL_ENCHANTMENT_DATA("full_enchantment_data"), + INCLUDE_LAST_ERROR("include_last_error"), } private fun fetchParameters(args: Array): EnumSet { @@ -154,6 +156,8 @@ class DiagnosticExecutor: CASubCommand() { .append(System.getProperty("os.arch")) } + stb.append("\nHad detect error: ").append(if(MetricsUtil.lastError != null) "Yes" else "No") + if(!params.contains(DiagParams.PLUGIN_PRIVACY)) { pluginListDiag(sender, stb) } @@ -168,6 +172,10 @@ class DiagnosticExecutor: CASubCommand() { if(params.contains(DiagParams.FULL_ENCHANTMENT_DATA)){ fullEnchantmentData(stb) } + + if(params.contains(DiagParams.INCLUDE_LAST_ERROR)){ + includeLastError(stb) + } } private fun testMerge(player: Player, stb: StringBuilder) { @@ -323,5 +331,14 @@ class DiagnosticExecutor: CASubCommand() { }") } + + private fun includeLastError(stb: StringBuilder) { + val e = MetricsUtil.lastError ?: return + + stb.append("\n\nLast stack trace: ${e.stackTraceToString()}") + + + + } } \ No newline at end of file diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/util/MetricsUtil.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/util/MetricsUtil.kt index ad441a5..07e21fe 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/util/MetricsUtil.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/util/MetricsUtil.kt @@ -52,8 +52,11 @@ object MetricsUtil { FAST_STATS_METRICS?.shutdown() } + var lastError: Throwable? = null + fun trackError(e: Throwable) { ERROR_TRACKER?.trackError(e) + lastError = e } fun trackError(message: String) {