diff options
| author | mat <27899617+mat-1@users.noreply.github.com> | 2022-06-08 23:37:54 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-08 23:37:54 +0000 |
| commit | 601637bd48fcba826da01725430268f706181449 (patch) | |
| tree | 5b58723b931450d358d7e4387d87cc8e8b9166b2 /azalea-protocol/src/mc_buf | |
| parent | ea7249fb77a8e07d232600081c9c3df5f698d70f (diff) | |
| parent | fb1d419a3d4207a293a1ad6001253192f1b4d12f (diff) | |
| download | azalea-drasl-601637bd48fcba826da01725430268f706181449.tar.xz | |
Merge pull request #7 from mat-1/1.19
1.19
Diffstat (limited to 'azalea-protocol/src/mc_buf')
| -rw-r--r-- | azalea-protocol/src/mc_buf/read.rs | 47 | ||||
| -rw-r--r-- | azalea-protocol/src/mc_buf/write.rs | 46 |
2 files changed, 39 insertions, 54 deletions
diff --git a/azalea-protocol/src/mc_buf/read.rs b/azalea-protocol/src/mc_buf/read.rs index 1c4fbd6f..7cb0bb09 100644 --- a/azalea-protocol/src/mc_buf/read.rs +++ b/azalea-protocol/src/mc_buf/read.rs @@ -2,8 +2,10 @@ use super::{UnsizedByteArray, MAX_STRING_LENGTH}; use azalea_chat::component::Component; use azalea_core::{ difficulty::Difficulty, game_type::GameType, resource_location::ResourceLocation, - serializable_uuid::SerializableUuid, BlockPos, ChunkSectionPos, Direction, Slot, SlotData, + serializable_uuid::SerializableUuid, BlockPos, ChunkSectionPos, Direction, GlobalPos, Slot, + SlotData, }; +use azalea_crypto::SaltSignaturePair; use byteorder::{ReadBytesExt, BE}; use serde::Deserialize; use std::{collections::HashMap, hash::Hash, io::Read}; @@ -311,56 +313,48 @@ impl McBufReadable for Vec<u8> { } } -// string impl McBufReadable for String { fn read_into(buf: &mut impl Read) -> Result<Self, String> { buf.read_utf() } } -// ResourceLocation impl McBufReadable for ResourceLocation { fn read_into(buf: &mut impl Read) -> Result<Self, String> { buf.read_resource_location() } } -// u32 impl McBufReadable for u32 { fn read_into(buf: &mut impl Read) -> Result<Self, String> { Readable::read_int(buf).map(|i| i as u32) } } -// u32 varint impl McBufVarReadable for u32 { fn var_read_into(buf: &mut impl Read) -> Result<Self, String> { buf.read_varint().map(|i| i as u32) } } -// u16 impl McBufReadable for u16 { fn read_into(buf: &mut impl Read) -> Result<Self, String> { buf.read_short().map(|i| i as u16) } } -// i16 impl McBufReadable for i16 { fn read_into(buf: &mut impl Read) -> Result<Self, String> { buf.read_short() } } -// u16 varint impl McBufVarReadable for u16 { fn var_read_into(buf: &mut impl Read) -> Result<Self, String> { buf.read_varint().map(|i| i as u16) } } -// Vec<T> varint impl<T: McBufVarReadable> McBufVarReadable for Vec<T> { fn var_read_into(buf: &mut impl Read) -> Result<Self, String> { let length = buf.read_varint()? as usize; @@ -372,70 +366,60 @@ impl<T: McBufVarReadable> McBufVarReadable for Vec<T> { } } -// i64 impl McBufReadable for i64 { fn read_into(buf: &mut impl Read) -> Result<Self, String> { buf.read_long() } } -// u64 impl McBufReadable for u64 { fn read_into(buf: &mut impl Read) -> Result<Self, String> { i64::read_into(buf).map(|i| i as u64) } } -// bool impl McBufReadable for bool { fn read_into(buf: &mut impl Read) -> Result<Self, String> { buf.read_boolean() } } -// u8 impl McBufReadable for u8 { fn read_into(buf: &mut impl Read) -> Result<Self, String> { buf.read_byte() } } -// i8 impl McBufReadable for i8 { fn read_into(buf: &mut impl Read) -> Result<Self, String> { buf.read_byte().map(|i| i as i8) } } -// f32 impl McBufReadable for f32 { fn read_into(buf: &mut impl Read) -> Result<Self, String> { buf.read_float() } } -// f64 impl McBufReadable for f64 { fn read_into(buf: &mut impl Read) -> Result<Self, String> { buf.read_double() } } -// GameType impl McBufReadable for GameType { fn read_into(buf: &mut impl Read) -> Result<Self, String> { GameType::from_id(buf.read_byte()?) } } -// Option<GameType> impl McBufReadable for Option<GameType> { fn read_into(buf: &mut impl Read) -> Result<Self, String> { GameType::from_optional_id(buf.read_byte()? as i8) } } -// Option<String> impl<T: McBufReadable> McBufReadable for Option<T> { default fn read_into(buf: &mut impl Read) -> Result<Self, String> { let present = buf.read_boolean()?; @@ -447,21 +431,18 @@ impl<T: McBufReadable> McBufReadable for Option<T> { } } -// azalea_nbt::Tag impl McBufReadable for azalea_nbt::Tag { fn read_into(buf: &mut impl Read) -> Result<Self, String> { buf.read_nbt() } } -// Difficulty impl McBufReadable for Difficulty { fn read_into(buf: &mut impl Read) -> Result<Self, String> { Ok(Difficulty::by_id(u8::read_into(buf)?)) } } -// Component impl McBufReadable for Component { fn read_into(buf: &mut impl Read) -> Result<Self, String> { let string = buf.read_utf()?; @@ -472,7 +453,6 @@ impl McBufReadable for Component { } } -// Slot impl McBufReadable for Slot { fn read_into(buf: &mut impl Read) -> Result<Self, String> { let present = buf.read_boolean()?; @@ -486,14 +466,12 @@ impl McBufReadable for Slot { } } -// Uuid impl McBufReadable for Uuid { fn read_into(buf: &mut impl Read) -> Result<Self, String> { buf.read_uuid() } } -// BlockPos impl McBufReadable for BlockPos { fn read_into(buf: &mut impl Read) -> Result<Self, String> { let val = u64::read_into(buf)?; @@ -504,7 +482,15 @@ impl McBufReadable for BlockPos { } } -// Direction +impl McBufReadable for GlobalPos { + fn read_into(buf: &mut impl Read) -> Result<Self, String> { + Ok(GlobalPos { + pos: BlockPos::read_into(buf)?, + dimension: ResourceLocation::read_into(buf)?, + }) + } +} + impl McBufReadable for Direction { fn read_into(buf: &mut impl Read) -> Result<Self, String> { match buf.read_varint()? { @@ -519,7 +505,6 @@ impl McBufReadable for Direction { } } -// ChunkSectionPos impl McBufReadable for ChunkSectionPos { fn read_into(buf: &mut impl Read) -> Result<Self, String> { let long = i64::read_into(buf)?; @@ -530,3 +515,11 @@ impl McBufReadable for ChunkSectionPos { }) } } + +impl McBufReadable for SaltSignaturePair { + fn read_into(buf: &mut impl Read) -> Result<Self, String> { + let salt = u64::read_into(buf)?; + let signature = Vec::<u8>::read_into(buf)?; + Ok(SaltSignaturePair { salt, signature }) + } +} diff --git a/azalea-protocol/src/mc_buf/write.rs b/azalea-protocol/src/mc_buf/write.rs index c46297a6..80ffaecd 100644 --- a/azalea-protocol/src/mc_buf/write.rs +++ b/azalea-protocol/src/mc_buf/write.rs @@ -2,8 +2,9 @@ use super::{UnsizedByteArray, MAX_STRING_LENGTH}; use azalea_chat::component::Component; use azalea_core::{ difficulty::Difficulty, game_type::GameType, resource_location::ResourceLocation, - serializable_uuid::SerializableUuid, BlockPos, ChunkSectionPos, Direction, Slot, + serializable_uuid::SerializableUuid, BlockPos, ChunkSectionPos, Direction, GlobalPos, Slot, }; +use azalea_crypto::SaltSignaturePair; use byteorder::{BigEndian, WriteBytesExt}; use std::{collections::HashMap, io::Write}; use uuid::Uuid; @@ -192,28 +193,24 @@ impl McBufWritable for Vec<u8> { } } -// string impl McBufWritable for String { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { buf.write_utf(self) } } -// ResourceLocation impl McBufWritable for ResourceLocation { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { buf.write_resource_location(self) } } -// u32 impl McBufWritable for u32 { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { i16::write_into(&(*self as i16), buf) } } -// u32 varint impl McBufVarWritable for u32 { fn var_write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { i32::var_write_into(&(*self as i32), buf) @@ -243,21 +240,18 @@ impl McBufVarWritable for u64 { } } -// u16 impl McBufWritable for u16 { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { i16::write_into(&(*self as i16), buf) } } -// u16 varint impl McBufVarWritable for u16 { fn var_write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { i32::var_write_into(&(*self as i32), buf) } } -// Vec<T> varint impl<T: McBufVarWritable> McBufVarWritable for Vec<T> { fn var_write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { u32::var_write_into(&(self.len() as u32), buf)?; @@ -268,77 +262,66 @@ impl<T: McBufVarWritable> McBufVarWritable for Vec<T> { } } -// u8 impl McBufWritable for u8 { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { buf.write_byte(*self) } } -// i16 impl McBufWritable for i16 { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { Writable::write_short(buf, *self) } } -// i64 impl McBufWritable for i64 { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { Writable::write_long(buf, *self) } } -// u64 impl McBufWritable for u64 { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { i64::write_into(&(*self as i64), buf) } } -// bool impl McBufWritable for bool { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { buf.write_boolean(*self) } } -// i8 impl McBufWritable for i8 { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { buf.write_byte(*self as u8) } } -// f32 impl McBufWritable for f32 { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { buf.write_float(*self) } } -// f64 impl McBufWritable for f64 { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { buf.write_double(*self) } } -// GameType impl McBufWritable for GameType { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { u8::write_into(&self.to_id(), buf) } } -// Option<GameType> impl McBufWritable for Option<GameType> { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { buf.write_byte(GameType::to_optional_id(self) as u8) } } -// Option<String> impl<T: McBufWritable> McBufWritable for Option<T> { default fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { if let Some(s) = self { @@ -351,21 +334,18 @@ impl<T: McBufWritable> McBufWritable for Option<T> { } } -// azalea_nbt::Tag impl McBufWritable for azalea_nbt::Tag { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { buf.write_nbt(self) } } -// Difficulty impl McBufWritable for Difficulty { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { u8::write_into(&self.id(), buf) } } -// Component impl McBufWritable for Component { // async fn read_into(buf: &mut impl Read) -> Result<Self, String> // where @@ -383,7 +363,6 @@ impl McBufWritable for Component { } } -// Slot impl McBufWritable for Slot { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { match self { @@ -399,7 +378,6 @@ impl McBufWritable for Slot { } } -// Slot impl McBufWritable for Uuid { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { buf.write_uuid(self)?; @@ -408,7 +386,6 @@ impl McBufWritable for Uuid { } } -// BlockPos impl McBufWritable for BlockPos { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { buf.write_long( @@ -419,14 +396,21 @@ impl McBufWritable for BlockPos { } } -// Direction +impl McBufWritable for GlobalPos { + fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { + BlockPos::write_into(&self.pos, buf)?; + ResourceLocation::write_into(&self.dimension, buf)?; + + Ok(()) + } +} + impl McBufWritable for Direction { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { buf.write_varint(*self as i32) } } -// ChunkSectionPos impl McBufWritable for ChunkSectionPos { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { let long = (((self.x & 0x3FFFFF) as i64) << 42) @@ -436,3 +420,11 @@ impl McBufWritable for ChunkSectionPos { Ok(()) } } + +impl McBufWritable for SaltSignaturePair { + fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { + self.salt.write_into(buf)?; + self.signature.write_into(buf)?; + Ok(()) + } +} |
