aboutsummaryrefslogtreecommitdiff
path: root/azalea-nbt/src
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2021-12-26 14:15:06 -0600
committermat <github@matdoes.dev>2021-12-26 14:15:06 -0600
commitaf28b0e57aeeca8790e3014f3e568c60ae892e39 (patch)
tree497fa95e62393111f0b87d31926066153679bb52 /azalea-nbt/src
parent1cdd061a999bfa16907ebcc5ab38b1863839b5f1 (diff)
downloadazalea-drasl-af28b0e57aeeca8790e3014f3e568c60ae892e39.tar.xz
reading nbt in the protocol works
Diffstat (limited to 'azalea-nbt/src')
-rw-r--r--azalea-nbt/src/decode.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/azalea-nbt/src/decode.rs b/azalea-nbt/src/decode.rs
index b21bd9a5..41689a46 100644
--- a/azalea-nbt/src/decode.rs
+++ b/azalea-nbt/src/decode.rs
@@ -121,7 +121,18 @@ impl Tag {
R: AsyncRead + std::marker::Unpin + std::marker::Send,
{
// default to compound tag
- Tag::read_known(stream, 10).await
+
+ // the parent compound only ever has one item
+ let tag_id = stream.read_u8().await.unwrap_or(0);
+ if tag_id == 0 {
+ return Ok(Tag::End);
+ }
+ let name = read_string(stream).await?;
+ let tag = Tag::read_known(stream, tag_id).await?;
+ let mut map = HashMap::with_capacity(1);
+ map.insert(name, tag);
+
+ Ok(Tag::Compound(map))
}
pub async fn read_zlib<R>(stream: &mut R) -> Result<Tag, Error>