]> git.lizzy.rs Git - minetest.git/commitdiff
Fix blocks written by vmanip not being marked as modified
authorsfan5 <sfan5@live.de>
Sat, 23 Sep 2017 15:05:55 +0000 (17:05 +0200)
committerSmallJoker <mk939@ymail.com>
Sun, 3 Jun 2018 15:31:59 +0000 (17:31 +0200)
This bug can be triggered by e.g. calling minetest.place_schematic()
and stopping the server immediately afterwards.

src/map.cpp
src/mapblock.h

index 3b02ac02fc2dfd021a65cde98bd567428cffb160..0c57d6a8af58a5a48efab78ac0838bc389f67790 100644 (file)
@@ -2737,6 +2737,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;
index 8816dc817f7ef7f7f18b3ca44c4972dc50028a3f..1ccaccaef2e493d2f8df578017068f870b4f20f7 100644 (file)
@@ -122,7 +122,8 @@ class NodeContainer
 #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