diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2015-02-01 04:14:42 +0100 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2015-02-01 04:14:42 +0100 |
commit | 8a8a41a800dfe9bdcab934d6b53d9c6defd4a457 (patch) | |
tree | f9d40b96ee3413cbe7a402a4b4abad607b2a1c7c /src/NBT/Tag.cpp | |
parent | fc1fc8fbbc9dd9534f40de348210ea66b6defe42 (diff) | |
download | MinedMap-8a8a41a800dfe9bdcab934d6b53d9c6defd4a457.tar MinedMap-8a8a41a800dfe9bdcab934d6b53d9c6defd4a457.zip |
Parse chunk data on demand
Diffstat (limited to 'src/NBT/Tag.cpp')
-rw-r--r-- | src/NBT/Tag.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/NBT/Tag.cpp b/src/NBT/Tag.cpp index 1829dc5..c75cb9f 100644 --- a/src/NBT/Tag.cpp +++ b/src/NBT/Tag.cpp @@ -90,7 +90,7 @@ std::shared_ptr<const Tag> Tag::readTag(Type type, Buffer *buffer) { } std::shared_ptr<const Tag> Tag::readList(Buffer *buffer) { - Type type = static_cast<Type>(buffer->get()); + Type type = static_cast<Type>(buffer->get8()); switch (type) { case Type::End: @@ -135,13 +135,12 @@ std::shared_ptr<const Tag> Tag::readList(Buffer *buffer) { } std::pair<std::string, std::shared_ptr<const Tag>> Tag::readNamedTag(Buffer *buffer) { - Type type = static_cast<Type>(buffer->get()); + Type type = static_cast<Type>(buffer->get8()); if (type == Type::End) return std::make_pair("", std::shared_ptr<EndTag>(new EndTag())); - uint16_t len = buffer->get() << 8; - len |= buffer->get(); - std::string name = buffer->getString(len); + uint16_t len = buffer->get16(); + std::string name(reinterpret_cast<const char*>(buffer->get(len)), len); return std::make_pair(name, readTag(type, buffer)); } |