diff --git a/src/main/java/net/minecraft/world/chunk/storage/RegionFile.java b/src/main/java/net/minecraft/world/chunk/storage/RegionFile.java index 7fe64c5..69c7db5 100644 --- a/src/main/java/net/minecraft/world/chunk/storage/RegionFile.java +++ b/src/main/java/net/minecraft/world/chunk/storage/RegionFile.java @@ -348,11 +348,12 @@ this.dataFile.writeInt(p_76713_3_); } - public void close() throws IOException + public synchronized void close() throws IOException { if (this.dataFile != null) { this.dataFile.close(); + dataFile = null; } } diff --git a/src/main/java/net/minecraft/world/chunk/storage/RegionFileCache.java b/src/main/java/net/minecraft/world/chunk/storage/RegionFileCache.java index 0073c45..c0f310d 100644 --- a/src/main/java/net/minecraft/world/chunk/storage/RegionFileCache.java +++ b/src/main/java/net/minecraft/world/chunk/storage/RegionFileCache.java @@ -8,6 +8,8 @@ import java.util.Iterator; import java.util.Map; +import net.minecraft.world.storage.ThreadedFileIOBase; + public class RegionFileCache { private static final Map regionsByFilename = new HashMap(); @@ -43,6 +45,14 @@ public static synchronized void clearRegionFileReferences() { + if(!Thread.currentThread().getName().equals("File IO Thread")) + { + try + { + ThreadedFileIOBase.threadedIOInstance.waitForFinish(); + } catch (InterruptedException ignored){} + } + Iterator iterator = regionsByFilename.values().iterator(); while (iterator.hasNext())