diff options
author | Kevin Chabowski <kevin@kch42.de> | 2013-09-21 00:48:59 +0200 |
---|---|---|
committer | Kevin Chabowski <kevin@kch42.de> | 2013-09-21 00:48:59 +0200 |
commit | f051ce2392bc0bfae52945e8f53fe38f2d095637 (patch) | |
tree | 9cf7e28b009757747d12c5d4ac3e36a6469d4295 /mcmap/region.go | |
parent | fc3743db98c3cc9f800cd50ae087e505ff260c0c (diff) | |
download | gomcmap-f051ce2392bc0bfae52945e8f53fe38f2d095637.tar.gz gomcmap-f051ce2392bc0bfae52945e8f53fe38f2d095637.tar.bz2 gomcmap-f051ce2392bc0bfae52945e8f53fe38f2d095637.zip |
Deleting chunks implemented.
Diffstat (limited to 'mcmap/region.go')
-rw-r--r-- | mcmap/region.go | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/mcmap/region.go b/mcmap/region.go index 34b3334..93c8693 100644 --- a/mcmap/region.go +++ b/mcmap/region.go @@ -157,15 +157,23 @@ func (reg *Region) cleanSuperchunks(forceSave bool) error { if !(reg.autosave || forceSave) { continue } + fn := fmt.Sprintf("%s%cr.%d.%d.mca", reg.path, os.PathSeparator, scPos.X, scPos.Z) - f, err := os.Create(fn) - if err != nil { - return err - } - defer f.Close() - if err := writeRegionFile(f, sc.preChunks); err != nil { - return err + if len(sc.preChunks) == 0 { + if err := os.Remove(fn); err != nil { + return err + } + } else { + f, err := os.Create(fn) + if err != nil { + return err + } + defer f.Close() + + if err := writeRegionFile(f, sc.preChunks); err != nil { + return err + } } } @@ -239,7 +247,10 @@ func (reg *Region) unloadChunk(x, z int) error { return nil } - if chunk.modified { + if chunk.deleted { + delete(sc.preChunks, cPos) + sc.modified = true + } else if chunk.modified { pc, err := chunk.toPreChunk() if err != nil { return err |