0

generate player POI out of players dat files

The new ids are called "Player" and "PlayerSpawn".
EntityId is the name of the player.
Everything from the player dat is available in the poi filters.

The Player position is the position on last logout.
This commit is contained in:
Johannes Dewender
2012-03-27 01:44:00 +02:00
parent 373291932f
commit 25fcd5e8bb

View File

@@ -39,6 +39,34 @@ def handleSigns(rset, outputdir, render, rname):
rset._pois['TileEntities'] += data['TileEntities']
rset._pois['Entities'] += data['Entities']
def handlePlayers(rset, render, worldpath):
if not hasattr(rset, "_pois"):
rset._pois = dict(TileEntities=[], Entities=[])
dimension = {'overworld': 0,
'nether': -1,
'end': 1,
'default': 0}[render['dimension']]
playerdir = os.path.join(worldpath, "players")
rset._pois['Players'] = []
for playerfile in os.listdir(playerdir):
data = nbt.load(os.path.join(playerdir, playerfile))[1]
playername = playerfile.split(".")[0]
if data['Dimension'] == dimension:
# Position at last logout
data['id'] = "Player"
data['EntityId'] = playername
data['x'] = int(data['Pos'][0])
data['y'] = int(data['Pos'][1])
data['z'] = int(data['Pos'][2])
rset._pois['Players'].append(data)
if "SpawnX" in data and dimension == 0:
# Spawn position (bed or main spawn)
spawn = {"id": "PlayerSpawn",
"EntityId": playername,
"x": data['SpawnX'],
"y": data['SpawnY'],
"z": data['SpawnZ']}
rset._pois['Players'].append(spawn)
def main():
helptext = """genPOI
@@ -102,6 +130,7 @@ def main():
markers[rname] = [dict(groupName=name, displayName=f.__doc__),]
handleSigns(rset, os.path.join(destdir, rname), render, rname)
handlePlayers(rset, render, worldpath)
logging.info("Done scanning regions")
logging.info("Writing out javascript files")
@@ -113,6 +142,9 @@ def main():
for poi in rset._pois['TileEntities']:
if flter(poi):
markerSetDict[name]['raw'].append(poi)
for poi in rset._pois['Players']:
if flter(poi):
markerSetDict[name]['raw'].append(poi)
#print markerSetDict
with open(os.path.join(destdir, "markersDB.js"), "w") as output: