Added uuid string conversion
This commit is contained in:
parent
9ff2e95c66
commit
34cee9a927
|
@ -28,6 +28,7 @@ pub enum PacketError {
|
||||||
ValueTooLarge,
|
ValueTooLarge,
|
||||||
RanOutOfBytes,
|
RanOutOfBytes,
|
||||||
InvalidPacketId,
|
InvalidPacketId,
|
||||||
|
InvalidUUIDString,
|
||||||
EncryptionError,
|
EncryptionError,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,6 +41,8 @@ impl fmt::Display for PacketError {
|
||||||
write!(f, "Ran out of bytes while reading VarInt"),
|
write!(f, "Ran out of bytes while reading VarInt"),
|
||||||
PacketError::InvalidPacketId =>
|
PacketError::InvalidPacketId =>
|
||||||
write!(f, "Invalid packet id"),
|
write!(f, "Invalid packet id"),
|
||||||
|
PacketError::InvalidUUIDString =>
|
||||||
|
write!(f, "Invalid UUID format"),
|
||||||
PacketError::EncryptionError =>
|
PacketError::EncryptionError =>
|
||||||
write!(f, "Encryption Error"),
|
write!(f, "Encryption Error"),
|
||||||
}
|
}
|
||||||
|
@ -405,23 +408,6 @@ async fn read_var_int_stream_encrypted(
|
||||||
|
|
||||||
Ok(varint)
|
Ok(varint)
|
||||||
}
|
}
|
||||||
fn read_var_int_vec(stream: &mut Vec<u8>) -> Result<i32> {
|
|
||||||
let mut data: Vec<u8> = vec![];
|
|
||||||
|
|
||||||
loop {
|
|
||||||
let current_byte = stream.remove(0);
|
|
||||||
|
|
||||||
data.append(&mut vec![current_byte]);
|
|
||||||
|
|
||||||
if (current_byte & CONTINUE_BIT) == 0 {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let varint = get_var_int(&mut data)?;
|
|
||||||
|
|
||||||
Ok(varint)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub trait PacketArray: Sized {
|
pub trait PacketArray: Sized {
|
||||||
fn get(data: &mut Vec<u8>) -> Result<Self>;
|
fn get(data: &mut Vec<u8>) -> Result<Self>;
|
||||||
|
@ -589,6 +575,38 @@ pub fn convert_uuid(value: u128) -> Vec<u8> {
|
||||||
(value & 0xFF) as u8,
|
(value & 0xFF) as u8,
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
pub fn uuid_u128_to_string(uuid: u128) -> String {
|
||||||
|
let uuid_bytes = convert_uuid(uuid);
|
||||||
|
format!(
|
||||||
|
"{:08x}-{:04x}-{:04x}-{:04x}-{:012x}",
|
||||||
|
get_u32(&mut vec![
|
||||||
|
uuid_bytes[0],
|
||||||
|
uuid_bytes[1],
|
||||||
|
uuid_bytes[2],
|
||||||
|
uuid_bytes[3],
|
||||||
|
]),
|
||||||
|
get_u16(&mut vec![uuid_bytes[4], uuid_bytes[5]]),
|
||||||
|
get_u16(&mut vec![uuid_bytes[6], uuid_bytes[7]]),
|
||||||
|
get_u16(&mut vec![uuid_bytes[8], uuid_bytes[9]]),
|
||||||
|
get_u64(&mut vec![
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
uuid_bytes[10],
|
||||||
|
uuid_bytes[11],
|
||||||
|
uuid_bytes[12],
|
||||||
|
uuid_bytes[13],
|
||||||
|
uuid_bytes[14],
|
||||||
|
uuid_bytes[15],
|
||||||
|
]),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
pub fn uuid_string_to_u128(uuid: &str) -> Result<u128> {
|
||||||
|
let cleaned_uuid = uuid.replace("-", "");
|
||||||
|
if cleaned_uuid.len() != 32 {
|
||||||
|
return Err(Box::new(PacketError::InvalidUUIDString));
|
||||||
|
}
|
||||||
|
Ok(u128::from_str_radix(&cleaned_uuid, 16)?)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn get_var_int(data: &mut Vec<u8>) -> Result<i32> {
|
pub fn get_var_int(data: &mut Vec<u8>) -> Result<i32> {
|
||||||
Ok(get_var(data, 32)? as i32)
|
Ok(get_var(data, 32)? as i32)
|
||||||
|
|
Loading…
Reference in New Issue