pub struct DataComponentRegistry {
entries: Vec<ComponentEntryRef>,
by_key: FxHashMap<Identifier, usize>,
allows_registering: bool,
}Expand description
Registry of all data component types.
Stores metadata about each component type including how to serialize/deserialize them for network and persistent storage.
Fields§
§entries: Vec<ComponentEntryRef>Component entries indexed by network ID
by_key: FxHashMap<Identifier, usize>Map from component key to network ID
allows_registering: boolWhether registration is still allowed
Implementations§
Source§impl DataComponentRegistry
impl DataComponentRegistry
pub(crate) fn new() -> Self
Sourcepub(crate) fn register<T>(&mut self, component: DataComponentType<T>)where
T: Component + DowncastType + Clone + WriteTo + ReadFrom + ToNbtTag + FromNbtTag + HashComponent,
pub(crate) fn register<T>(&mut self, component: DataComponentType<T>)where
T: Component + DowncastType + Clone + WriteTo + ReadFrom + ToNbtTag + FromNbtTag + HashComponent,
Registers a vanilla component type.
The component type T must implement the necessary serialization traits.
This creates the appropriate reader/writer functions automatically.
Sourcepub(crate) fn register_transient<T>(&mut self, component: DataComponentType<T>)
pub(crate) fn register_transient<T>(&mut self, component: DataComponentType<T>)
Registers a transient vanilla component type.
Transient components have network data but no persistent component codec.
fn register_persistent<T>(&mut self, component: DataComponentType<T>)where
T: Component + DowncastType + Clone + WriteTo + ReadFrom + ToNbtTag + FromNbtTag + HashComponent,
pub(crate) fn register_validated<T>(&mut self, component: DataComponentType<T>)where
T: Component + DowncastType + Clone + WriteTo + ReadFrom + ToNbtTag + FromNbtTag + HashComponent + ValidatePersistentComponent,
Sourcepub(crate) fn register_custom_network<T>(
&mut self,
component: DataComponentType<T>,
network_reader: NetworkReader,
network_writer: NetworkWriter,
)
pub(crate) fn register_custom_network<T>( &mut self, component: DataComponentType<T>, network_reader: NetworkReader, network_writer: NetworkWriter, )
Registers a component with custom network reader/writer functions.
Use this when the default WriteTo/ReadFrom implementations don’t match
the network encoding (e.g., VarInt-encoded i32 components).
NBT serialization still uses the type’s ToNbtTag/FromNbtTag impls.
Sourcepub(crate) fn register_with_codecs<T: Component + DowncastType + HashComponent>(
&mut self,
component: DataComponentType<T>,
network_reader: NetworkReader,
network_writer: NetworkWriter,
nbt_reader: NbtReader,
nbt_writer: NbtWriter,
) -> usize
pub(crate) fn register_with_codecs<T: Component + DowncastType + HashComponent>( &mut self, component: DataComponentType<T>, network_reader: NetworkReader, network_writer: NetworkWriter, nbt_reader: NbtReader, nbt_writer: NbtWriter, ) -> usize
Registers a component with explicit network and persistent codecs.
Sourcepub(crate) fn register_transient_with_codecs<T: Component + DowncastType>(
&mut self,
component: DataComponentType<T>,
network_reader: NetworkReader,
network_writer: NetworkWriter,
) -> usize
pub(crate) fn register_transient_with_codecs<T: Component + DowncastType>( &mut self, component: DataComponentType<T>, network_reader: NetworkReader, network_writer: NetworkWriter, ) -> usize
Registers a transient component with explicit network codecs.
fn register_implemented<T: Component + DowncastType>( &mut self, component: DataComponentType<T>, network_reader: NetworkReader, network_writer: NetworkWriter, persistent_codecs: Option<(NbtReader, NbtWriter, fn(&ComponentData) -> Result<i32>, Option<fn(&ComponentData) -> Result<()>>)>, ) -> usize
Sourcepub fn get_id<T>(&self, component: DataComponentType<T>) -> Option<usize>
pub fn get_id<T>(&self, component: DataComponentType<T>) -> Option<usize>
Gets the network ID for a component type.
Sourcepub fn get_key_by_id(&self, id: usize) -> Option<&Identifier>
pub fn get_key_by_id(&self, id: usize) -> Option<&Identifier>
Gets the component key by network ID.
Trait Implementations§
Source§impl RegistryExt for DataComponentRegistry
impl RegistryExt for DataComponentRegistry
type Entry = ComponentEntry
fn freeze(&mut self)
fn by_id(&self, id: usize) -> Option<&'static ComponentEntry>
fn by_key(&self, key: &Identifier) -> Option<&'static ComponentEntry>
fn id_from_key(&self, key: &Identifier) -> Option<usize>
fn len(&self) -> usize
fn is_empty(&self) -> bool
Auto Trait Implementations§
impl Freeze for DataComponentRegistry
impl RefUnwindSafe for DataComponentRegistry
impl Send for DataComponentRegistry
impl Sync for DataComponentRegistry
impl Unpin for DataComponentRegistry
impl UnsafeUnpin for DataComponentRegistry
impl UnwindSafe for DataComponentRegistry
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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 moreArc<SyncMutex<>>