From 9f3141ea1630221b254c71bee82b95d723991d22 Mon Sep 17 00:00:00 2001 From: cpw Date: Wed, 9 Sep 2020 19:04:05 -0400 Subject: [PATCH] More crash reporting tweaks. Don't crash when trying to show warnings. Also, put the exception name in the error screen on the second line! Signed-off-by: cpw --- src/main/java/net/minecraftforge/fml/ForgeI18n.java | 6 +++--- .../fml/client/gui/screen/LoadingErrorScreen.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/minecraftforge/fml/ForgeI18n.java b/src/main/java/net/minecraftforge/fml/ForgeI18n.java index e2758252d..8a0e08394 100644 --- a/src/main/java/net/minecraftforge/fml/ForgeI18n.java +++ b/src/main/java/net/minecraftforge/fml/ForgeI18n.java @@ -59,7 +59,7 @@ public class ForgeI18n { customFactories.put("lower", (name, formatString, locale) -> new CustomReadOnlyFormat((stringBuffer, objectToParse) -> stringBuffer.append(StringUtils.toLowerCase(String.valueOf(objectToParse))))); // {0,upper> -> uppercase supplied string customFactories.put("upper", (name, formatString, locale) -> new CustomReadOnlyFormat((stringBuffer, objectToParse) -> stringBuffer.append(StringUtils.toUpperCase(String.valueOf(objectToParse))))); - // {0,exc,class} -> class of exception; {0,exc,msg} -> message from exception + // {0,exc,cls} -> class of exception; {0,exc,msg} -> message from exception customFactories.put("exc", (name, formatString, locale) -> new CustomReadOnlyFormat((stringBuffer, objectToParse) -> parseException(formatString, stringBuffer, objectToParse))); // {0,vr} -> transform VersionRange into cleartext string using fml.messages.version.restriction.* strings customFactories.put("vr", (name, formatString, locale) -> new CustomReadOnlyFormat(((stringBuffer, o) -> MavenVersionStringHelper.parseVersionRange(formatString, stringBuffer, o)))); @@ -72,9 +72,9 @@ public class ForgeI18n { private static void parseException(final String formatString, final StringBuffer stringBuffer, final Object objectToParse) { Throwable t = (Throwable) objectToParse; if (Objects.equals(formatString, "msg")) { - stringBuffer.append(t.getMessage()); + stringBuffer.append(t.getClass().getName()).append(": ").append(t.getMessage()); } else if (Objects.equals(formatString, "cls")) { - stringBuffer.append(t.getClass()); + stringBuffer.append(t.getClass().getName()); } } diff --git a/src/main/java/net/minecraftforge/fml/client/gui/screen/LoadingErrorScreen.java b/src/main/java/net/minecraftforge/fml/client/gui/screen/LoadingErrorScreen.java index 65de73982..e3d89b3e6 100644 --- a/src/main/java/net/minecraftforge/fml/client/gui/screen/LoadingErrorScreen.java +++ b/src/main/java/net/minecraftforge/fml/client/gui/screen/LoadingErrorScreen.java @@ -66,7 +66,7 @@ public class LoadingErrorScreen extends ErrorScreen { this.modLoadErrors = loadingException == null ? Collections.emptyList() : loadingException.getErrors(); this.modsDir = FMLPaths.MODSDIR.get(); this.logFile = FMLPaths.GAMEDIR.get().resolve(Paths.get("logs","latest.log")); - this.dumpedLocation = dumpedLocation.toPath(); + this.dumpedLocation = dumpedLocation != null ? dumpedLocation.toPath() : null; } @Override