1 unstable release

0.1.0 Dec 22, 2019

#445 in Games

35 downloads per month

MIT license

21KB
496 lines

minecraft-chat

crates.io Build Status codecov

Minecraft chat are represented as json object. It's used in different packets. Information about format can be found at https://wiki.vg/Chat.

Usage

Add this to your Cargo.toml:

[dependencies]
minecraft-chat = "0.1"

Example

Serialize

use minecraft_chat::{MessageBuilder, Payload, Color};

let message = MessageBuilder::builder(Payload::text("Hello"))
   .color(Color::Yellow)
   .bold(true)
   .then(Payload::text("world"))
   .color(Color::Green)
   .bold(true)
   .italic(true)
   .then(Payload::text("!"))
   .color(Color::Blue)
   .build();

println!("{}", message.to_json().unwrap());

Deserialize

use minecraft_chat::{MessageBuilder, Color, Payload, Message};

let json = r#"
{
  "bold":true,
  "color":"yellow",
  "text":"Hello",
  "extra":[
     {
        "bold":true,
        "italic":true,
        "color":"green",
        "text":"world"
     },
     {
        "color":"blue",
        "text":"!"
     }
  ]
}
"#;

let expected_message = MessageBuilder::builder(Payload::text("Hello"))
   .color(Color::Yellow)
   .bold(true)
   .then(Payload::text("world"))
   .color(Color::Green)
   .bold(true)
   .italic(true)
   .then(Payload::text("!"))
   .color(Color::Blue)
   .build();

assert_eq!(expected_message, Message::from_json(json).unwrap());

Dependencies

~0.7–1.6MB
~35K SLoC