0

Improve support for player POIs on single player worlds

This commit is contained in:
Thomas Lake
2012-04-15 18:42:01 +01:00
parent 27acb575f7
commit 24f360882d

View File

@@ -41,7 +41,7 @@ def handleSigns(rset, outputdir, render, rname):
rset._pois['TileEntities'] += data['TileEntities'] rset._pois['TileEntities'] += data['TileEntities']
rset._pois['Entities'] += data['Entities'] rset._pois['Entities'] += data['Entities']
print "Done." logging.info("Done.")
def handlePlayers(rset, render, worldpath): def handlePlayers(rset, render, worldpath):
if not hasattr(rset, "_pois"): if not hasattr(rset, "_pois"):
@@ -55,14 +55,25 @@ def handlePlayers(rset, render, worldpath):
'end': 1, 'end': 1,
'default': 0}[render['dimension']] 'default': 0}[render['dimension']]
playerdir = os.path.join(worldpath, "players") playerdir = os.path.join(worldpath, "players")
if os.path.isdir(playerdir):
playerfiles = os.listdir(playerdir)
isSinglePlayer = False
else:
playerfiles = [os.path.join(worldpath, "level.dat")]
isSinglePlayer = True
rset._pois['Players'] = [] rset._pois['Players'] = []
for playerfile in os.listdir(playerdir): for playerfile in playerfiles:
try: try:
data = nbt.load(os.path.join(playerdir, playerfile))[1] data = nbt.load(os.path.join(playerdir, playerfile))[1]
if isSinglePlayer:
data = data['Data']['Player']
except IOError: except IOError:
logging.warning("Skipping bad player dat file %r", playerfile) logging.warning("Skipping bad player dat file %r", playerfile)
continue continue
playername = playerfile.split(".")[0] playername = playerfile.split(".")[0]
if isSinglePlayer:
playername = 'Player'
if data['Dimension'] == dimension: if data['Dimension'] == dimension:
# Position at last logout # Position at last logout
data['id'] = "Player" data['id'] = "Player"