Fixing index error.

This commit is contained in:
Glitchfinder 2012-11-05 20:14:23 -08:00
parent 00a5bc5cf3
commit 88ed14fe5c
2 changed files with 24 additions and 5 deletions

View File

@ -105,10 +105,13 @@ public class BlockStoreConversionZDirectory implements Runnable {
this.czPos = this.zPos + this.z; this.czPos = this.zPos + this.z;
for(this.y2 = (64 * this.y); this.y2 < (64 * this.y + 64); this.y2++) { for(this.y2 = (64 * this.y); this.y2 < (64 * this.y + 64); this.y2++) {
if(!this.manager.isTrue(this.cxPos, this.y2, this.czPos, this.world)) try {
continue; if(!this.manager.isTrue(this.cxPos, this.y2, this.czPos, this.world))
continue;
this.newManager.setTrue(this.cxPos, this.y2, this.czPos, this.world); this.newManager.setTrue(this.cxPos, this.y2, this.czPos, this.world);
}
catch(Exception e) {}
} }
} }
} }

View File

@ -15,7 +15,7 @@ public class PrimitiveChunkStore implements ChunkStore {
transient private boolean dirty = false; transient private boolean dirty = false;
/** X, Z, Y */ /** X, Z, Y */
public boolean[][][] store; public boolean[][][] store;
private static final int CURRENT_VERSION = 4; private static final int CURRENT_VERSION = 5;
private static final int MAGIC_NUMBER = 0xEA5EDEBB; private static final int MAGIC_NUMBER = 0xEA5EDEBB;
private int cx; private int cx;
private int cz; private int cz;
@ -34,7 +34,7 @@ public class PrimitiveChunkStore implements ChunkStore {
this.xBitShifts = 11; this.xBitShifts = 11;
this.zBitShifts = 7; this.zBitShifts = 7;
this.store = new boolean[16][16][this.worldHeight - 1]; this.store = new boolean[16][16][this.worldHeight];
conversionNeeded = false; conversionNeeded = false;
} }
@ -139,7 +139,23 @@ public class PrimitiveChunkStore implements ChunkStore {
store = (boolean[][][]) in.readObject(); store = (boolean[][][]) in.readObject();
if (fileVersionNumber < CURRENT_VERSION) { if (fileVersionNumber < CURRENT_VERSION) {
fixArray();
dirty = true; dirty = true;
} }
} }
private void fixArray() {
boolean[][][] temp = this.store;
this.store = new boolean[16][16][this.worldHeight];
for(int x = 0; x < 16; x++) {
for(int z = 0; z < 16; z++) {
for(int y = 0; y < this.worldHeight; y++) {
try {
store[x][z][y] = temp[x][y][z];
}
catch(Exception e) {}
}
}
}
}
} }