33 lines
711 B
Rust
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(())
|
|
}
|
|
}
|