]> git.lizzy.rs Git - minetest.git/blobdiff - src/mapblock.cpp
Add fwgettext util function
[minetest.git] / src / mapblock.cpp
index 54cb2df0e4432c06ed20f1b9d9740a2e2cc1ca80..0ca71e643d83f11a8413636eabeeff6d90102916 100644 (file)
@@ -31,8 +31,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "content_nodemeta.h" // For legacy deserialization
 #include "serialization.h"
 #ifndef SERVER
-#include "mapblock_mesh.h"
+#include "client/mapblock_mesh.h"
 #endif
+#include "porting.h"
 #include "util/string.h"
 #include "util/serialize.h"
 #include "util/basic_macros.h"
@@ -99,7 +100,7 @@ bool MapBlock::isValidPositionParent(v3s16 p)
 MapNode MapBlock::getNodeParent(v3s16 p, bool *is_valid_position)
 {
        if (!isValidPosition(p))
-               return m_parent->getNodeNoEx(getPosRelative() + p, is_valid_position);
+               return m_parent->getNode(getPosRelative() + p, is_valid_position);
 
        if (!data) {
                if (is_valid_position)
@@ -354,7 +355,7 @@ static void correctBlockNodeIds(const NameIdMapping *nimap, MapNode *nodes,
        }
 }
 
-void MapBlock::serialize(std::ostream &os, u8 version, bool disk)
+void MapBlock::serialize(std::ostream &os, u8 version, bool disk, int compression_level)
 {
        if(!ser_ver_supported(version))
                throw VersionMismatchException("ERROR: MapBlock format not supported");
@@ -393,7 +394,7 @@ void MapBlock::serialize(std::ostream &os, u8 version, bool disk)
                writeU8(os, content_width);
                writeU8(os, params_width);
                MapNode::serializeBulk(os, version, tmp_nodes, nodecount,
-                               content_width, params_width, true);
+                               content_width, params_width, compression_level);
                delete[] tmp_nodes;
        }
        else
@@ -403,7 +404,7 @@ void MapBlock::serialize(std::ostream &os, u8 version, bool disk)
                writeU8(os, content_width);
                writeU8(os, params_width);
                MapNode::serializeBulk(os, version, data, nodecount,
-                               content_width, params_width, true);
+                               content_width, params_width, compression_level);
        }
 
        /*
@@ -411,7 +412,7 @@ void MapBlock::serialize(std::ostream &os, u8 version, bool disk)
        */
        std::ostringstream oss(std::ios_base::binary);
        m_node_metadata.serialize(oss, version, disk);
-       compressZlib(oss.str(), os);
+       compressZlib(oss.str(), os, compression_level);
 
        /*
                Data that goes to disk, but not the network
@@ -445,9 +446,7 @@ void MapBlock::serializeNetworkSpecific(std::ostream &os)
                throw SerializationError("ERROR: Not writing dummy block.");
        }
 
-       writeU8(os, 1); // version
-       writeF1000(os, 0); // deprecated heat
-       writeF1000(os, 0); // deprecated humidity
+       writeU8(os, 2); // version
 }
 
 void MapBlock::deSerialize(std::istream &is, u8 version, bool disk)
@@ -486,7 +485,7 @@ void MapBlock::deSerialize(std::istream &is, u8 version, bool disk)
        if(params_width != 2)
                throw SerializationError("MapBlock::deSerialize(): invalid params_width");
        MapNode::deSerializeBulk(is, version, data, nodecount,
-                       content_width, params_width, true);
+                       content_width, params_width);
 
        /*
                NodeMetadata
@@ -534,7 +533,7 @@ void MapBlock::deSerialize(std::istream &is, u8 version, bool disk)
                // Timestamp
                TRACESTREAM(<<"MapBlock::deSerialize "<<PP(getPos())
                                <<": Timestamp"<<std::endl);
-               setTimestamp(readU32(is));
+               setTimestampNoChangedFlag(readU32(is));
                m_disk_timestamp = m_timestamp;
 
                // Dynamically re-set ids based on node names
@@ -558,16 +557,12 @@ void MapBlock::deSerialize(std::istream &is, u8 version, bool disk)
 void MapBlock::deSerializeNetworkSpecific(std::istream &is)
 {
        try {
-               int version = readU8(is);
-               //if(version != 1)
-               //      throw SerializationError("unsupported MapBlock version");
-               if(version >= 1) {
-                       readF1000(is); // deprecated heat
-                       readF1000(is); // deprecated humidity
-               }
-       }
-       catch(SerializationError &e)
-       {
+               readU8(is);
+               //const u8 version = readU8(is);
+               //if (version != 1)
+                       //throw SerializationError("unsupported MapBlock version");
+
+       } catch(SerializationError &e) {
                warningstream<<"MapBlock::deSerializeNetworkSpecific(): Ignoring an error"
                                <<": "<<e.what()<<std::endl;
        }
@@ -673,13 +668,13 @@ void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk)
                        // Ignore errors
                        try {
                                if (version <= 15) {
-                                       std::string data = deSerializeString(is);
+                                       std::string data = deSerializeString16(is);
                                        std::istringstream iss(data, std::ios_base::binary);
                                        content_nodemeta_deserialize_legacy(iss,
                                                &m_node_metadata, &m_node_timers,
                                                m_gamedef->idef());
                                } else {
-                                       //std::string data = deSerializeLongString(is);
+                                       //std::string data = deSerializeString32(is);
                                        std::ostringstream oss(std::ios_base::binary);
                                        decompressZlib(is, oss);
                                        std::istringstream iss(oss.str(), std::ios_base::binary);
@@ -721,10 +716,10 @@ void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk)
 
                // Timestamp
                if (version >= 17) {
-                       setTimestamp(readU32(is));
+                       setTimestampNoChangedFlag(readU32(is));
                        m_disk_timestamp = m_timestamp;
                } else {
-                       setTimestamp(BLOCK_TIMESTAMP_UNDEFINED);
+                       setTimestampNoChangedFlag(BLOCK_TIMESTAMP_UNDEFINED);
                }
 
                // Dynamically re-set ids based on node names
@@ -797,7 +792,7 @@ std::string analyze_block(MapBlock *block)
 
        v3s16 p = block->getPos();
        char spos[25];
-       snprintf(spos, sizeof(spos), "(%2d,%2d,%2d), ", p.X, p.Y, p.Z);
+       porting::mt_snprintf(spos, sizeof(spos), "(%2d,%2d,%2d), ", p.X, p.Y, p.Z);
        desc<<spos;
 
        switch(block->getModified())