separated properly client disconnect from server shutdown allowing for retaining carpet settings till world is gone. Fixes #854

This commit is contained in:
gnembon committed 2021-05-22 22:14:16 -03:00
1 parent c6db496a1f
commit fb4c40c951
3 files changed
+16 -3

No files matched your search

+3
View File
@@ -188,6 +188,9 @@ public class CarpetServer implements ClientModInitializer,DedicatedServerModInit
// this for whatever reason gets called multiple times even when joining; // this for whatever reason gets called multiple times even when joining;
TickSpeed.reset(); TickSpeed.reset();
}
public static void onServerDoneClosing(MinecraftServer server)
{
settingsManager.detachServer(); settingsManager.detachServer();
} }
@@ -50,6 +50,12 @@ public abstract class MinecraftServer_coreMixin
CarpetServer.onServerClosed((MinecraftServer) (Object) this); CarpetServer.onServerClosed((MinecraftServer) (Object) this);
} }
@Inject(method = "shutdown", at = @At("TAIL"))
private void serverDoneClosed(CallbackInfo ci)
{
CarpetServer.onServerDoneClosing((MinecraftServer) (Object) this);
}
@Inject(method = "prepareStartRegion", at = @At("RETURN")) @Inject(method = "prepareStartRegion", at = @At("RETURN"))
private void afterSpawnCreated(WorldGenerationProgressListener worldGenerationProgressListener, CallbackInfo ci) private void afterSpawnCreated(WorldGenerationProgressListener worldGenerationProgressListener, CallbackInfo ci)
{ {
@@ -37,9 +37,13 @@ public class CarpetClient
public static void disconnect() public static void disconnect()
{ {
isServerCarpet = false; if (isServerCarpet)
clientPlayer = null; {
CarpetServer.onServerClosed(null); isServerCarpet = false;
clientPlayer = null;
CarpetServer.onServerClosed(null);
CarpetServer.onServerDoneClosing(null);
}
} }
public static void setCarpet() public static void setCarpet()