diff --git a/ServerWrapper/src/main/java/pro/gravit/launcher/server/ServerWrapper.java b/ServerWrapper/src/main/java/pro/gravit/launcher/server/ServerWrapper.java index 24389d21..6319a3b3 100644 --- a/ServerWrapper/src/main/java/pro/gravit/launcher/server/ServerWrapper.java +++ b/ServerWrapper/src/main/java/pro/gravit/launcher/server/ServerWrapper.java @@ -142,6 +142,19 @@ public void connect() throws Exception { } ClientService.nativePath = config.nativesDir; ConfigService.serverName = config.serverName; + if(config.configServiceSettings != null) { + config.configServiceSettings.apply(); + } + } + + public void runCompatClasses() throws Throwable { + if(config.compatClasses != null) { + for (String e : config.compatClasses) { + Class clazz = classLoaderControl == null ? Class.forName(e) : classLoaderControl.getClass(e); + MethodHandle runMethod = MethodHandles.lookup().findStatic(clazz, "run", MethodType.methodType(void.class, ClassLoaderControl.class)); + runMethod.invoke(classLoaderControl); + } + } } public void run(String... args) throws Throwable { @@ -240,18 +253,9 @@ public void run(String... args) throws Throwable { } ClientService.classLoaderControl = classLoaderControl; ClientService.baseURLs = classLoaderControl.getURLs(); - if(config.configServiceSettings != null) { - config.configServiceSettings.apply(); - } LogHelper.info("Start Minecraft Server"); try { - if(config.compatClasses != null) { - for (String e : config.compatClasses) { - Class clazz = classLoaderControl.getClass(e); - MethodHandle runMethod = MethodHandles.lookup().findStatic(clazz, "run", MethodType.methodType(void.class, ClassLoaderControl.class)); - runMethod.invoke(classLoaderControl); - } - } + runCompatClasses(); LogHelper.debug("Invoke main method %s with %s", classname, launch.getClass().getName()); launch.launch(config.mainclass, config.mainmodule, Arrays.asList(real_args)); } catch (Throwable e) { diff --git a/ServerWrapper/src/main/java/pro/gravit/launcher/server/ServerWrapperInlineInitializer.java b/ServerWrapper/src/main/java/pro/gravit/launcher/server/ServerWrapperInlineInitializer.java index 178797cb..121f7a2f 100644 --- a/ServerWrapper/src/main/java/pro/gravit/launcher/server/ServerWrapperInlineInitializer.java +++ b/ServerWrapper/src/main/java/pro/gravit/launcher/server/ServerWrapperInlineInitializer.java @@ -1,9 +1,10 @@ package pro.gravit.launcher.server; public class ServerWrapperInlineInitializer { - public static void initialize() throws Exception { + public static void run() throws Throwable { ServerWrapper.wrapper = new ServerWrapper(ServerWrapper.Config.class, ServerWrapper.configFile); ServerWrapper.wrapper.initialize(); ServerWrapper.wrapper.connect(); + ServerWrapper.wrapper.runCompatClasses(); } }