From 7b3e2e4bf793466a351510c7fbbd08234e93bb0e Mon Sep 17 00:00:00 2001 From: mat <27899617+mat-1@users.noreply.github.com> Date: Thu, 21 Sep 2023 11:16:29 -0500 Subject: 1.20.2 (#99) * add configuration state * start updating to 23w31a * implement a bit more of 23w31a * chunk batching * start adding configuration state * ioasfhjgsd * almost works * configuration state mostly implemented * handle other packets in configuration state and fix keepalive * cleanup, fix warnings * 23w32a * fix some doctests * 23w33a * 23w35a * 1.20.2-pre2 * fix system conflicts * 1.20.2-pre4 * make tests compile * tests pass * 1.20.2-rc2 * 1.20.2 * Revert "1.20.2" This reverts commit dd152fd265332ead333c919e585ded6d609d7468. * didn't mean to commit that code --------- Co-authored-by: mat --- azalea-nbt/src/decode.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'azalea-nbt/src/decode.rs') diff --git a/azalea-nbt/src/decode.rs b/azalea-nbt/src/decode.rs index 35392b15..b2cc8c77 100755 --- a/azalea-nbt/src/decode.rs +++ b/azalea-nbt/src/decode.rs @@ -255,6 +255,9 @@ impl Nbt { } /// Read the NBT data. This will return a compound tag with a single item. + /// + /// Minecraft usually uses this function when reading from files. + /// [`Nbt::read_any_tag`] is used when reading from the network. pub fn read(stream: &mut Cursor<&[u8]>) -> Result { // default to compound tag @@ -271,6 +274,17 @@ impl Nbt { Ok(Nbt::Compound(map)) } + /// Read the NBT data. There is no guarantee that the tag will be a compound + /// with a single item. + /// + /// The Minecraft protocol uses this function when reading from the network. + /// [`Nbt::read`] is usually used when reading from files. + pub fn read_any_tag(stream: &mut Cursor<&[u8]>) -> Result { + let tag_id = stream.read_u8().unwrap_or(0); + let tag = Nbt::read_known(stream, tag_id)?; + Ok(tag) + } + /// Read the NBT data compressed wtih zlib. pub fn read_zlib(stream: &mut impl BufRead) -> Result { let mut gz = ZlibDecoder::new(stream); @@ -290,7 +304,7 @@ impl Nbt { impl McBufReadable for Nbt { fn read_from(buf: &mut Cursor<&[u8]>) -> Result { - Ok(Nbt::read(buf)?) + Ok(Nbt::read_any_tag(buf)?) } } impl From for BufReadError { -- cgit v1.2.3