Unload cached players and metadata when changing revisions. (Move metadata up a level to WorldEditor?)

This commit is contained in:
David Vierra 2015-01-30 17:36:40 -10:00
parent 3710339966
commit 6541e453a5
2 changed files with 22 additions and 18 deletions

View File

@ -433,6 +433,14 @@ class AnvilWorldAdapter(object):
self.selectedRevision.writeFile("level.dat", self.metadata.metadataTag.save())
else:
self.loadMetadata()
def __repr__(self):
return "AnvilWorldAdapter(%r)" % self.filename
# --- Create, save, close ---
def loadMetadata(self):
try:
metadataTag = nbt.load(buf=self.selectedRevision.readFile("level.dat"))
self.metadata = AnvilWorldMetadata(metadataTag)
@ -451,11 +459,6 @@ class AnvilWorldAdapter(object):
assert self.metadata.version == VERSION_ANVIL, "Pre-Anvil world formats are not supported (for now)"
def __repr__(self):
return "AnvilWorldAdapter(%r)" % self.filename
# --- Create, save, close ---
def loadFMLMapping(self):
metadataTag = self.metadata.metadataTag
fml = metadataTag.get('FML')
@ -635,6 +638,7 @@ class AnvilWorldAdapter(object):
newRevision = self.revisionHistory.getRevision(index)
changes = self.revisionHistory.getRevisionChanges(self.selectedRevision, newRevision)
self.selectedRevision = newRevision
self.loadMetadata()
return changes
def listRevisions(self):

View File

@ -225,6 +225,7 @@ class WorldEditor(object):
"""
assert index is not None, "None is not a revision index!"
self.syncToDisk()
self.playerCache.clear()
changes = self.adapter.selectRevision(index)
self.currentRevision = index
@ -239,7 +240,6 @@ class WorldEditor(object):
self._loadedChunks.pop((cx, cz, dimName), None)
self.recentDirtyFiles.update(changes.files)
# xxx unload players, metadata!!
# --- Save ---