Use WeakReference for server variable but never clear it for better mod compat
This commit is contained in:
parent
20ca15f0c4
commit
bac13236e7
|
|
@ -4,22 +4,23 @@ import net.fabricmc.api.ModInitializer;
|
||||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
|
|
||||||
public class ModernFixFabric implements ModInitializer {
|
public class ModernFixFabric implements ModInitializer {
|
||||||
private ModernFix commonMod;
|
private ModernFix commonMod;
|
||||||
public static MinecraftServer theServer;
|
public static WeakReference<MinecraftServer> theServer = new WeakReference<>(null);
|
||||||
@Override
|
@Override
|
||||||
public void onInitialize() {
|
public void onInitialize() {
|
||||||
commonMod = new ModernFix();
|
commonMod = new ModernFix();
|
||||||
|
|
||||||
ServerLifecycleEvents.SERVER_STARTING.register(server -> {
|
ServerLifecycleEvents.SERVER_STARTING.register(server -> {
|
||||||
theServer = server;
|
theServer = new WeakReference<>(server);
|
||||||
});
|
});
|
||||||
ServerLifecycleEvents.SERVER_STARTED.register(server -> {
|
ServerLifecycleEvents.SERVER_STARTED.register(server -> {
|
||||||
commonMod.onServerStarted();
|
commonMod.onServerStarted();
|
||||||
});
|
});
|
||||||
ServerLifecycleEvents.SERVER_STOPPED.register(server -> {
|
ServerLifecycleEvents.SERVER_STOPPED.register(server -> {
|
||||||
commonMod.onServerDead(server);
|
commonMod.onServerDead(server);
|
||||||
theServer = null;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: implement entity ID desync
|
// TODO: implement entity ID desync
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ public class ModernFixPlatformHooksImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MinecraftServer getCurrentServer() {
|
public static MinecraftServer getCurrentServer() {
|
||||||
return ModernFixFabric.theServer;
|
return ModernFixFabric.theServer.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isLoadingNormally() {
|
public static boolean isLoadingNormally() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user