diff --git a/src/main/java/carpet/CarpetExtension.java b/src/main/java/carpet/CarpetExtension.java index 62bb6fe1..81ff11b3 100644 --- a/src/main/java/carpet/CarpetExtension.java +++ b/src/main/java/carpet/CarpetExtension.java @@ -46,4 +46,5 @@ public abstract class CarpetExtension */ public void onPlayerLoggedOut(PlayerEntity player) {} + default void onServerClosed(MinecraftServer server) {}; } diff --git a/src/main/java/carpet/CarpetServer.java b/src/main/java/carpet/CarpetServer.java index a0da2265..c5aa40a0 100644 --- a/src/main/java/carpet/CarpetServer.java +++ b/src/main/java/carpet/CarpetServer.java @@ -25,6 +25,7 @@ import carpet.utils.HUDController; import com.mojang.brigadier.CommandDispatcher; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.MinecraftServer; +import net.minecraft.server.network.ServerPlayerEntity; public class CarpetServer // static for now - easier to handle all around the code, its one anyways { @@ -90,5 +91,20 @@ public class CarpetServer // static for now - easier to handle all around the co extensions.forEach(e -> e.registerCommands(dispatcher)); //TestCommand.register(dispatcher); } + + public static void onPlayerLoggedIn(ServerPlayerEntity player) + { + extensions.forEach(e -> e.onPlayerLoggedIn(player)); + } + + public static void onPlayerLoggedOut(ServerPlayerEntity player) + { + extensions.forEach(e -> e.onPlayerLoggedOut(player)); + } + + public static void onServerClosed(MinecraftServer server) + { + extensions.forEach(e -> e.onServerClosed(server)); + } } diff --git a/src/main/java/carpet/mixins/MinecraftServer_coreMixin.java b/src/main/java/carpet/mixins/MinecraftServer_coreMixin.java index 4061db16..5d5e330e 100644 --- a/src/main/java/carpet/mixins/MinecraftServer_coreMixin.java +++ b/src/main/java/carpet/mixins/MinecraftServer_coreMixin.java @@ -35,4 +35,10 @@ public abstract class MinecraftServer_coreMixin { CarpetServer.onServerLoaded((MinecraftServer) (Object) this); } + + @Inject(method = "shutdown", at = @At("HEAD")) + private void serverClosed(CallbackInfo ci) + { + CarpetServer.onServerClosed((MinecraftServer) (Object) this); + } }