diff --git a/gradle.properties b/gradle.properties index 882134f..6abfaa5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ minecraft_version=1.16.2 yarn_mappings=1.16.2+build.47 loader_version=0.9.3+build.207 # Mod Properties -mod_version=1.0-SNAPSHOT +mod_version=1.0 maven_group=io.gitlab.jfronny archives_base_name=dynres # Dependencies diff --git a/src/main/java/io/gitlab/jfronny/dynres/DynRes.java b/src/main/java/io/gitlab/jfronny/dynres/DynRes.java index f89d876..5c6c687 100644 --- a/src/main/java/io/gitlab/jfronny/dynres/DynRes.java +++ b/src/main/java/io/gitlab/jfronny/dynres/DynRes.java @@ -9,11 +9,10 @@ import net.fabricmc.api.DedicatedServerModInitializer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback; +import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.gui.FabricGuiEntry; -import net.minecraft.server.MinecraftServer; import net.minecraft.server.command.CommandManager; -import net.minecraft.server.dedicated.MinecraftDedicatedServer; import net.minecraft.text.LiteralText; import java.io.File; @@ -40,13 +39,25 @@ public class DynRes implements DedicatedServerModInitializer { public void onInitializeServer() { server = new WebServer(cfg.port, cfg.maxConnections, null, new RequestHandler("resources.zip")); server.start(); + ServerLifecycleEvents.SERVER_STOPPED.register(t -> { + try { + server.close(); + server.join(); + } catch (Throwable e) { + System.err.println("Failed to stop web server"); + e.printStackTrace(); + } + }); + CommandRegistrationCallback.EVENT.register((dispatcher, dedicated) -> { if (dedicated) { - dispatcher.register(CommandManager.literal("dynres").executes(context -> { + dispatcher.register(CommandManager.literal("dynres").requires((serverCommandSource) -> serverCommandSource.hasPermissionLevel(4)) + .executes(context -> { context.getSource().sendFeedback(new LiteralText("DynRes is active. Use dynres restart to reload"), false); return Command.SINGLE_SUCCESS; })); - dispatcher.register(CommandManager.literal("dynres").then(CommandManager.literal("restart").executes(context -> { + dispatcher.register(CommandManager.literal("dynres").requires((serverCommandSource) -> serverCommandSource.hasPermissionLevel(4)) + .then(CommandManager.literal("restart").executes(context -> { try { context.getSource().sendFeedback(new LiteralText("Restarting DynRes"), true); cfg = AutoConfig.getConfigHolder(Cfg.class).getConfig();