use rust_mc_proto::{DataReader, DataWriter}; use crate::ServerError; use super::ReadWriteAny; #[derive(Clone)] pub struct SoundEvent { pub name: String, pub fixed_range: Option, } impl ReadWriteAny for T { fn read_any(&mut self) -> Result { 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(()) } }