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:
32
genPOI.py
32
genPOI.py
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user