diff options
Diffstat (limited to 'src/World')
-rw-r--r-- | src/World/Chunk.cpp | 4 | ||||
-rw-r--r-- | src/World/Chunk.hpp | 7 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/World/Chunk.cpp b/src/World/Chunk.cpp index f3a140d..fb46466 100644 --- a/src/World/Chunk.cpp +++ b/src/World/Chunk.cpp @@ -95,6 +95,10 @@ Chunk::Chunk(uint8_t *buffer, size_t buflen) { if (!(*this) || tag.first != "") throw std::invalid_argument("invalid root tag"); + + sections = (*this)->get<const NBT::ListTag<NBT::CompoundTag>>("Level", "Sections"); + if (!sections) + throw std::invalid_argument("no sections found"); } } diff --git a/src/World/Chunk.hpp b/src/World/Chunk.hpp index 7c485eb..3ed6cf4 100644 --- a/src/World/Chunk.hpp +++ b/src/World/Chunk.hpp @@ -29,6 +29,7 @@ #include "../UniqueCPtr.hpp" #include "../NBT/CompoundTag.hpp" +#include "../NBT/ListTag.hpp" #include <cstdint> #include <tuple> @@ -44,8 +45,14 @@ public: private: static std::pair<UniqueCPtr<uint8_t[]>, size_t> inflateChunk(uint8_t *data, size_t len); + std::shared_ptr<const NBT::ListTag<NBT::CompoundTag>> sections; + public: Chunk(uint8_t *buffer, size_t buflen); + + const NBT::ListTag<NBT::CompoundTag> & getSections() const { + return *sections; + } }; } |