From e1227f703fc9e754fdb7f1ca8dce8dfb36ada368 Mon Sep 17 00:00:00 2001 From: Kevin Chabowski Date: Wed, 14 Aug 2013 15:04:58 +0200 Subject: Initial commit General idea of GUI is already there. --- listmaps.go | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 listmaps.go (limited to 'listmaps.go') 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 +} -- cgit v1.2.3-54-g00ecf