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