66
77namespace NeoModLoader . services ;
88
9- internal static class ModReloadService
9+ /// <summary>
10+ /// Coordinates mod hot-reload workflows.
11+ /// </summary>
12+ public static class ModReloadService
1013{
14+ /// <summary>
15+ /// Recompiles and patches a reloadable mod.
16+ /// </summary>
1117 public static bool HotfixMethods ( IReloadable pMod , ModDeclare pModDeclare )
1218 {
1319 if ( ! ModReloadUtils . Prepare ( pMod , pModDeclare ) ) return false ;
@@ -16,6 +22,30 @@ public static bool HotfixMethods(IReloadable pMod, ModDeclare pModDeclare)
1622 return true ;
1723 }
1824
25+ /// <summary>
26+ /// Recompiles, patches and invokes the reload callback of a mod.
27+ /// </summary>
28+ public static bool ReloadMod ( IReloadable pMod , ModDeclare pModDeclare )
29+ {
30+ if ( ! HotfixMethods ( pMod , pModDeclare ) ) return false ;
31+ if ( pMod is IMod mod )
32+ {
33+ try
34+ {
35+ if ( ! ReloadResources ( mod ) ) return false ;
36+ ReloadLocales ( mod ) ;
37+ }
38+ catch
39+ {
40+ return false ;
41+ }
42+ }
43+ return ModReloadUtils . Reload ( ) ;
44+ }
45+
46+ /// <summary>
47+ /// Rebuilds mod resources from disk.
48+ /// </summary>
1949 public static bool ReloadResources ( IMod pMod )
2050 {
2151 MasterBuilder Builder = new ( ) ;
@@ -26,9 +56,12 @@ public static bool ReloadResources(IMod pMod)
2656 Builder . AddBuilders ( builders ) ;
2757 Builder . AddBuilders ( builders2 ) ;
2858 Builder . BuildAll ( ) ;
29- return false ;
59+ return true ;
3060 }
3161
62+ /// <summary>
63+ /// Reloads locale files from disk and applies them.
64+ /// </summary>
3265 public static void ReloadLocales ( IMod pMod )
3366 {
3467 ModCompileLoadService . LoadLocales ( pMod , pMod . GetDeclaration ( ) , true , true ) ;
0 commit comments