Skip to main content

AttributeMap

Struct AttributeMap 

Source
pub struct AttributeMap {
    instances: Vec<Option<AttributeInstance>>,
    to_update: DirtySet,
    to_sync: DirtySet,
}
Expand description

Per-entity container for attribute instances with dirty tracking

Indexed by attribute registry ID. Two dirty sets match vanilla’s design:

  • to_update: all dirty attributes, drained for server-side effects
  • to_sync: syncable dirty attributes, drained for network packets

Fields§

§instances: Vec<Option<AttributeInstance>>§to_update: DirtySet§to_sync: DirtySet

Implementations§

Source§

impl AttributeMap

Source

pub fn new_for_entity(entity_type: EntityTypeRef) -> Self

Creates an AttributeMap from an entity type’s default attributes

§Panics

Panics if generated entity default attributes reference an attribute that is missing from the generated vanilla registry.

Source

pub fn has_attribute(&self, attribute: AttributeRef) -> bool

Returns true if the entity has this attribute registered

Source

pub fn get_value(&self, attribute: AttributeRef) -> Option<f64>

Gets the calculated value of an attribute

Source

pub fn required_value(&self, attribute: AttributeRef) -> f64

Gets the calculated value of an attribute that must exist on this entity.

§Panics

Panics if the entity type was not constructed with the requested attribute. Vanilla’s AttributeSupplier.getValue is a hard failure for missing attributes; using this keeps required living attributes from silently falling back to unrelated defaults.

Source

pub fn get_base_value(&self, attribute: AttributeRef) -> Option<f64>

Gets the base value of an attribute

Source

pub fn get_instance( &self, attribute: AttributeRef, ) -> Option<&AttributeInstance>

Gets a reference to an attribute instance

Source

pub(crate) fn to_vanilla_nbt(&self) -> NbtList

Serializes the vanilla LivingEntity.attributes list.

Source

pub fn has_modifier( &self, attribute: AttributeRef, modifier_id: &Identifier, ) -> bool

Returns whether an attribute has a modifier with the given ID.

Source

pub fn set_base_value(&mut self, attribute: AttributeRef, value: f64)

Sets the base value of an attribute

Source

pub fn add_modifier( &mut self, attribute: AttributeRef, modifier: AttributeModifier, persistent: bool, ) -> bool

Adds a modifier to an attribute. Returns false if the modifier ID already exists

Source

pub fn set_modifier( &mut self, attribute: AttributeRef, modifier: AttributeModifier, persistent: bool, )

Adds or replaces a modifier on an attribute

Source

pub fn remove_modifier( &mut self, attribute: AttributeRef, modifier_id: &Identifier, ) -> bool

Removes a modifier from an attribute. Returns true if it existed

Source

fn mark_dirty(&mut self, id: usize, attribute: AttributeRef)

Source

pub fn has_dirty_updates(&self) -> bool

Returns true if there are dirty attributes needing server-side effects

Source

pub fn has_dirty_sync(&self) -> bool

Returns true if there are syncable dirty attributes needing network send

Source

pub fn drain_dirty_updates(&mut self) -> Vec<AttributeRef>

Drains to_update and returns the dirty attribute refs

Source

pub fn drain_dirty_sync(&mut self) -> Vec<AttributeSnapshot>

Drains to_sync and builds AttributeSnapshots for CUpdateAttributes

Source

pub fn syncable_snapshots(&self) -> Vec<AttributeSnapshot>

Returns snapshots for ALL syncable attributes (initial tracking sync)

Source

pub fn remove_all_transient(&mut self)

Removes all transient modifiers (e.g. on respawn)

Auto Trait Implementations§

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoShared for T

Source§

fn into_shared(self) -> Arc<Mutex<RawMutex, Self>>

Wraps this value in an Arc<SyncMutex<>>
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more