diff --git a/common/src/main/java/com/seibel/distanthorizons/common/AbstractModInitializer.java b/common/src/main/java/com/seibel/distanthorizons/common/AbstractModInitializer.java index 3e064e479..5f4413589 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/AbstractModInitializer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/AbstractModInitializer.java @@ -21,10 +21,8 @@ import com.seibel.distanthorizons.core.jar.updater.SelfUpdater; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.render.renderer.AbstractDebugWireframeRenderer; import com.seibel.distanthorizons.core.render.renderer.StubDebugWireframeRenderer; -import com.seibel.distanthorizons.core.util.NativeDialogUtil; +import com.seibel.distanthorizons.common.wrappers.gui.NativeDialogUtil; import com.seibel.distanthorizons.core.util.ThreadUtil; -import com.seibel.distanthorizons.core.util.threading.DhThreadFactory; -import com.seibel.distanthorizons.core.util.threading.ThreadPoolUtil; import com.seibel.distanthorizons.core.wrapperInterfaces.IVersionConstants; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.IIrisAccessor; @@ -375,10 +373,10 @@ public abstract class AbstractModInitializer renderApi = versionConstants.getDefaultRenderingApi(); } - // Iris only supports nataive OpenGL + // Iris only supports native OpenGL if (renderApi != EDhApiRenderApi.OPEN_GL) { - String irisUnsupportedMessage = "Iris doesn't support DH when using the ["+EDhApiRenderApi.BLAZE_3D+"] rendering API, this will need to be fixed on Iris' end. As a temporary fix please change the rendering API to ["+EDhApiRenderApi.OPEN_GL+"] in DH's config file."; + String irisUnsupportedMessage = "Iris doesn't support DH when using the ["+EDhApiRenderApi.BLAZE_3D+"] rendering API, this will need to be fixed on Iris end. As a temporary fix please change the rendering API to ["+EDhApiRenderApi.OPEN_GL+"] in the DH config file."; LOGGER.fatal(irisUnsupportedMessage); NativeDialogUtil.showDialog(ModInfo.READABLE_NAME, irisUnsupportedMessage, "ok", "error"); diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftClientWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftClientWrapper.java index 408ba1d15..3b56dc920 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftClientWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftClientWrapper.java @@ -22,6 +22,7 @@ package com.seibel.distanthorizons.common.wrappers.minecraft; import java.io.File; import com.mojang.blaze3d.platform.Window; +import com.seibel.distanthorizons.common.wrappers.gui.NativeDialogUtil; import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; import com.seibel.distanthorizons.core.file.structure.ClientOnlySaveStructure; import com.seibel.distanthorizons.core.render.RenderThreadTaskHandler; @@ -370,17 +371,28 @@ public class MinecraftClientWrapper implements IMinecraftClientWrapper, IMinecra public void crashMinecraft(String errorMessage, Throwable exception) { LOGGER.fatal(ModInfo.READABLE_NAME + " had the following error: [" + errorMessage + "]. Crashing Minecraft...", exception); - CrashReport report = new CrashReport(errorMessage, exception); - #if MC_VER < MC_1_20_4 - Minecraft.crash(report); - #else - MINECRAFT.delayCrash(report); - #endif + + // Only crash once the renderer has been set up. + // If the renderer hasn't been set up yet crashing MC will + // cause a Blaze3D/UI error instead of the error we're trying to send. + executeOnRenderThread(() -> + { + CrashReport report = new CrashReport(errorMessage, exception); + #if MC_VER < MC_1_20_4 + Minecraft.crash(report); + #else + MINECRAFT.delayCrash(report); + #endif + }); } @Override public void executeOnRenderThread(Runnable runnable) { MINECRAFT.execute(runnable); } + @Override + public void showDialog(String title, String message, String dialogType, String iconType) + { NativeDialogUtil.showDialog(title, message, dialogType, iconType); } + //endregion