aboutsummaryrefslogtreecommitdiff
path: root/azalea-chat
diff options
context:
space:
mode:
authormat <27899617+mat-1@users.noreply.github.com>2022-06-25 05:09:26 +0000
committerGitHub <noreply@github.com>2022-06-25 05:09:26 +0000
commit7d3e57763e32ac9cf94180b1c714704cfbc3034d (patch)
tree2dcfe72bf09a42f6614f9dc988dc0254162ea0bf /azalea-chat
parent69c47eda4c496b13dadd80976bffd2fab7ea5894 (diff)
parentca7067e173129f3044ebc8c77634f06da29a086e (diff)
downloadazalea-drasl-7d3e57763e32ac9cf94180b1c714704cfbc3034d.tar.xz
Merge pull request #10 from mat-1/azalea-entity
azalea-entity
Diffstat (limited to 'azalea-chat')
-rwxr-xr-xazalea-chat/Cargo.toml1
-rwxr-xr-xazalea-chat/src/component.rs30
2 files changed, 31 insertions, 0 deletions
diff --git a/azalea-chat/Cargo.toml b/azalea-chat/Cargo.toml
index 192d3405..5b85f6c2 100755
--- a/azalea-chat/Cargo.toml
+++ b/azalea-chat/Cargo.toml
@@ -6,6 +6,7 @@ version = "0.1.0"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
+azalea-buf = {path = "../azalea-buf"}
azalea-language = {path = "../azalea-language"}
lazy_static = "1.4.0"
serde = "^1.0.130"
diff --git a/azalea-chat/src/component.rs b/azalea-chat/src/component.rs
index 36709cc0..d307bcbc 100755
--- a/azalea-chat/src/component.rs
+++ b/azalea-chat/src/component.rs
@@ -1,3 +1,6 @@
+use std::io::{Read, Write};
+
+use azalea_buf::{McBufReadable, McBufWritable};
use serde::{de, Deserialize, Deserializer};
use crate::{
@@ -264,3 +267,30 @@ impl<'de> Deserialize<'de> for Component {
Ok(component)
}
}
+
+impl McBufReadable for Component {
+ fn read_into(buf: &mut impl Read) -> Result<Self, String> {
+ let string = String::read_into(buf)?;
+ let json: serde_json::Value = serde_json::from_str(string.as_str())
+ .map_err(|_| "Component isn't valid JSON".to_string())?;
+ let component = Component::deserialize(json).map_err(|e| e.to_string())?;
+ Ok(component)
+ }
+}
+
+impl McBufWritable for Component {
+ // async fn read_into(buf: &mut impl Read) -> Result<Self, String>
+ // where
+ // R: AsyncRead + std::marker::Unpin + std::marker::Send,
+ // {
+ // let string = buf.read_utf().await?;
+ // let json: serde_json::Value = serde_json::from_str(string.as_str())
+ // .map_err(|e| "Component isn't valid JSON".to_string())?;
+ // let component = Component::deserialize(json).map_err(|e| e.to_string())?;
+ // Ok(component)
+ // }
+ fn write_into(&self, _buf: &mut impl Write) -> Result<(), std::io::Error> {
+ // component doesn't have serialize implemented yet
+ todo!()
+ }
+}