1
0
mirror of https://github.com/Suiranoil/SkinRestorer.git synced 2026-01-16 04:42:12 +00:00

add OnServerStopped event

This commit is contained in:
2025-07-24 03:20:16 +03:00
parent 01a045541c
commit 11ecf88eb2
4 changed files with 32 additions and 0 deletions

View File

@@ -19,6 +19,7 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.level.storage.LevelResource; import net.minecraft.world.level.storage.LevelResource;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -37,6 +38,7 @@ public final class SkinRestorer {
private static Path configDir; private static Path configDir;
private static Config config; private static Config config;
private static TickedScheduler tickedScheduler; private static TickedScheduler tickedScheduler;
private static MinecraftServer minecraftServer;
private SkinRestorer() {} private SkinRestorer() {}
@@ -60,6 +62,10 @@ public final class SkinRestorer {
return SkinRestorer.tickedScheduler; return SkinRestorer.tickedScheduler;
} }
public static @Nullable MinecraftServer getMinecraftServer() {
return SkinRestorer.minecraftServer;
}
public static Optional<SkinProvider> getProvider(String name) { public static Optional<SkinProvider> getProvider(String name) {
return Optional.ofNullable(SkinRestorer.providersRegistry.get(name)); return Optional.ofNullable(SkinRestorer.providersRegistry.get(name));
} }
@@ -173,6 +179,14 @@ public final class SkinRestorer {
SkinRestorer.skinStorage = new SkinStorage(new SkinIO(worldSkinDirectory)); SkinRestorer.skinStorage = new SkinStorage(new SkinIO(worldSkinDirectory));
SkinRestorer.tickedScheduler = new TickedScheduler(server); SkinRestorer.tickedScheduler = new TickedScheduler(server);
server.addTickable(SkinRestorer.tickedScheduler); server.addTickable(SkinRestorer.tickedScheduler);
SkinRestorer.minecraftServer = server;
}
public static void onServerStopped(MinecraftServer server) {
SkinRestorer.skinStorage = null;
SkinRestorer.tickedScheduler = null;
SkinRestorer.minecraftServer = null;
} }
public static void onCommandRegister(CommandDispatcher<CommandSourceStack> dispatcher) { public static void onCommandRegister(CommandDispatcher<CommandSourceStack> dispatcher) {

View File

@@ -15,4 +15,10 @@ public abstract class MinecraftServerMixin {
private void onServerStarted(CallbackInfo ci) { private void onServerStarted(CallbackInfo ci) {
SkinRestorer.Events.onServerStarted((MinecraftServer) (Object) this); SkinRestorer.Events.onServerStarted((MinecraftServer) (Object) this);
} }
@Inject(method = "runServer",
at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;onServerExit()V"))
private void onServerStopped(CallbackInfo ci) {
SkinRestorer.Events.onServerStopped((MinecraftServer) (Object) this);
}
} }

View File

@@ -4,6 +4,7 @@ import net.lionarius.skinrestorer.SkinRestorer;
import net.lionarius.skinrestorer.compat.skinshuffle.SkinShuffleCompatibility; import net.lionarius.skinrestorer.compat.skinshuffle.SkinShuffleCompatibility;
import net.minecraftforge.event.RegisterCommandsEvent; import net.minecraftforge.event.RegisterCommandsEvent;
import net.minecraftforge.event.server.ServerStartedEvent; import net.minecraftforge.event.server.ServerStartedEvent;
import net.minecraftforge.event.server.ServerStoppedEvent;
import net.minecraftforge.eventbus.api.listener.SubscribeEvent; import net.minecraftforge.eventbus.api.listener.SubscribeEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
@@ -27,4 +28,9 @@ public final class SkinRestorerForge {
public static void onServerStarted(ServerStartedEvent event) { public static void onServerStarted(ServerStartedEvent event) {
SkinRestorer.Events.onServerStarted(event.getServer()); SkinRestorer.Events.onServerStarted(event.getServer());
} }
@SubscribeEvent
public static void onServerStopped(ServerStoppedEvent event) {
SkinRestorer.Events.onServerStopped(event.getServer());
}
} }

View File

@@ -7,6 +7,7 @@ import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.fml.common.Mod; import net.neoforged.fml.common.Mod;
import net.neoforged.neoforge.event.RegisterCommandsEvent; import net.neoforged.neoforge.event.RegisterCommandsEvent;
import net.neoforged.neoforge.event.server.ServerStartedEvent; import net.neoforged.neoforge.event.server.ServerStartedEvent;
import net.neoforged.neoforge.event.server.ServerStoppedEvent;
@Mod(SkinRestorer.MOD_ID) @Mod(SkinRestorer.MOD_ID)
@EventBusSubscriber(modid = SkinRestorer.MOD_ID) @EventBusSubscriber(modid = SkinRestorer.MOD_ID)
@@ -28,4 +29,9 @@ public final class SkinRestorerNeoForge {
public static void onServerStarted(ServerStartedEvent event) { public static void onServerStarted(ServerStartedEvent event) {
SkinRestorer.Events.onServerStarted(event.getServer()); SkinRestorer.Events.onServerStarted(event.getServer());
} }
@SubscribeEvent
public static void onServerStopped(ServerStoppedEvent event) {
SkinRestorer.Events.onServerStopped(event.getServer());
}
} }