summaryrefslogtreecommitdiff
path: root/mcmap/region.go
diff options
context:
space:
mode:
Diffstat (limited to 'mcmap/region.go')
-rw-r--r--mcmap/region.go27
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