--- a/net/minecraft/server/RegionFileCache.java +++ b/net/minecraft/server/RegionFileCache.java @@ -18,7 +18,7 @@ this.a = file; } - private RegionFile a(ChunkCoordIntPair chunkcoordintpair) throws IOException { + private RegionFile a(ChunkCoordIntPair chunkcoordintpair, boolean existingOnly) throws IOException { // CraftBukkit long i = ChunkCoordIntPair.pair(chunkcoordintpair.getRegionX(), chunkcoordintpair.getRegionZ()); RegionFile regionfile = (RegionFile) this.cache.getAndMoveToFirst(i); @@ -34,6 +34,7 @@ } File file = new File(this.a, "r." + chunkcoordintpair.getRegionX() + "." + chunkcoordintpair.getRegionZ() + ".mca"); + if (existingOnly && !file.exists()) return null; // CraftBukkit RegionFile regionfile1 = new RegionFile(file); this.cache.putAndMoveToFirst(i, regionfile1); @@ -43,7 +44,7 @@ @Nullable public NBTTagCompound read(ChunkCoordIntPair chunkcoordintpair) throws IOException { - RegionFile regionfile = this.a(chunkcoordintpair); + RegionFile regionfile = this.a(chunkcoordintpair, false); // CraftBukkit DataInputStream datainputstream = regionfile.a(chunkcoordintpair); Throwable throwable = null; @@ -78,7 +79,7 @@ } protected void write(ChunkCoordIntPair chunkcoordintpair, NBTTagCompound nbttagcompound) throws IOException { - RegionFile regionfile = this.a(chunkcoordintpair); + RegionFile regionfile = this.a(chunkcoordintpair, false); // CraftBukkit DataOutputStream dataoutputstream = regionfile.c(chunkcoordintpair); Throwable throwable = null; @@ -114,4 +115,12 @@ } } + + // CraftBukkit start + public boolean chunkExists(ChunkCoordIntPair pos) throws IOException { + RegionFile regionfile = a(pos, true); + + return regionfile != null ? regionfile.d(pos) : false; + } + // CraftBukkit end }