Skip to content

Commit

Permalink
fix wrong ServerLinkKind and serialize hex colors correctly in nbt
Browse files Browse the repository at this point in the history
  • Loading branch information
mat-1 committed Jan 14, 2025
1 parent a86d011 commit 2dcfbe9
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 23 deletions.
28 changes: 12 additions & 16 deletions azalea-chat/src/style.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,14 @@ impl Serialize for TextColor {
where
S: Serializer,
{
serializer.serialize_str(
&self
.name
.as_ref()
.map(|n| n.to_ascii_lowercase())
.unwrap_or_else(|| self.format()),
)
serializer.serialize_str(&self.serialize())
}
}

#[cfg(feature = "simdnbt")]
impl simdnbt::ToNbtTag for TextColor {
fn to_nbt_tag(self) -> simdnbt::owned::NbtTag {
self.name
.map(|n| NbtTag::String(n.to_ascii_lowercase().into()))
.unwrap_or_else(|| NbtTag::Int(self.value as i32))
NbtTag::String(self.serialize().into())
}
}

Expand Down Expand Up @@ -274,18 +266,22 @@ impl TextColor {
Self { value, name }
}

pub fn format(&self) -> String {
fn serialize(&self) -> String {
if let Some(name) = &self.name {
name.clone()
} else {
self.format_value()
}
}

pub fn format_value(&self) -> String {
format!("#{:06X}", self.value)
}
}

impl fmt::Display for TextColor {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
if let Some(name) = &self.name {
write!(f, "{}", name.clone())
} else {
write!(f, "{}", self.format())
}
write!(f, "{}", self.serialize())
}
}

Expand Down
4 changes: 2 additions & 2 deletions azalea-client/src/packet_handling/configuration.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ pub fn send_packet_events(
)) {
Ok(packet) => packet,
Err(err) => {
error!("failed to read packet: {:?}", err);
debug!("packet bytes: {:?}", raw_packet);
error!("failed to read packet: {err:?}");
debug!("packet bytes: {raw_packet:?}");
continue;
}
};
Expand Down
4 changes: 2 additions & 2 deletions azalea-client/src/packet_handling/game.rs
Original file line number Diff line number Diff line change
Expand Up @@ -165,8 +165,8 @@ pub fn send_packet_events(
{
Ok(packet) => packet,
Err(err) => {
error!("failed to read packet: {:?}", err);
debug!("packet bytes: {:?}", raw_packet);
error!("failed to read packet: {err:?}");
debug!("packet bytes: {raw_packet:?}");
continue;
}
};
Expand Down
2 changes: 1 addition & 1 deletion azalea-protocol/src/common/server_links.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ pub struct ServerLinkEntry {

#[derive(Clone, Debug, AzBuf)]
pub enum ServerLinkKind {
Known(KnownLinkKind),
Component(FormattedText),
Known(KnownLinkKind),
}

#[derive(Clone, Copy, Debug, AzBuf)]
Expand Down
3 changes: 1 addition & 2 deletions azalea-protocol/src/packets/game/c_container_set_content.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ mod tests {
use azalea_buf::AzaleaRead;

use super::ClientboundContainerSetContent;
use crate::packets::ProtocolPacket;

#[test]
fn test_read_write_container_set_content() {
Expand All @@ -29,7 +28,7 @@ mod tests {
0, 0, 0, 0, 0, 0, 0, 1, 196, 6, 0, 0, 0,
];
let mut buf = Cursor::new(contents.as_slice());
let packet = ClientboundContainerSetContent::read(&mut buf).unwrap();
let packet = ClientboundContainerSetContent::azalea_read(&mut buf).unwrap();
println!("{:?}", packet);

assert_eq!(buf.position(), contents.len() as u64);
Expand Down
26 changes: 26 additions & 0 deletions azalea-protocol/src/packets/game/c_server_links.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,29 @@ use crate::common::server_links::ServerLinkEntry;
pub struct ClientboundServerLinks {
pub links: Vec<ServerLinkEntry>,
}

#[cfg(test)]
mod tests {
use std::io::Cursor;

use azalea_buf::AzaleaRead;

use super::*;

#[test]
fn test_read_server_links() {
tracing_subscriber::fmt::try_init().ok();
let contents = [
1, 0, 10, 8, 0, 5, 99, 111, 108, 111, 114, 0, 7, 35, 48, 48, 70, 66, 57, 65, 8, 0, 4,
116, 101, 120, 116, 0, 15, 65, 98, 111, 117, 116, 32, 86, 101, 108, 111, 99, 105, 116,
97, 98, 0, 40, 104, 116, 116, 112, 115, 58, 47, 47, 119, 105, 108, 108, 105, 97, 109,
50, 55, 56, 46, 110, 101, 116, 47, 112, 114, 111, 106, 101, 99, 116, 47, 118, 101, 108,
111, 99, 105, 116, 97, 98,
];
let mut buf = Cursor::new(contents.as_slice());
let packet = ClientboundServerLinks::azalea_read(&mut buf).unwrap();
println!("{:?}", packet);

assert_eq!(buf.position(), contents.len() as u64);
}
}

0 comments on commit 2dcfbe9

Please sign in to comment.