rust_mc_serv/src/data/sound.rs
2025-05-11 22:17:43 +03:00

33 lines
711 B
Rust

use rust_mc_proto::{DataReader, DataWriter};
use crate::ServerError;
use super::ReadWriteAny;
#[derive(Clone)]
pub struct SoundEvent {
pub name: String,
pub fixed_range: Option<f32>,
}
impl<T: DataReader + DataWriter> ReadWriteAny<SoundEvent> for T {
fn read_any(&mut self) -> Result<SoundEvent, ServerError> {
Ok(SoundEvent {
name: self.read_string()?,
fixed_range: if self.read_boolean()? {
Some(self.read_float()?)
} else {
None
},
})
}
fn write_any(&mut self, val: &SoundEvent) -> Result<(), ServerError> {
self.write_string(&val.name)?;
self.write_boolean(val.fixed_range.is_some())?;
if let Some(val) = val.fixed_range {
self.write_float(val)?;
}
Ok(())
}
}