Use WeakReference for server variable but never clear it for better mod compat

This commit is contained in:
embeddedt 2023-06-26 12:57:49 -04:00
parent 20ca15f0c4
commit bac13236e7
No known key found for this signature in database
GPG Key ID: A69433EC199B5613
2 changed files with 5 additions and 4 deletions

View File

@ -4,22 +4,23 @@ import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
import net.minecraft.server.MinecraftServer;
import java.lang.ref.WeakReference;
public class ModernFixFabric implements ModInitializer {
private ModernFix commonMod;
public static MinecraftServer theServer;
public static WeakReference<MinecraftServer> theServer = new WeakReference<>(null);
@Override
public void onInitialize() {
commonMod = new ModernFix();
ServerLifecycleEvents.SERVER_STARTING.register(server -> {
theServer = server;
theServer = new WeakReference<>(server);
});
ServerLifecycleEvents.SERVER_STARTED.register(server -> {
commonMod.onServerStarted();
});
ServerLifecycleEvents.SERVER_STOPPED.register(server -> {
commonMod.onServerDead(server);
theServer = null;
});
// TODO: implement entity ID desync

View File

@ -53,7 +53,7 @@ public class ModernFixPlatformHooksImpl {
}
public static MinecraftServer getCurrentServer() {
return ModernFixFabric.theServer;
return ModernFixFabric.theServer.get();
}
public static boolean isLoadingNormally() {