#[non_exhaustive]pub enum ComponentData {
Empty,
Bool(bool),
I32(i32),
Float(f32),
Tool(Tool),
Equippable(Equippable),
Enchantments(ItemEnchantments),
TextComponent(Box<TextComponent>),
Todo,
Other(Vec<u8>),
}Expand description
ABI-stable component value storage.
Each vanilla component type gets its own variant for type-safe, zero-cost access.
Plugin-defined components use the Other variant with serialized bytes that
the plugin is responsible for interpreting.
§Example (vanilla code)
let data = ComponentData::I32(10);
if let ComponentData::I32(d) = data {
println!("Value: {}", d);
}§Example (plugin code)
// Plugin stores its own serialized data
let my_bytes = my_energy.serialize();
let data = ComponentData::Other(my_bytes);
// Plugin retrieves and deserializes
if let ComponentData::Other(bytes) = data {
let energy = MyEnergy::deserialize(&bytes)?;
}Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Empty
Component with no data (e.g., Unbreakable, Glider, CreativeSlotLock)
Bool(bool)
Boolean component (e.g., EnchantmentGlintOverride)
I32(i32)
i32 component (e.g., MaxStackSize, MaxDamage, Damage, RepairCost) Stored as VarInt on network.
Float(f32)
Float component (e.g., PotionDurationScale)
Tool(Tool)
minecraft:tool
Equippable(Equippable)
minecraft:equippable
Enchantments(ItemEnchantments)
minecraft:enchantments / minecraft:stored_enchantments
TextComponent(Box<TextComponent>)
TextComponent component (e.g., CustomName, ItemName)
Todo
Placeholder for components that aren’t implemented yet.
Other(Vec<u8>)
Opaque bytes for plugin-defined components. The plugin is responsible for serialization/deserialization.
Implementations§
Source§impl ComponentData
impl ComponentData
Sourcepub const fn discriminant(&self) -> ComponentDataDiscriminant
pub const fn discriminant(&self) -> ComponentDataDiscriminant
Returns the discriminant of this component data variant. Used for runtime type validation.
Sourcepub fn compute_hash(&self) -> i32
pub fn compute_hash(&self) -> i32
Computes a hash of this component value for validation.
Uses CRC32C hashing matching Minecraft’s HashOps implementation.
Trait Implementations§
Source§impl Clone for ComponentData
impl Clone for ComponentData
Source§fn clone(&self) -> ComponentData
fn clone(&self) -> ComponentData
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ComponentData
impl Debug for ComponentData
Source§impl PartialEq for ComponentData
impl PartialEq for ComponentData
Source§fn eq(&self, other: &ComponentData) -> bool
fn eq(&self, other: &ComponentData) -> bool
self and other values to be equal, and is used by ==.