diff --git a/libjf-web-v0/src/main/java/io/gitlab/jfronny/libjf/web/api/WebServer.java b/libjf-web-v0/src/main/java/io/gitlab/jfronny/libjf/web/api/WebServer.java index 1dc465d..3654962 100644 --- a/libjf-web-v0/src/main/java/io/gitlab/jfronny/libjf/web/api/WebServer.java +++ b/libjf-web-v0/src/main/java/io/gitlab/jfronny/libjf/web/api/WebServer.java @@ -1,5 +1,7 @@ package io.gitlab.jfronny.libjf.web.api; +import io.gitlab.jfronny.libjf.web.impl.JfWeb; + import java.io.IOException; import java.nio.file.Path; @@ -14,4 +16,8 @@ public interface WebServer { void stop(); void restart(); boolean isActive(); + + static WebServer getInstance() { + return JfWeb.SERVER; + } } diff --git a/libjf-web-v0/src/main/java/io/gitlab/jfronny/libjf/web/impl/JfWeb.java b/libjf-web-v0/src/main/java/io/gitlab/jfronny/libjf/web/impl/JfWeb.java index 8d366ff..878ac93 100644 --- a/libjf-web-v0/src/main/java/io/gitlab/jfronny/libjf/web/impl/JfWeb.java +++ b/libjf-web-v0/src/main/java/io/gitlab/jfronny/libjf/web/impl/JfWeb.java @@ -16,25 +16,25 @@ import net.minecraft.server.command.ServerCommandSource; import net.minecraft.text.LiteralText; public class JfWeb implements ClientModInitializer, DedicatedServerModInitializer, ModInitializer { - public final WebServer server; - public JfWeb() { + public static final WebServer SERVER; + static { JfWebConfig.ensureValidPort(); - server = new JfWebServer(JfWebConfig.port, JfWebConfig.maxConnections); + SERVER = new JfWebServer(JfWebConfig.port, JfWebConfig.maxConnections); } @Override public void onInitializeClient() { if (isEnabled()) { - ClientLifecycleEvents.CLIENT_STARTED.register(client -> server.restart()); - ClientLifecycleEvents.CLIENT_STOPPING.register(client -> server.stop()); + ClientLifecycleEvents.CLIENT_STARTED.register(client -> SERVER.restart()); + ClientLifecycleEvents.CLIENT_STOPPING.register(client -> SERVER.stop()); } } @Override public void onInitializeServer() { if (isEnabled()) { - ServerLifecycleEvents.SERVER_STARTED.register(client -> server.restart()); - ServerLifecycleEvents.SERVER_STOPPED.register(client -> server.stop()); + ServerLifecycleEvents.SERVER_STARTED.register(client -> SERVER.restart()); + ServerLifecycleEvents.SERVER_STOPPED.register(client -> SERVER.stop()); } } @@ -46,7 +46,7 @@ public class JfWeb implements ClientModInitializer, DedicatedServerModInitialize LiteralArgumentBuilder web = CommandManager.literal("web"); base.then(web); web.executes(context -> { - if (server.isActive()) { + if (SERVER.isActive()) { context.getSource().sendFeedback(new LiteralText("LibWeb is active. Use libweb restart to reload"), false); } else { @@ -57,7 +57,7 @@ public class JfWeb implements ClientModInitializer, DedicatedServerModInitialize web.then(CommandManager.literal("restart").executes(context -> { try { context.getSource().sendFeedback(new LiteralText("Restarting LibWeb"), true); - server.restart(); + SERVER.restart(); } catch (Exception e) { LibJf.LOGGER.error("Failed to run restart command", e); @@ -68,7 +68,7 @@ public class JfWeb implements ClientModInitializer, DedicatedServerModInitialize dispatcher.register(base); }); } - Runtime.getRuntime().addShutdownHook(new Thread(server::stop)); + Runtime.getRuntime().addShutdownHook(new Thread(SERVER::stop)); } private boolean isEnabled() {