HTTP API: Allow binary downloads and headers (#8573)
[oweals/minetest.git] / src / map.h
index 81f32baeaf9a6376b007a53aa8f051c293b282f5..251ac297fa8e5f3304b5d2cd8949611d34f46bc2 100644 (file)
--- a/src/map.h
+++ b/src/map.h
@@ -33,6 +33,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "util/container.h"
 #include "nodetimer.h"
 #include "map_settings_manager.h"
+#include "debug.h"
 
 class Settings;
 class MapDatabase;
@@ -62,8 +63,7 @@ enum MapEditEventType{
        MEET_REMOVENODE,
        // Node swapped (changed without metadata change)
        MEET_SWAPNODE,
-       // Node metadata of block changed (not knowing which node exactly)
-       // p stores block coordinate
+       // Node metadata changed
        MEET_BLOCK_NODE_METADATA_CHANGED,
        // Anything else (modified_blocks are set unsent)
        MEET_OTHER
@@ -75,7 +75,7 @@ struct MapEditEvent
        v3s16 p;
        MapNode n = CONTENT_AIR;
        std::set<v3s16> modified_blocks;
-       u16 already_known_by_peer = 0;
+       bool is_private_change = false;
 
        MapEditEvent() = default;
 
@@ -86,6 +86,7 @@ struct MapEditEvent
                event->p = p;
                event->n = n;
                event->modified_blocks = modified_blocks;
+               event->is_private_change = is_private_change;
                return event;
        }
 
@@ -167,8 +168,6 @@ public:
                their differing fetch methods.
        */
        virtual MapSector * emergeSector(v2s16 p){ return NULL; }
-       virtual MapSector * emergeSector(v2s16 p,
-                       std::map<v3s16, MapBlock*> &changed_blocks){ return NULL; }
 
        // Returns InvalidPositionException if not found
        MapBlock * getBlockNoCreate(v3s16 p);
@@ -179,7 +178,7 @@ public:
        virtual MapBlock * emergeBlock(v3s16 p, bool create_blank=true)
        { return getBlockNoCreateNoEx(p); }
 
-       inline INodeDefManager * getNodeDefManager() { return m_nodedef; }
+       inline const NodeDefManager * getNodeDefManager() { return m_nodedef; }
 
        // Returns InvalidPositionException if not found
        bool isNodeUnderground(v3s16 p);
@@ -290,7 +289,6 @@ public:
        */
 
        void transforming_liquid_add(v3s16 p);
-       s32 transforming_liquid_size();
 
        bool isBlockOccluded(MapBlock *block, v3s16 cam_pos_nodes);
 protected:
@@ -312,7 +310,7 @@ protected:
        UniqueQueue<v3s16> m_transforming_liquid;
 
        // This stores the properties of the nodes on the map.
-       INodeDefManager *m_nodedef;
+       const NodeDefManager *m_nodedef;
 
        bool isOccluded(v3s16 p0, v3s16 p1, float step, float stepfac,
                        float start_off, float end_off, u32 needed_count);
@@ -350,9 +348,7 @@ public:
                - Check disk (doesn't load blocks)
                - Create blank one
        */
-       ServerMapSector *createSector(v2s16 p);
-
-       bool saoPositionOverLimit(const v3f &p);
+       MapSector *createSector(v2s16 p);
 
        /*
                Blocks are generated by using these and makeBlock().
@@ -393,7 +389,7 @@ public:
                Misc. helper functions for fiddling with directory and file
                names when saving
        */
-       void createDirs(std::string path);
+       void createDirs(const std::string &path);
        // returns something like "map/sectors/xxxxxxxx"
        std::string getSectorDir(v2s16 pos, int layout = 2);
        // dirname: final directory name
@@ -419,18 +415,6 @@ public:
 
        MapgenParams *getMapgenParams();
 
-       /*void saveChunkMeta();
-       void loadChunkMeta();*/
-
-       // The sector mutex should be locked when calling most of these
-
-       // This only saves sector-specific data such as the heightmap
-       // (no MapBlocks)
-       // DEPRECATED? Sectors have no metadata anymore.
-       void saveSectorMeta(ServerMapSector *sector);
-       MapSector* loadSectorMeta(std::string dirname, bool save_after_load);
-       bool loadSectorMeta(v2s16 p2d);
-
        bool saveBlock(MapBlock *block);
        static bool saveBlock(MapBlock *block, MapDatabase *db);
        // This will generate a sector with getSector if not found.
@@ -485,6 +469,7 @@ private:
        */
        bool m_map_metadata_changed = true;
        MapDatabase *dbase = nullptr;
+       MapDatabase *dbase_ro = nullptr;
 };
 
 
@@ -495,7 +480,7 @@ class MMVManip : public VoxelManipulator
 {
 public:
        MMVManip(Map *map);
-       virtual ~MMVManip();
+       virtual ~MMVManip() = default;
 
        virtual void clear()
        {