diff options
author | Kevin Chabowski <kevin@kch42.de> | 2013-08-14 15:04:58 +0200 |
---|---|---|
committer | Kevin Chabowski <kevin@kch42.de> | 2013-08-14 15:04:58 +0200 |
commit | e1227f703fc9e754fdb7f1ca8dce8dfb36ada368 (patch) | |
tree | bed1aa5832abacc76ee56c0f67682893adad161c /listmaps.go | |
download | biomed-e1227f703fc9e754fdb7f1ca8dce8dfb36ada368.tar.gz biomed-e1227f703fc9e754fdb7f1ca8dce8dfb36ada368.tar.bz2 biomed-e1227f703fc9e754fdb7f1ca8dce8dfb36ada368.zip |
Initial commit
General idea of GUI is already there.
Diffstat (limited to 'listmaps.go')
-rw-r--r-- | listmaps.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/listmaps.go b/listmaps.go new file mode 100644 index 0000000..ea43890 --- /dev/null +++ b/listmaps.go @@ -0,0 +1,54 @@ +package main + +import ( + "fmt" + "os" + "path" + "runtime" +) + +func allMaps() map[string]string { + savesDir := "" + switch runtime.GOOS { + case "linux": + savesDir = fmt.Sprintf("%s/.minecraft/saves", os.Getenv("HOME")) + case "darwin": + savesDir = fmt.Sprintf("%s/Library/Application Support/minecraft/saves", os.Getenv("HOME")) + case "windows": + savesDir = fmt.Sprintf(`%s\.minecraft`, os.Getenv("appdata")) + default: + return nil + } + + f, err := os.Open(savesDir) + if err != nil { + return nil + } + defer f.Close() + fi, err := f.Stat() + if (err != nil) || (!fi.IsDir()) { + return nil + } + + infos, err := f.Readdir(-1) + if err != nil { + return nil + } + + maps := make(map[string]string) + for _, info := range infos { + if !info.IsDir() { + continue + } + p := path.Join(savesDir, info.Name()) + + fi, err := os.Stat(path.Join(p, "level.dat")) + if (err != nil) || (!fi.Mode().IsRegular()) { + continue + } + + maps[info.Name()] = path.Join(p, "region") + } + + return maps +} |