diff --git a/overviewer.py b/overviewer.py index e8e5a86..0e827c5 100755 --- a/overviewer.py +++ b/overviewer.py @@ -428,9 +428,9 @@ def list_worlds(): # get max length of world name worldNameLen = max([len(str(x)) for x in worlds] + [len("World")]) - formatString = "%-" + str(worldNameLen) + "s | %-8s | %-8s | %-16s " - print formatString % ("World", "Size", "Playtime", "Modified") - print formatString % ("-"*worldNameLen, "-"*8, "-"*8, '-'*16) + formatString = "%-" + str(worldNameLen) + "s | %-8s | %-8s | %-16s | %s " + print formatString % ("World", "Size", "Playtime", "Modified", "Path") + print formatString % ("-"*worldNameLen, "-"*8, "-"*8, '-'*16, '-'*4) for name, info in sorted(worlds.iteritems()): if isinstance(name, basestring) and name.startswith("World") and len(name) == 6: try: @@ -445,7 +445,8 @@ def list_worlds(): playtime = info['Time'] / 20 playstamp = '%d:%02d' % (playtime / 3600, playtime / 60 % 60) size = "%.2fMB" % (info['SizeOnDisk'] / 1024. / 1024.) - print formatString % (name, size, playstamp, timestamp) + path = info['path'] + print formatString % (name, size, playstamp, timestamp, path) if __name__ == "__main__": multiprocessing.freeze_support() diff --git a/overviewer_core/world.py b/overviewer_core/world.py index 2d2b84e..1155395 100644 --- a/overviewer_core/world.py +++ b/overviewer_core/world.py @@ -575,20 +575,26 @@ def get_worlds(): save_dir = get_save_dir() # No dirs found - most likely not running from inside minecraft-dir - if save_dir is None: - return None - - for dir in os.listdir(save_dir): - world_dat = os.path.join(save_dir, dir, "level.dat") + if not save_dir is None: + for dir in os.listdir(save_dir): + world_dat = os.path.join(save_dir, dir, "level.dat") + if not os.path.exists(world_dat): continue + info = nbt.load(world_dat)[1] + info['Data']['path'] = os.path.join(save_dir, dir) + if dir.startswith("World") and len(dir) == 6: + try: + world_n = int(dir[-1]) + ret[world_n] = info['Data'] + except ValueError: + pass + if 'LevelName' in info['Data'].keys(): + ret[info['Data']['LevelName']] = info['Data'] + + for dir in os.listdir("."): + world_dat = os.path.join(dir, "level.dat") if not os.path.exists(world_dat): continue info = nbt.load(world_dat)[1] - info['Data']['path'] = os.path.join(save_dir, dir) - if dir.startswith("World") and len(dir) == 6: - try: - world_n = int(dir[-1]) - ret[world_n] = info['Data'] - except ValueError: - pass + info['Data']['path'] = os.path.join(".", dir) if 'LevelName' in info['Data'].keys(): ret[info['Data']['LevelName']] = info['Data']