public static void Initialize() { deserializer = new DeserializerBuilder().WithNamingConvention(PascalCaseNamingConvention.Instance).Build(); definitions = new List <ModDefinition>(); Mods = new Dictionary <string, IkenFelineMod>(); ModList = new Dictionary <string, ModManifest>(); patchMap = new Dictionary <string, HashSet <string> >(); patchSet = new HashSet <string>(); assemblyPaths = new List <string>(); assemblies = new Dictionary <string, Assembly>(); LogManager.Logger.Log("Collecting mod list..."); CollectMods(); LogManager.Logger.Log("Collecting patches..."); CollectPatches(); if (patchMap.Count > 0) { LogManager.Logger.Log("Applying patches..."); assemblyPaths = ModPatcher.Patch(patchMap); } LogManager.Logger.Log("Loading patched assemblies..."); LoadAssemblies(); LogManager.Logger.Log("Loading main mods..."); LoadMods(); LogManager.Logger.Log("Loading assets..."); AssetLoader.LoadAssets(); LogManager.Logger.Log("Triggering post-load event..."); foreach (var mod in Mods.Values) { mod.PostLoad(); } LogManager.Logger.Log("Registering hooks..."); ModHooks.CreateHooks(); }