diff --git a/src/main/java/dev/zenfyr/andromeda/bootstrap/ModuleManager.java b/src/main/java/dev/zenfyr/andromeda/bootstrap/ModuleManager.java index 357bd7f9..98d9498a 100644 --- a/src/main/java/dev/zenfyr/andromeda/bootstrap/ModuleManager.java +++ b/src/main/java/dev/zenfyr/andromeda/bootstrap/ModuleManager.java @@ -56,6 +56,8 @@ public class ModuleManager { private final Map modulesByName = new LinkedHashMap<>(); private final Map moduleByMixinPkg = new HashMap<>(); + private Throwable delayed; + private static ModuleManager instance; public ModuleManager() { @@ -216,11 +218,18 @@ public class ModuleManager { try { manager.onInitialize(); } catch (Throwable e) { - throw new RuntimeException("Failed to initialize the module manager!", e); + manager.delayed = e; + log.error("Failed to initialize the module manager!", e); } } } + public void checkLoad() { + if (this.delayed != null) { + throw Util.wrap("Failed to initialize the module manager!", this.delayed); + } + } + private void printModuleStats() { if (!this.loaded().isEmpty()) { Map> categories = Utilities.supply( diff --git a/src/main/java/dev/zenfyr/andromeda/common/Andromeda.java b/src/main/java/dev/zenfyr/andromeda/common/Andromeda.java index 048fd468..66476d12 100644 --- a/src/main/java/dev/zenfyr/andromeda/common/Andromeda.java +++ b/src/main/java/dev/zenfyr/andromeda/common/Andromeda.java @@ -70,6 +70,7 @@ public class Andromeda implements ModInitializer { public void onInitialize() { instance = this; var manager = ModuleManager.get(); + manager.checkLoad(); // Load and save configs. Saving ensures that the `main` part is created. MAIN.loadAll();