diff --git a/gmap.py b/gmap.py index 9a8cd52..6e528bf 100755 --- a/gmap.py +++ b/gmap.py @@ -70,14 +70,16 @@ def main(): if not os.path.exists(worlddir): # world given is either world number, or name + worlds = world.get_worlds() try: worldnum = int(worlddir) - worlddir = world.get_worlds()[worldnum]['path'] + worlddir = worlds[worldnum]['path'] except ValueError: - # it wasn't a number, try using it as a name - worlddir = os.path.join(world.get_save_dir(), worlddir) - if not os.path.exists(worlddir): - # still doesn't exist! print help and die. + # it wasn't a number or path, try using it as a name + try: + worlddir = worlds[worlddir]['path'] + except KeyError: + # it's not a number, name, or path print "Invalid world name or path" parser.print_help() sys.exit(1) diff --git a/world.py b/world.py index 9293ba9..5df6a9a 100644 --- a/world.py +++ b/world.py @@ -392,7 +392,7 @@ def get_save_dir(): return path def get_worlds(): - "Returns {world # : level.dat information}" + "Returns {world # or name : level.dat information}" ret = {} save_dir = get_save_dir() @@ -401,12 +401,14 @@ def get_worlds(): return 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: world_n = int(dir[-1]) - 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) ret[world_n] = info['Data'] + if 'LevelName' in info['Data'].keys(): + ret[info['Data']['LevelName']] = info['Data'] return ret