diff --git a/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java b/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java index f2f9973d3..95acb7bce 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java @@ -115,19 +115,21 @@ public class Initializer throw new RuntimeException(e); } - if (MC_CLIENT != null) - { - // attempt to set up Swing so we can display dialogs (popup windows) - System.setProperty("java.awt.headless", "false"); - if (GraphicsEnvironment.isHeadless()) - { - LOGGER.warn("Java.awt.headless is false. This means Distant Horizons can't display error and info dialog windows."); - } - else - { - LOGGER.info("Java.awt.headless set to true. Distant Horizons can correctly display error and info dialog windows."); - } - } + // This code has been disabled since it can cause Mac + // to lock up and refuse the load (there's a bug with Java.awt texture loading) + //if (MC_CLIENT != null) + //{ + // // attempt to set up Swing so we can display dialogs (popup windows) + // System.setProperty("java.awt.headless", "false"); + // if (GraphicsEnvironment.isHeadless()) + // { + // LOGGER.warn("Java.awt.headless is false. This means Distant Horizons can't display error and info dialog windows."); + // } + // else + // { + // LOGGER.info("Java.awt.headless set to true. Distant Horizons can correctly display error and info dialog windows."); + // } + //} // link Core's config to the API DhApi.Delayed.configs = DhApiConfig.INSTANCE; diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java index 2fd03caa4..06207d222 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java @@ -37,6 +37,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftCli import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftSharedWrapper; import com.seibel.distanthorizons.coreapi.ModInfo; import org.apache.logging.log4j.Logger; +import org.lwjgl.util.tinyfd.TinyFileDialogs; import javax.swing.*; import java.awt.*; @@ -1098,7 +1099,9 @@ public class Config { if (!GraphicsEnvironment.isHeadless()) { - JOptionPane.showMessageDialog(null, "Button pressed!", "UITester dialog", JOptionPane.INFORMATION_MESSAGE); + LOGGER.info("Attempting to show tinyfd message box..."); + boolean buttonPress = TinyFileDialogs.tinyfd_messageBox("Button pressed!", "UITester dialog", "ok", "info", false); + LOGGER.info("dialog returned with ["+(buttonPress ? "TRUE" : "FALSE")+"]"); } else { diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/gui/JavaScreenHandlerScreen.java b/core/src/main/java/com/seibel/distanthorizons/core/config/gui/JavaScreenHandlerScreen.java index 06c626c1f..72c34141f 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/config/gui/JavaScreenHandlerScreen.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/config/gui/JavaScreenHandlerScreen.java @@ -37,6 +37,9 @@ public class JavaScreenHandlerScreen extends AbstractScreen static { + // Note: this code can cause Mac + // to lock up and refuse the load (there's a bug with Java.awt texture loading) + // Needs to be called before any Swing code is called, otherwise // Swing will get stuck thinking it's headless System.setProperty("java.awt.headless", "false"); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/jar/JarMain.java b/core/src/main/java/com/seibel/distanthorizons/core/jar/JarMain.java index 20de459a0..952fa149c 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/jar/JarMain.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/jar/JarMain.java @@ -31,6 +31,7 @@ import com.seibel.distanthorizons.core.jar.installer.WebDownloader; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.LoggerContext; +import org.lwjgl.util.tinyfd.TinyFileDialogs; import javax.swing.*; import java.awt.*; @@ -313,7 +314,7 @@ public class JarMain installMod.addActionListener(e -> { if (minecraftDirPop.getSelectedFile() == null) { - JOptionPane.showMessageDialog(frame, "Please select your install directory", ModInfo.READABLE_NAME, JOptionPane.WARNING_MESSAGE); + TinyFileDialogs.tinyfd_messageBox(ModInfo.READABLE_NAME, "Please select your install directory", "ok", "warning", false); return; } @@ -327,11 +328,11 @@ public class JarMain ModInfo.NAME + "-" + ModrinthGetter.releaseNames.get(downloadID.get()) + ".jar" ).toFile()); - JOptionPane.showMessageDialog(frame, "Installation done. \nYou can now close the installer", ModInfo.READABLE_NAME, JOptionPane.INFORMATION_MESSAGE); + TinyFileDialogs.tinyfd_messageBox(ModInfo.READABLE_NAME, "Installation done. \nYou can now close the installer", "ok", "info", false); } catch (Exception f) { - JOptionPane.showMessageDialog(frame, "Download failed. Check your internet connection \nStacktrace: " + f.getMessage(), ModInfo.READABLE_NAME, JOptionPane.ERROR_MESSAGE); + TinyFileDialogs.tinyfd_messageBox(ModInfo.READABLE_NAME, "Download failed. Check your internet connection \nStacktrace: " + f.getMessage(), "error", "info", false); } }); frame.add(installMod); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/jar/updater/SelfUpdater.java b/core/src/main/java/com/seibel/distanthorizons/core/jar/updater/SelfUpdater.java index e07752a2f..90c826fba 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/jar/updater/SelfUpdater.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/jar/updater/SelfUpdater.java @@ -33,6 +33,7 @@ import com.seibel.distanthorizons.coreapi.ModInfo; import com.seibel.distanthorizons.coreapi.util.StringUtil; import com.seibel.distanthorizons.coreapi.util.jar.DeleteOnUnlock; import org.apache.logging.log4j.Logger; +import org.lwjgl.util.tinyfd.TinyFileDialogs; import javax.swing.*; import java.awt.*; @@ -223,7 +224,7 @@ public class SelfUpdater String message = ModInfo.READABLE_NAME + " updated, this will be applied on game restart."; if (!GraphicsEnvironment.isHeadless()) { - JOptionPane.showMessageDialog(null, message, ModInfo.READABLE_NAME, JOptionPane.INFORMATION_MESSAGE); + TinyFileDialogs.tinyfd_messageBox(ModInfo.READABLE_NAME, message, "ok", "info", false); } else { @@ -279,7 +280,7 @@ public class SelfUpdater String message = ModInfo.READABLE_NAME + " updated, this will be applied on game restart."; if (!GraphicsEnvironment.isHeadless()) { - JOptionPane.showMessageDialog(null, message, ModInfo.READABLE_NAME, JOptionPane.INFORMATION_MESSAGE); + TinyFileDialogs.tinyfd_messageBox(ModInfo.READABLE_NAME, message, "ok", "info", false); } else {