From fcca51a8d97a52cfa7b775aaa04b9ede622fb1e1 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 24 Mar 2024 11:53:46 -0500 Subject: [PATCH] Fix missing indium messy crash error when java.awt is headless --- coreSubProjects | 2 +- .../distanthorizons/fabric/FabricMain.java | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/coreSubProjects b/coreSubProjects index 661f286b7..bbe5ae9b7 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 661f286b77228fb051d07edd93abb904f4501795 +Subproject commit bbe5ae9b7c6dd1ec29ad17b2e0a92563e8fd132e diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricMain.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricMain.java index 73ef942b3..bf77cd8f6 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricMain.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricMain.java @@ -25,6 +25,7 @@ import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.config.ConfigBase; import com.seibel.distanthorizons.core.dependencyInjection.ModAccessorInjector; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; +import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.*; import com.seibel.distanthorizons.coreapi.ModInfo; @@ -37,8 +38,10 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.minecraft.commands.CommandSourceStack; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; +import org.apache.logging.log4j.Logger; import javax.swing.*; +import java.awt.*; import java.util.function.Consumer; /** @@ -50,6 +53,8 @@ public class FabricMain extends AbstractModInitializer implements ClientModIniti { private static final ResourceLocation INITIAL_PHASE = ResourceLocation.tryParse("distanthorizons:dedicated_server_initial"); + private static final Logger LOGGER = DhLoggerBuilder.getLogger(); + @Override @@ -72,10 +77,13 @@ public class FabricMain extends AbstractModInitializer implements ClientModIniti // If sodium is installed Indium is also necessary in order to use the Fabric rendering API if (!modChecker.isModLoaded("indium")) { - // People don't read the crash logs!!! - // So, just put a notification, so they hopefully realise what's the problem (and dont just open issues) - System.setProperty("java.awt.headless", "false"); // Required to make it work - JOptionPane.showMessageDialog(null, ModInfo.READABLE_NAME + " now relies on Indium to work with Sodium.\nPlease download Indium from https://modrinth.com/mod/indium", ModInfo.READABLE_NAME, JOptionPane.INFORMATION_MESSAGE); + String indiumMissingMessage = ModInfo.READABLE_NAME + " now relies on Indium to work with Sodium.\nPlease download Indium from https://modrinth.com/mod/indium"; + LOGGER.fatal(indiumMissingMessage); + + if (!GraphicsEnvironment.isHeadless()) + { + JOptionPane.showMessageDialog(null, indiumMissingMessage, ModInfo.READABLE_NAME, JOptionPane.INFORMATION_MESSAGE); + } IMinecraftClientWrapper mc = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class); String errorMessage = "loading Distant Horizons. Distant Horizons requires Indium in order to run with Sodium.";