diff --git a/overviewer_core/aux_files/genPOI.py b/overviewer_core/aux_files/genPOI.py index 786134f..80439cb 100755 --- a/overviewer_core/aux_files/genPOI.py +++ b/overviewer_core/aux_files/genPOI.py @@ -100,12 +100,14 @@ def handlePlayers(rset, render, worldpath): "z": data['SpawnZ']} rset._pois['Players'].append(spawn) -def handleManual(rset, render, manualpois): +def handleManual(rset, manualpois): if not hasattr(rset, "_pois"): rset._pois = dict(TileEntities=[], Entities=[]) + rset._pois['Manual'] = [] + if manualpois: - rset._pois['Manual'] = manualpois + rset._pois['Manual'].extend(manualpois) def main(): @@ -184,7 +186,7 @@ def main(): handleEntities(rset, os.path.join(destdir, rname), render, rname) handlePlayers(rset, render, worldpath) - handleManual(rset, render, config['manualpois']) + handleManual(rset, render['manualpois']) logging.info("Done scanning regions") logging.info("Writing out javascript files") diff --git a/overviewer_core/settingsDefinition.py b/overviewer_core/settingsDefinition.py index a9c62c1..22509de 100644 --- a/overviewer_core/settingsDefinition.py +++ b/overviewer_core/settingsDefinition.py @@ -86,6 +86,7 @@ renders = Setting(required=True, default=util.OrderedDict(), "poititle": Setting(required=False, validator=validateStr, default="Signs"), "customwebassets": Setting(required=False, validator=validateWebAssetsPath, default=None), "maxzoom": Setting(required=False, validator=validateInt, default=None), + "manualpois": Setting(required=False, validator=validateManualPOIs, default=[]), # Remove this eventually (once people update their configs) "worldname": Setting(required=False, default=None, validator=error("The option 'worldname' is now called 'world'. Please update your config files")), diff --git a/overviewer_core/settingsValidators.py b/overviewer_core/settingsValidators.py index 0c2a6cc..40000f1 100644 --- a/overviewer_core/settingsValidators.py +++ b/overviewer_core/settingsValidators.py @@ -227,6 +227,12 @@ def validatePath(p): if not os.path.exists(abs_path): raise ValidationException("'%s' does not exist. Path initially given as '%s'" % (abs_path,p)) +def validateManualPOIs(d): + for poi in d: + if not poi['x'] or not poi['y'] or not poi['z'] or not poi['id']: + raise ValidationException("Not all POIs have x/y/z coordinates or an id.") + return d + def make_dictValidator(keyvalidator, valuevalidator): """Compose and return a dict validator -- a validator that validates each key and value in a dictionary.