diff --git a/src/main/java/net/minecraft/world/WorldServer.java b/src/main/java/net/minecraft/world/WorldServer.java index 1fee14b..62cf636 100644 --- a/src/main/java/net/minecraft/world/WorldServer.java +++ b/src/main/java/net/minecraft/world/WorldServer.java @@ -704,18 +704,6 @@ this.chunkProvider.saveChunks(p_73044_1_, p_73044_2_); MinecraftForge.EVENT_BUS.post(new WorldEvent.Save(this)); - ArrayList arraylist = Lists.newArrayList(this.theChunkProviderServer.func_152380_a()); - Iterator iterator = arraylist.iterator(); - - while (iterator.hasNext()) - { - Chunk chunk = (Chunk)iterator.next(); - - if (chunk != null && !this.thePlayerManager.func_152621_a(chunk.xPosition, chunk.zPosition)) - { - this.theChunkProviderServer.unloadChunksIfNotNearSpawn(chunk.xPosition, chunk.zPosition); - } - } } } diff --git a/src/main/java/net/minecraft/world/gen/ChunkProviderServer.java b/src/main/java/net/minecraft/world/gen/ChunkProviderServer.java index 670f9a9..f684bf4 100644 --- a/src/main/java/net/minecraft/world/gen/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/world/gen/ChunkProviderServer.java @@ -81,7 +81,13 @@ public void unloadChunksIfNotNearSpawn(int par1, int par2) { - this.chunksToUnload.add(ChunkHash.chunkToKey(par1, par2)); + Chunk chunk = loadedChunkHashMap.get(par1, par2); + if(chunk != null) + { + chunk.unbind(); + if(chunk.getBindState().canUnload()) + chunksToUnload.add(ChunkHash.chunkToKey(par1, par2)); + } } public void unloadAllChunks() @@ -452,8 +458,9 @@ public void unbindChunk(Chunk chunk) { - chunk.unbind(); - if(!isServer) + if(isServer) + chunk.unbind(); + else unloadChunksIfNotNearSpawn(chunk.xPosition, chunk.zPosition); } } \ No newline at end of file