From 41a6d70aeecbaec1c0a6ef03db628d02d2ae6555 Mon Sep 17 00:00:00 2001 From: cpw Date: Fri, 26 Jun 2020 14:27:32 -0400 Subject: [PATCH] Tweak the server startup a bit, make sure methods that can't work because they run before a server exists explode saying so. Also fix other launch profiles. Signed-off-by: cpw --- .../fml/loading/FMLServerLaunchProvider.java | 2 +- .../minecraftforge/fml/server/ServerModLoader.java | 13 +++++++++---- .../userdev/FMLUserdevServerLaunchProvider.java | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLServerLaunchProvider.java b/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLServerLaunchProvider.java index cbb719fdc..51277fd29 100644 --- a/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLServerLaunchProvider.java +++ b/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLServerLaunchProvider.java @@ -48,7 +48,7 @@ public class FMLServerLaunchProvider extends FMLCommonLaunchHandler implements I return () -> { super.beforeStart(launchClassLoader); launchClassLoader.addTargetPackageFilter(getPackagePredicate()); - Class.forName("net.minecraft.server.MinecraftServer", true, launchClassLoader.getInstance()).getMethod("main", String[].class).invoke(null, (Object)arguments); + Class.forName("net.minecraft.server.Main", true, launchClassLoader.getInstance()).getMethod("main", String[].class).invoke(null, (Object)arguments); return null; }; } diff --git a/src/main/java/net/minecraftforge/fml/server/ServerModLoader.java b/src/main/java/net/minecraftforge/fml/server/ServerModLoader.java index 1c0ade68a..07d773d4b 100644 --- a/src/main/java/net/minecraftforge/fml/server/ServerModLoader.java +++ b/src/main/java/net/minecraftforge/fml/server/ServerModLoader.java @@ -37,6 +37,13 @@ public class ServerModLoader private static boolean hasErrors = false; public static void gatherAndInit() { + LanguageHook.loadForgeAndMCLangs(); + SidedProvider.setServer(()-> { + throw new IllegalStateException("Unable to access server yet"); + }); + LogicalSidedProvider.setServer(()-> { + throw new IllegalStateException("Unable to access server yet"); + }); try { ModLoader.get().gatherAndInitializeMods(() -> {}); } catch (LoadingFailedException e) { @@ -47,9 +54,8 @@ public class ServerModLoader public static void begin(DedicatedServer dedicatedServer) { ServerModLoader.server = dedicatedServer; - SidedProvider.setServer(()->dedicatedServer); - LogicalSidedProvider.setServer(()->dedicatedServer); - LanguageHook.loadForgeAndMCLangs(); + SidedProvider.setServer(()->ServerModLoader.server); + LogicalSidedProvider.setServer(()->ServerModLoader.server); try { ModLoader.get().loadMods(Runnable::run, (a)->{}, (a)->{}); } catch (LoadingFailedException e) { @@ -65,7 +71,6 @@ public class ServerModLoader } catch (LoadingFailedException e) { ServerModLoader.hasErrors = true; throw e; - } List warnings = ModLoader.get().getWarnings(); if (!warnings.isEmpty()) { diff --git a/src/userdev/java/net/minecraftforge/userdev/FMLUserdevServerLaunchProvider.java b/src/userdev/java/net/minecraftforge/userdev/FMLUserdevServerLaunchProvider.java index 5d729319b..b20b084a6 100644 --- a/src/userdev/java/net/minecraftforge/userdev/FMLUserdevServerLaunchProvider.java +++ b/src/userdev/java/net/minecraftforge/userdev/FMLUserdevServerLaunchProvider.java @@ -51,7 +51,7 @@ public class FMLUserdevServerLaunchProvider extends FMLUserdevLaunchProvider imp super.beforeStart(launchClassLoader); launchClassLoader.addTargetPackageFilter(getPackagePredicate()); Thread.currentThread().setContextClassLoader(launchClassLoader.getInstance()); - Class.forName("net.minecraft.server.MinecraftServer", true, launchClassLoader.getInstance()).getMethod("main", String[].class).invoke(null, (Object)arguments); + Class.forName("net.minecraft.server.Main", true, launchClassLoader.getInstance()).getMethod("main", String[].class).invoke(null, (Object)arguments); return null; }; }