From 2734724ae752d113fa2e1755b8c8ae0fade96503 Mon Sep 17 00:00:00 2001 From: YukkuriC <799433638@qq.com> Date: Fri, 14 Aug 2026 09:57:06 +0800 Subject: [PATCH] manual exception text conversion --- .../mishaps/MishapInternalException.kt | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/mishaps/MishapInternalException.kt b/Common/src/main/java/at/petrak/hexcasting/api/casting/mishaps/MishapInternalException.kt index 573b5cbb95..0070194437 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/mishaps/MishapInternalException.kt +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/mishaps/MishapInternalException.kt @@ -4,7 +4,13 @@ import at.petrak.hexcasting.api.casting.eval.CastingEnvironment import at.petrak.hexcasting.api.casting.iota.Iota import at.petrak.hexcasting.api.pigment.FrozenPigment import at.petrak.hexcasting.api.utils.TreeList +import net.minecraft.network.chat.ClickEvent +import net.minecraft.network.chat.Component +import net.minecraft.network.chat.HoverEvent +import net.minecraft.network.chat.Style import net.minecraft.world.item.DyeColor +import java.io.PrintWriter +import java.io.StringWriter class MishapInternalException(val exception: Exception) : Mishap() { override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment = @@ -15,6 +21,21 @@ class MishapInternalException(val exception: Exception) : Mishap() { return stack } - override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context) = - error("unknown", exception) + override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context): Component { + var message = Component.literal("$exception") + + // dump stack trace + val sw = StringWriter() + val pw = PrintWriter(sw) + exception.printStackTrace(pw) + val trace = sw.toString() + + message = message.withStyle( + Style.EMPTY + .withClickEvent(ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, trace)) + .withHoverEvent(HoverEvent(HoverEvent.Action.SHOW_TEXT, Component.literal(trace))) + ) + + return error("unknown", message) + } }