create a method getRegionFile, which automatically loads a region file if present. fixes deleteChunk not deleting from unloaded regions

This commit is contained in:
David Vierra 2011-07-24 01:13:11 -10:00
parent d74bf07343
commit 6e7c6f0ab3

View File

@ -1115,11 +1115,7 @@ class MCInfdevOldLevel(MCLevel):
def getRegionForChunk(self, cx, cz):
rx = cx >> 5
rz = cz >> 5
rf = self.regionFiles.get((rx, rz))
if rf: return rf
rf = MCRegionFile(self.regionFilename(rx, rz), (rx, rz))
self.regionFiles[rx, rz] = rf;
return rf
return self.getRegionFile(rx, rz)
def preloadChunkPositions(self):
if self.version == 19132:
@ -1148,6 +1144,13 @@ class MCInfdevOldLevel(MCLevel):
return MCRegionFile(filepath, (rx, rz))
def getRegionFile(self, rx, rz):
regionFile = self.regionFiles.get((rx, rz))
if regionFile: return regionFile
regionFile = MCRegionFile(self.regionFilename(rx, rz), (rx, rz))
self.regionFiles[rx, rz] = regionFile;
return regionFile
def preloadRegions(self):
info(u"Scanning for regions...")
self._allChunks = set()
@ -2292,7 +2295,7 @@ class MCInfdevOldLevel(MCLevel):
if self.version:
r = cx >> 5, cz >> 5
rf = self.regionFiles.get(r)
rf = self.getRegionFile(*r)
if rf:
rf.setOffset(cx & 0x1f , cz & 0x1f, 0)
if (rf.offsets == 0).all():