Merge pull request #1110 from CounterPillow/genpoi-triage
genPOI triage
This commit is contained in:
@@ -117,6 +117,27 @@ def handleEntities(rset, outputdir, render, rname, config):
|
|||||||
|
|
||||||
logging.info("Done.")
|
logging.info("Done.")
|
||||||
|
|
||||||
|
class PlayerDict(dict):
|
||||||
|
use_uuid = False
|
||||||
|
_name = ''
|
||||||
|
def __getitem__(self, item):
|
||||||
|
if item == "EntityId":
|
||||||
|
if not super(PlayerDict, self).has_key("EntityId"):
|
||||||
|
if self.use_uuid:
|
||||||
|
super(PlayerDict, self).__setitem__("EntityId", self.get_name_from_uuid())
|
||||||
|
else:
|
||||||
|
super(PlayerDict, self).__setitem__("EntityId", self._name)
|
||||||
|
|
||||||
|
return super(PlayerDict, self).__getitem__(item)
|
||||||
|
|
||||||
|
def get_name_from_uuid(self):
|
||||||
|
try:
|
||||||
|
profile = json.loads(urllib2.urlopen(UUID_LOOKUP_URL + self._name.replace('-','')).read())
|
||||||
|
if 'name' in profile:
|
||||||
|
return profile['name']
|
||||||
|
except (ValueError, urllib2.URLError):
|
||||||
|
logging.warning("Unable to get player name for UUID %s", playername)
|
||||||
|
|
||||||
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=[])
|
||||||
@@ -153,37 +174,35 @@ def handlePlayers(rset, render, worldpath):
|
|||||||
rset._pois['Players'] = []
|
rset._pois['Players'] = []
|
||||||
for playerfile in playerfiles:
|
for playerfile in playerfiles:
|
||||||
try:
|
try:
|
||||||
data = nbt.load(os.path.join(playerdir, playerfile))[1]
|
data = PlayerDict(nbt.load(os.path.join(playerdir, playerfile))[1])
|
||||||
|
data.use_uuid = useUUIDs
|
||||||
if isSinglePlayer:
|
if isSinglePlayer:
|
||||||
data = data['Data']['Player']
|
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 useUUIDs:
|
|
||||||
try:
|
|
||||||
profile = json.loads(urllib2.urlopen(UUID_LOOKUP_URL + playername.replace('-','')).read())
|
|
||||||
if 'name' in profile:
|
|
||||||
playername = profile['name']
|
|
||||||
except (ValueError, urllib2.URLError):
|
|
||||||
logging.warning("Unable to get player name for UUID %s", playername)
|
|
||||||
if isSinglePlayer:
|
if isSinglePlayer:
|
||||||
playername = 'Player'
|
playername = 'Player'
|
||||||
|
|
||||||
|
data._name = playername
|
||||||
|
|
||||||
if data['Dimension'] == dimension:
|
if data['Dimension'] == dimension:
|
||||||
# Position at last logout
|
# Position at last logout
|
||||||
data['id'] = "Player"
|
data['id'] = "Player"
|
||||||
data['EntityId'] = playername
|
|
||||||
data['x'] = int(data['Pos'][0])
|
data['x'] = int(data['Pos'][0])
|
||||||
data['y'] = int(data['Pos'][1])
|
data['y'] = int(data['Pos'][1])
|
||||||
data['z'] = int(data['Pos'][2])
|
data['z'] = int(data['Pos'][2])
|
||||||
rset._pois['Players'].append(data)
|
rset._pois['Players'].append(data)
|
||||||
if "SpawnX" in data and dimension == 0:
|
if "SpawnX" in data and dimension == 0:
|
||||||
# Spawn position (bed or main spawn)
|
# Spawn position (bed or main spawn)
|
||||||
spawn = {"id": "PlayerSpawn",
|
spawn = PlayerDict()
|
||||||
"EntityId": playername,
|
spawn._name = playername
|
||||||
"x": data['SpawnX'],
|
spawn["id"] = "PlayerSpawn"
|
||||||
"y": data['SpawnY'],
|
spawn["x"] = data['SpawnX']
|
||||||
"z": data['SpawnZ']}
|
spawn["y"] = data['SpawnY']
|
||||||
|
spawn["z"] = data['SpawnZ']
|
||||||
rset._pois['Players'].append(spawn)
|
rset._pois['Players'].append(spawn)
|
||||||
|
|
||||||
def handleManual(rset, manualpois):
|
def handleManual(rset, manualpois):
|
||||||
|
|||||||
Reference in New Issue
Block a user