#pragma once #include #include #include "types.h" #include class BlockDecoder { public: BlockDecoder(); void reset(); void decode(const ustring &data); bool isEmpty() const; // returns "" for air, ignore and invalid nodes const std::string &getNode(u8 x, u8 y, u8 z) const; private: typedef std::unordered_map NameMap; NameMap m_nameMap; uint16_t m_blockAirId, m_blockIgnoreId; u8 m_version, m_contentWidth; ustring m_mapData; // one instance for performance ZstdDecompressor m_zstd_decompressor; };