8: server-initiated block transfers and all kinds of stuff 9: block objects 10: water pressure 11: zlib'd blocks, block flags 12: UnlimitedHeightmap now uses interpolated areas 13: Mapgen v2 14: NodeMetadata 15: StaticObjects 16: larger maximum size of node metadata, and compression 17: MapBlocks contain timestamp 18: new generator (not really necessary, but it's there) 19: new content type handling 20: many existing content types translated to extended ones 21: dynamic content type allocation 22: minerals removed, facedir & wallmounted changed 23: new node metadata format 24: 16-bit node ids and node timers (never released as stable) 25: Improved node timer format 26: Never written; read the same as 25 27: Added light spreading flags to blocks 28: Added "private" flag to NodeMetadata*/// This represents an uninitialized or invalid format#define SER_FMT_VER_INVALID 255// Highest supported serialization version#define SER_FMT_VER_HIGHEST_READ 28// Saved on disk version#define SER_FMT_VER_HIGHEST_WRITE 28// Lowest supported serialization version#define SER_FMT_VER_LOWEST_READ 0// Lowest serialization version for writing// Can't do < 24 anymore; we have 16-bit dynamically allocated node IDs// in memory; conversion just won't work in this direction.#define SER_FMT_VER_LOWEST_WRITE 24inlineboolser_ver_supported(s32 v) {return v >= SER_FMT_VER_LOWEST_READ && v <= SER_FMT_VER_HIGHEST_READ;}/* Misc. serialization functions*/voidcompressZlib(const u8 *data,size_t data_size,std::ostream &os,int level = -1);voidcompressZlib(conststd::string &data,std::ostream &os,int level = -1);voiddecompressZlib(std::istream &is,std::ostream &os);// These choose between zlib and a self-made one according to versionvoidcompress(const SharedBuffer<u8> &data,std::ostream &os, u8 version);//void compress(const std::string &data, std::ostream &os, u8 version);voiddecompress(std::istream &is,std::ostream &os, u8 version);