aboutsummaryrefslogtreecommitdiff
path: root/azalea-chat/src/text_component.rs
diff options
context:
space:
mode:
Diffstat (limited to 'azalea-chat/src/text_component.rs')
-rwxr-xr-xazalea-chat/src/text_component.rs19
1 files changed, 17 insertions, 2 deletions
diff --git a/azalea-chat/src/text_component.rs b/azalea-chat/src/text_component.rs
index 0d88ca05..6715c93e 100755
--- a/azalea-chat/src/text_component.rs
+++ b/azalea-chat/src/text_component.rs
@@ -1,6 +1,6 @@
-use std::fmt::Display;
-
use crate::{base_component::BaseComponent, style::ChatFormatting, Component};
+use serde::{ser::SerializeMap, Serialize, Serializer, __private::ser::FlatMapSerializer};
+use std::fmt::Display;
/// A component that contains text that's the same in all locales.
#[derive(Clone, Debug, Default, PartialEq)]
@@ -9,6 +9,21 @@ pub struct TextComponent {
pub text: String,
}
+impl Serialize for TextComponent {
+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+ where
+ S: Serializer,
+ {
+ let mut state = serializer.serialize_map(None)?;
+ state.serialize_entry("text", &self.text)?;
+ Serialize::serialize(&self.base, FlatMapSerializer(&mut state))?;
+ if !self.base.siblings.is_empty() {
+ state.serialize_entry("extra", &self.base.siblings)?;
+ }
+ state.end()
+ }
+}
+
const LEGACY_FORMATTING_CODE_SYMBOL: char = 'ยง';
/// Convert a legacy color code string into a Component