From d5a97e00eaac54def16fb53b68cfed7300af0854 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 23 Sep 2017 17:05:55 +0200 Subject: [PATCH] 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. --- src/map.cpp | 1 + src/mapblock.h | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) 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 *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