0

Update JonnyJD's pullrequest to work with the new POI codes

Also:
only parse players in a regionset once
ignore corrupt player.dat files
This commit is contained in:
Andrew Chin
2012-04-14 23:36:52 -04:00
parent 5f1bf1851d
commit c583a94d7d

View File

@@ -45,6 +45,10 @@ def handleSigns(rset, outputdir, render, rname):
def handlePlayers(rset, render, worldpath): def handlePlayers(rset, render, worldpath):
if not hasattr(rset, "_pois"): if not hasattr(rset, "_pois"):
rset._pois = dict(TileEntities=[], Entities=[]) rset._pois = dict(TileEntities=[], Entities=[])
# only handle this region set once
if 'Players' in rset._pois:
return
dimension = {'overworld': 0, dimension = {'overworld': 0,
'nether': -1, 'nether': -1,
'end': 1, 'end': 1,
@@ -52,7 +56,11 @@ def handlePlayers(rset, render, worldpath):
playerdir = os.path.join(worldpath, "players") playerdir = os.path.join(worldpath, "players")
rset._pois['Players'] = [] rset._pois['Players'] = []
for playerfile in os.listdir(playerdir): for playerfile in os.listdir(playerdir):
data = nbt.load(os.path.join(playerdir, playerfile))[1] try:
data = nbt.load(os.path.join(playerdir, playerfile))[1]
except IOError:
logging.warning("Skipping bad player dat file %r", playerfile)
continue
playername = playerfile.split(".")[0] playername = playerfile.split(".")[0]
if data['Dimension'] == dimension: if data['Dimension'] == dimension:
# Position at last logout # Position at last logout
@@ -158,7 +166,7 @@ def main():
for poi in rset._pois['Players']: for poi in rset._pois['Players']:
result = filter_function(poi) result = filter_function(poi)
if result: if result:
markerSetDict[name]['raw'].append(poi) markerSetDict[name]['raw'].append(dict(x=poi['x'], y=poi['y'], z=poi['z'], text=result, createInfoWindow=True))
#print markerSetDict #print markerSetDict
with open(os.path.join(destdir, "markersDB.js"), "w") as output: with open(os.path.join(destdir, "markersDB.js"), "w") as output: