add read+write position
This commit is contained in:
parent
6f2dc21d58
commit
50262ff1d7
@ -1,4 +1,4 @@
|
|||||||
use rust_mc_proto::{DataReader, DataWriter};
|
use rust_mc_proto::{DataReader, DataWriter, Packet};
|
||||||
|
|
||||||
use super::ServerError;
|
use super::ServerError;
|
||||||
|
|
||||||
@ -9,3 +9,20 @@ pub trait ReadWriteNBT<T>: DataReader + DataWriter {
|
|||||||
fn read_nbt(&mut self) -> Result<T, ServerError>;
|
fn read_nbt(&mut self) -> Result<T, ServerError>;
|
||||||
fn write_nbt(&mut self, val: &T) -> Result<(), ServerError>;
|
fn write_nbt(&mut self, val: &T) -> Result<(), ServerError>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub trait ReadWritePosition: DataReader + DataWriter {
|
||||||
|
fn read_position(&mut self) -> Result<(i64, i64, i64), ServerError>;
|
||||||
|
fn write_position(&mut self, x: i64, y: i64, z: i64) -> Result<(), ServerError>;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ReadWritePosition for Packet {
|
||||||
|
fn read_position(&mut self) -> Result<(i64, i64, i64), ServerError> {
|
||||||
|
let val = self.read_long()?;
|
||||||
|
Ok((val >> 38, val << 52 >> 52, val << 26 >> 38))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn write_position(&mut self, x: i64, y: i64, z: i64) -> Result<(), ServerError> {
|
||||||
|
Ok(self.write_long(((x & 0x3FFFFFF) << 38) | ((z & 0x3FFFFFF) << 12) | (y & 0xFFF))?)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user