Merge pull request from SquidDev/feature/server-stop

Add an event for when the server is about to stop
This commit is contained in:
Adrian Siekierka 2018-12-20 20:57:34 +01:00 committed by GitHub
commit eb8c0d4884
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 1 deletions
src
main/java/net/fabricmc/fabric
test
java/net/fabricmc/fabric/events
resources

View file

@ -24,6 +24,7 @@ import java.util.function.Consumer;
public final class ServerEvent {
public static final HandlerRegistry<Consumer<MinecraftServer>> START = new HandlerArray<>(Consumer.class);
public static final HandlerRegistry<Consumer<MinecraftServer>> STOP = new HandlerArray<>(Consumer.class);
private ServerEvent() {

View file

@ -34,4 +34,11 @@ public class MixinMinecraftServer {
handler.accept((MinecraftServer) (Object) this);
}
}
@Inject(at = @At("HEAD"), method = "shutdown")
public void beforeShutdownServer(CallbackInfo info) {
for (Consumer<MinecraftServer> handler : ((HandlerArray<Consumer<MinecraftServer>>) ServerEvent.STOP).getBackingArray()) {
handler.accept((MinecraftServer) (Object) this);
}
}
}

View file

@ -0,0 +1,15 @@
package net.fabricmc.fabric.events;
import net.fabricmc.api.ModInitializer;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class ServerEventMod implements ModInitializer {
private static final Logger LOGGER = LogManager.getLogger();
@Override
public void onInitialize() {
ServerEvent.START.register(server -> LOGGER.info("Server starting (" + server + ")"));
ServerEvent.STOP.register(server -> LOGGER.info("Server stopping (" + server + ")"));
}
}

View file

@ -6,6 +6,7 @@
"description": "A series of test mods to check Fabric works.",
"license": "Apache-2.0",
"initializers": [
"net.fabricmc.fabric.colormapper.ColorProviderMod"
"net.fabricmc.fabric.colormapper.ColorProviderMod",
"net.fabricmc.fabric.events.ServerEventMod"
]
}