From e7bfb53c5850147beeaefa6f3a575fee97893628 Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 21 Aug 2022 21:37:55 -0400 Subject: [PATCH] Try catch around all mod API initializations --- .../AchievementsPlus/AchievementHandler.cs | 52 +++++++++++-------- .../OWRichPresence/RichPresenceHandler.cs | 25 ++++++--- .../OtherMods/VoiceActing/VoiceHandler.cs | 29 ++++++++--- 3 files changed, 68 insertions(+), 38 deletions(-) diff --git a/NewHorizons/OtherMods/AchievementsPlus/AchievementHandler.cs b/NewHorizons/OtherMods/AchievementsPlus/AchievementHandler.cs index bc26a64b..32942654 100644 --- a/NewHorizons/OtherMods/AchievementsPlus/AchievementHandler.cs +++ b/NewHorizons/OtherMods/AchievementsPlus/AchievementHandler.cs @@ -1,6 +1,7 @@ using NewHorizons.External.Configs; using NewHorizons.Utility; using OWML.ModHelper; +using System; using System.Collections.Generic; using System.Linq; @@ -16,30 +17,37 @@ namespace NewHorizons.OtherMods.AchievementsPlus public static void Init() { - API = Main.Instance.ModHelper.Interaction.TryGetModApi("xen.AchievementTracker"); - - if (API == null) + try { - Logger.LogVerbose("Achievements+ isn't installed"); - Enabled = false; - return; + API = Main.Instance.ModHelper.Interaction.TryGetModApi("xen.AchievementTracker"); + + if (API == null) + { + Logger.LogVerbose("Achievements+ isn't installed"); + Enabled = false; + return; + } + + Enabled = true; + + _achievements = new List(); + + // Register base NH achievements + NH.WarpDriveAchievement.Init(); + NH.VesselWarpAchievement.Init(); + NH.MultipleSystemAchievement.Init(); + NH.EatenOutsideBrambleAchievement.Init(); + NH.NewFrequencyAchievement.Init(); + NH.ProbeLostAchievement.Init(); + + API.RegisterTranslationsFromFiles(Main.Instance, "Assets/translations"); + + GlobalMessenger.AddListener("DialogueConditionChanged", OnDialogueConditionChanged); + } + catch(Exception ex) + { + Logger.LogError($"Achievements+ handler failed to initialize: {ex}"); } - - Enabled = true; - - _achievements = new List(); - - // Register base NH achievements - NH.WarpDriveAchievement.Init(); - NH.VesselWarpAchievement.Init(); - NH.MultipleSystemAchievement.Init(); - NH.EatenOutsideBrambleAchievement.Init(); - NH.NewFrequencyAchievement.Init(); - NH.ProbeLostAchievement.Init(); - - API.RegisterTranslationsFromFiles(Main.Instance, "Assets/translations"); - - GlobalMessenger.AddListener("DialogueConditionChanged", OnDialogueConditionChanged); } public static void OnDestroy() diff --git a/NewHorizons/OtherMods/OWRichPresence/RichPresenceHandler.cs b/NewHorizons/OtherMods/OWRichPresence/RichPresenceHandler.cs index 2345bb5f..d1462451 100644 --- a/NewHorizons/OtherMods/OWRichPresence/RichPresenceHandler.cs +++ b/NewHorizons/OtherMods/OWRichPresence/RichPresenceHandler.cs @@ -1,6 +1,7 @@ using NewHorizons.Components; using NewHorizons.Handlers; using NewHorizons.Utility; +using System; using System.IO; using System.Linq; using UnityEngine; @@ -16,16 +17,24 @@ namespace NewHorizons.OtherMods.OWRichPresence public static void Init() { - API = Main.Instance.ModHelper.Interaction.TryGetModApi("MegaPiggy.OWRichPresence"); - - if (API == null) + try { - Logger.LogVerbose("OWRichPresence isn't installed"); - Enabled = false; - return; - } + API = Main.Instance.ModHelper.Interaction.TryGetModApi("MegaPiggy.OWRichPresence"); - Enabled = true; + if (API == null) + { + Logger.LogVerbose("OWRichPresence isn't installed"); + Enabled = false; + return; + } + + Enabled = true; + } + catch(Exception ex) + { + Logger.LogError($"OWRichPresence handler failed to initialize: {ex}"); + Enabled = false; + } } public static void SetUpPlanet(string name, GameObject go, Sector sector) diff --git a/NewHorizons/OtherMods/VoiceActing/VoiceHandler.cs b/NewHorizons/OtherMods/VoiceActing/VoiceHandler.cs index 6826e98a..65f66b79 100644 --- a/NewHorizons/OtherMods/VoiceActing/VoiceHandler.cs +++ b/NewHorizons/OtherMods/VoiceActing/VoiceHandler.cs @@ -1,4 +1,5 @@ using NewHorizons.Utility; +using System; using System.IO; using System.Linq; @@ -12,17 +13,29 @@ namespace NewHorizons.OtherMods.VoiceActing public static void Init() { - API = Main.Instance.ModHelper.Interaction.TryGetModApi("Krevace.VoiceMod"); - - if (API == null) + try { - Logger.LogVerbose("VoiceMod isn't installed"); - Enabled = false; - return; + API = Main.Instance.ModHelper.Interaction.TryGetModApi("Krevace.VoiceMod"); + + if (API == null) + { + Logger.LogVerbose("VoiceMod isn't installed"); + return; + } + + Enabled = true; + + SetUp(); } + catch (Exception ex) + { + Logger.LogError($"VoiceMod handler failed to initialize: {ex}"); + Enabled = false; + } + } - Enabled = true; - + private static void SetUp() + { foreach (var mod in Main.Instance.GetDependants().Append(Main.Instance)) { var folder = $"{mod.ModHelper.Manifest.ModFolderPath}voicemod";