88import net .minecraftforge .fml .relauncher .Side ;
99
1010public class CommandConfigReload extends CommandBase {
11+ public enum ReloadPhase {
12+ PRE ,
13+ POST
14+ }
15+
16+ public interface ConfigReloader {
17+ void reload (ReloadPhase phase );
18+ }
19+
1120 private final String name ;
1221 private final Class <?> configClass ;
13- private final Runnable runnable ;
22+ private final ConfigReloader reloader ;
1423 private final boolean isClient ;
1524 private final String successMessage ;
1625
@@ -23,15 +32,16 @@ public CommandConfigReload(String name, Class<?> configClass, Side side,
2332 this (name , configClass , null , side , successMessage );
2433 }
2534
26- public CommandConfigReload (String name , Class <?> configClass , Runnable runnable , Side side ) {
27- this (name , configClass , runnable , side , null );
35+ public CommandConfigReload (String name , Class <?> configClass ,
36+ ConfigReloader reloader , Side side ) {
37+ this (name , configClass , reloader , side , null );
2838 }
2939
30- public CommandConfigReload (String name , Class <?> configClass , Runnable runnable , Side side ,
31- String successMessage ) {
40+ public CommandConfigReload (String name , Class <?> configClass , ConfigReloader reloader ,
41+ Side side , String successMessage ) {
3242 this .name = name ;
3343 this .configClass = configClass ;
34- this .runnable = runnable ;
44+ this .reloader = reloader ;
3545 isClient = side .isClient ();
3646 this .successMessage = successMessage ;
3747 }
@@ -49,10 +59,14 @@ public String getUsage(ICommandSender sender) {
4959 @ Override
5060 public void execute (MinecraftServer server , ICommandSender sender , String [] args )
5161 throws CommandException {
62+ if (reloader != null ) {
63+ reloader .reload (ReloadPhase .PRE );
64+ }
65+
5266 ConfigManager .reloadFromDisk (configClass );
5367
54- if (runnable != null ) {
55- runnable . run ( );
68+ if (reloader != null ) {
69+ reloader . reload ( ReloadPhase . POST );
5670 }
5771
5872 if (successMessage != null && server != null && server .isDedicatedServer ()) {
0 commit comments