#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"
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)
}
}
-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");
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
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);
}
/*
*/
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
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)
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
// 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
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;
}
// 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);
// 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
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())