1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
//! Contains a few ways to style numbers. At the time of writing, Minecraft only
//! uses this for rendering scoreboard objectives.
#[cfg(feature = "azalea-buf")]
use std::io::{self, Cursor, Write};
#[cfg(feature = "azalea-buf")]
use azalea_buf::AzBuf;
#[cfg(feature = "azalea-buf")]
use azalea_registry::builtin::NumberFormatKind;
use simdnbt::owned::Nbt;
use crate::FormattedText;
#[derive(Clone, Debug, PartialEq)]
pub enum NumberFormat {
Blank,
Styled { style: Nbt },
Fixed { value: FormattedText },
}
#[cfg(feature = "azalea-buf")]
impl AzBuf for NumberFormat {
fn azalea_read(buf: &mut Cursor<&[u8]>) -> Result<Self, azalea_buf::BufReadError> {
let kind = NumberFormatKind::azalea_read(buf)?;
match kind {
NumberFormatKind::Blank => Ok(NumberFormat::Blank),
NumberFormatKind::Styled => Ok(NumberFormat::Styled {
style: simdnbt::owned::read(buf)?,
}),
NumberFormatKind::Fixed => Ok(NumberFormat::Fixed {
value: FormattedText::azalea_read(buf)?,
}),
}
}
fn azalea_write(&self, buf: &mut impl Write) -> io::Result<()> {
match self {
NumberFormat::Blank => NumberFormatKind::Blank.azalea_write(buf)?,
NumberFormat::Styled { style } => {
NumberFormatKind::Styled.azalea_write(buf)?;
style.azalea_write(buf)?;
}
NumberFormat::Fixed { value } => {
NumberFormatKind::Fixed.azalea_write(buf)?;
value.azalea_write(buf)?;
}
}
Ok(())
}
}
|