summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsfan5 <sfan5@live.de>2017-09-23 17:05:55 +0200
committersfan5 <sfan5@live.de>2017-09-23 17:09:11 +0200
commitd5a97e00eaac54def16fb53b68cfed7300af0854 (patch)
treeacd6449d9a7859a2d7f9db8529d06f2766375a9b
parent5a3b8e34b36a1f9b1f38f91483fc25d23b142f21 (diff)
downloadminetest-d5a97e00eaac54def16fb53b68cfed7300af0854.tar.gz
minetest-d5a97e00eaac54def16fb53b68cfed7300af0854.tar.bz2
minetest-d5a97e00eaac54def16fb53b68cfed7300af0854.zip
Fix blocks written by vmanip not being marked as modified
This bug can be triggered by e.g. calling minetest.place_schematic() and stopping the server immediately afterwards.
-rw-r--r--src/map.cpp1
-rw-r--r--src/mapblock.h3
2 files changed, 3 insertions, 1 deletions
diff --git a/src/map.cpp b/src/map.cpp
index b2aa7ac35..9bcbc6c00 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -2313,6 +2313,7 @@ void MMVManip::blitBackAll(std::map<v3s16, MapBlock*> *modified_blocks,
continue;
block->copyFrom(*this);
+ block->raiseModified(MOD_STATE_WRITE_NEEDED, MOD_REASON_VMANIP);
if(modified_blocks)
(*modified_blocks)[p] = block;
diff --git a/src/mapblock.h b/src/mapblock.h
index 83f13f302..b93007d72 100644
--- a/src/mapblock.h
+++ b/src/mapblock.h
@@ -63,7 +63,8 @@ class VoxelManipulator;
#define MOD_REASON_STATIC_DATA_REMOVED (1 << 16)
#define MOD_REASON_STATIC_DATA_CHANGED (1 << 17)
#define MOD_REASON_EXPIRE_DAYNIGHTDIFF (1 << 18)
-#define MOD_REASON_UNKNOWN (1 << 19)
+#define MOD_REASON_VMANIP (1 << 19)
+#define MOD_REASON_UNKNOWN (1 << 20)
////
//// MapBlock itself