diff --git a/patches/net/minecraft/client/Minecraft.java.patch b/patches/net/minecraft/client/Minecraft.java.patch index 685b4601f0..fd6a04294b 100644 --- a/patches/net/minecraft/client/Minecraft.java.patch +++ b/patches/net/minecraft/client/Minecraft.java.patch @@ -324,7 +324,7 @@ this.level = p_91157_; this.updateLevelInEngines(p_91157_); if (!this.isLocalServer) { -@@ -2030,6 +_,7 @@ +@@ -2030,13 +_,16 @@ IntegratedServer integratedserver = this.singleplayerServer; this.singleplayerServer = null; this.gameRenderer.resetData(); @@ -332,7 +332,8 @@ this.gameMode = null; this.narrator.clear(); this.clientLevelTeardownInProgress = true; -@@ -2037,6 +_,7 @@ + ++ var shouldRevertRegistriesToFrozen = this.getConnection() != null && this.getConnection().getConnection() != null; // Neo: Track whether to revert registries after disconnect try { this.updateScreenAndTick(p_320248_); if (this.level != null) { @@ -340,6 +341,14 @@ if (integratedserver != null) { ProfilerFiller profilerfiller = Profiler.get(); profilerfiller.push("waitForServer"); +@@ -2060,6 +_,7 @@ + } + + SkullBlockEntity.clear(); ++ if(shouldRevertRegistriesToFrozen) net.neoforged.neoforge.registries.RegistryManager.revertToFrozen(); // Neo: Revert registries to frozen on disconnect + } + + public void clearDownloadedResourcePacks() { @@ -2197,6 +_,7 @@ private void pickBlock() { diff --git a/patches/net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl.java.patch b/patches/net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl.java.patch index 0cafb8a7b2..0c7adce7f8 100644 --- a/patches/net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl.java.patch +++ b/patches/net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl.java.patch @@ -63,16 +63,6 @@ this.connection.send(p_295097_); } -@@ -285,6 +_,9 @@ - public void onDisconnect(DisconnectionDetails p_350760_) { - this.telemetryManager.onDisconnect(); - this.minecraft.disconnect(this.createDisconnectScreen(p_350760_), this.isTransferring); -+ if (!this.connection.isMemoryConnection()) { -+ net.neoforged.neoforge.registries.RegistryManager.revertToFrozen(); -+ } - LOGGER.warn("Client disconnected with reason: {}", p_350760_.reason().getString()); - } - @@ -409,5 +_,10 @@ @OnlyIn(Dist.CLIENT) static record PendingRequest(UUID id, URL url, String hash) { diff --git a/src/main/java/net/neoforged/neoforge/server/ServerLifecycleHooks.java b/src/main/java/net/neoforged/neoforge/server/ServerLifecycleHooks.java index fdd5ca7716..82af0063e3 100644 --- a/src/main/java/net/neoforged/neoforge/server/ServerLifecycleHooks.java +++ b/src/main/java/net/neoforged/neoforge/server/ServerLifecycleHooks.java @@ -49,7 +49,6 @@ import net.neoforged.neoforge.mixins.MappedRegistryAccessor; import net.neoforged.neoforge.registries.NeoForgeRegistries; import net.neoforged.neoforge.registries.NeoForgeRegistries.Keys; -import net.neoforged.neoforge.registries.RegistryManager; import net.neoforged.neoforge.server.permission.PermissionAPI; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -123,7 +122,6 @@ public static void expectServerStopped() { } public static void handleServerStopped(final MinecraftServer server) { - if (!server.isDedicatedServer()) RegistryManager.revertToFrozen(); NeoForge.EVENT_BUS.post(new ServerStoppedEvent(server)); currentServer = null; LogicalSidedProvider.setServer(null);