Skip to main content

Angle

Struct Angle 

Source
pub struct Angle(pub u8);
Expand description

A rotation angle encoded as a single unsigned byte.

The Minecraft protocol represents rotations as a single byte where the full 0-255 range maps to 0-360 degrees. This is used for entity head rotation (Entity Head Look packet), entity look direction, and similar rotation fields. The conversion formula is:

  • Byte to degrees: value / 256.0 * 360.0
  • Degrees to byte: degrees / 360.0 * 256.0

The mapping wraps naturally: 256 steps for a full rotation gives approximately 1.4° precision per step, which is sufficient for visual entity rotation in the game.

Tuple Fields§

§0: u8

Implementations§

Source§

impl Angle

Source

pub fn from_degrees(degrees: f32) -> Self

Creates an Angle from a degree value.

The degree value is normalized to the 0-255 byte range. Values outside 0-360 wrap naturally (e.g., 720° wraps to the same byte as 360°, which is 0).

Source

pub fn to_degrees(self) -> f32

Converts the angle to degrees in the range 0.0 to ~359.0.

The result has approximately 1.4° precision due to the single-byte encoding. A byte value of 0 maps to 0°, 64 to 90°, 128 to 180°, and 192 to 270°.

Trait Implementations§

Source§

impl Clone for Angle

Source§

fn clone(&self) -> Angle

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Angle

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Decode for Angle

Decodes an Angle from a single unsigned byte.

Reads exactly one byte. Any byte value is valid — the full 0-255 range maps to 0-360 degrees.

Source§

fn decode(buf: &mut &[u8]) -> Result<Self>

Reads one byte and wraps it as an Angle.

Fails with Error::BufferUnderflow if the buffer is empty.

Source§

impl Encode for Angle

Encodes an Angle as a single unsigned byte.

The angle is written directly as one byte with no transformation. This is the simplest encoding in the Minecraft protocol.

Source§

fn encode(&self, buf: &mut Vec<u8>) -> Result<()>

Writes the angle as a single byte.

Source§

impl EncodedSize for Angle

An Angle always occupies exactly 1 byte on the wire.

Source§

impl Hash for Angle

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Angle

Source§

fn eq(&self, other: &Angle) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Angle

Source§

impl Eq for Angle

Source§

impl StructuralPartialEq for Angle

Auto Trait Implementations§

§

impl Freeze for Angle

§

impl RefUnwindSafe for Angle

§

impl Send for Angle

§

impl Sync for Angle

§

impl Unpin for Angle

§

impl UnsafeUnpin for Angle

§

impl UnwindSafe for Angle

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.