diff options
| author | mat <github@matdoes.dev> | 2021-12-26 14:15:06 -0600 |
|---|---|---|
| committer | mat <github@matdoes.dev> | 2021-12-26 14:15:06 -0600 |
| commit | af28b0e57aeeca8790e3014f3e568c60ae892e39 (patch) | |
| tree | 497fa95e62393111f0b87d31926066153679bb52 /azalea-nbt/src | |
| parent | 1cdd061a999bfa16907ebcc5ab38b1863839b5f1 (diff) | |
| download | azalea-drasl-af28b0e57aeeca8790e3014f3e568c60ae892e39.tar.xz | |
reading nbt in the protocol works
Diffstat (limited to 'azalea-nbt/src')
| -rw-r--r-- | azalea-nbt/src/decode.rs | 13 |
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> |
