Threadsafe World.c(int i, int j)

This commit is contained in:
Dinnerbone 2011-02-10 11:56:30 +00:00
parent 96794e15db
commit a52f5ef520

View File

@ -286,13 +286,18 @@ public class World implements IBlockAccess {
Chunk lastChunkAccessed;
int lastXAccessed = Integer.MIN_VALUE;
int lastZAccessed = Integer.MIN_VALUE;
final Object chunkLock = new Object();
public Chunk c(int i, int j) {
if(lastChunkAccessed == null || lastXAccessed != i || lastZAccessed != j) {
lastXAccessed = i;
lastZAccessed = j;
lastChunkAccessed = this.G.b(i, j);
Chunk result = null;
synchronized (chunkLock) {
if (lastChunkAccessed == null || lastXAccessed != i || lastZAccessed != j) {
lastXAccessed = i;
lastZAccessed = j;
lastChunkAccessed = this.G.b(i, j);
}
result = lastChunkAccessed;
}
return lastChunkAccessed;
return result;
}
// CraftBukkit end