summaryrefslogtreecommitdiff
path: root/listmaps.go
diff options
context:
space:
mode:
authorKevin Chabowski <kevin@kch42.de>2013-08-14 15:04:58 +0200
committerKevin Chabowski <kevin@kch42.de>2013-08-14 15:04:58 +0200
commite1227f703fc9e754fdb7f1ca8dce8dfb36ada368 (patch)
treebed1aa5832abacc76ee56c0f67682893adad161c /listmaps.go
downloadbiomed-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.go54
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
+}