Skip to main content

ItemBehavior

Trait ItemBehavior 

Source
pub trait ItemBehavior: Send + Sync {
Show 21 methods // Provided methods fn type_name(&self) -> &'static str { ... } fn get_name<'a>(&self, stack: &'a ItemStack) -> Cow<'a, TextComponent> { ... } fn get_default_instance(&self, item: ItemRef) -> ItemStack { ... } fn use_on(&self, context: &mut UseOnContext<'_>) -> InteractionResult { ... } fn use_item(&self, context: &mut UseItemContext<'_>) -> InteractionResult { ... } fn get_use_animation(&self, stack: &ItemStack) -> ItemUseAnimation { ... } fn get_use_duration( &self, stack: &ItemStack, _user: &dyn LivingEntity, ) -> i32 { ... } fn on_use_tick( &self, _world: &Arc<World>, user: LivingEntityRef<'_>, stack: &mut ItemStack, ticks_remaining: i32, ) { ... } fn release_using( &self, _stack: &mut ItemStack, _world: &Arc<World>, _user: &dyn LivingEntity, _time_left: i32, ) -> bool { ... } fn use_on_release(&self, _stack: &ItemStack) -> bool { ... } fn finish_using( &self, stack: &mut ItemStack, world: &Arc<World>, user: LivingEntityRef<'_>, ) -> ItemStack { ... } fn interact_living_entity( &self, _stack: &mut ItemStack, _player: &Player, _target: &dyn LivingEntity, _hand: InteractionHand, ) -> InteractionResult { ... } fn get_item_damage_source( &self, _attacker: &SharedEntity, ) -> Option<DamageSource> { ... } fn get_attack_damage_bonus( &self, _attacker: &dyn LivingEntity, _victim: &dyn Entity, _base_damage: f32, _damage_source: &DamageSource, ) -> f32 { ... } fn hurt_enemy( &self, _stack: &mut ItemStack, _target: &dyn LivingEntity, _attacker: &dyn LivingEntity, ) { ... } fn post_hurt_enemy( &self, _stack: &mut ItemStack, _target: &dyn LivingEntity, _attacker: &dyn LivingEntity, ) { ... } fn inventory_tick(&self, _context: &mut InventoryTickContext<'_>) { ... } fn item_damage_per_attack(&self, stack: &ItemStack) -> Option<i32> { ... } fn can_fit_inside_container_items(&self) -> bool { ... } fn as_spawn_egg(&self) -> Option<&SpawnEggItem> { ... } fn as_sign_applicator(&self) -> Option<&dyn SignApplicator> { ... }
}
Expand description

Trait defining the behavior of an item.

This trait handles dynamic/functional aspects of items:

  • Use on blocks (placing, interacting)
  • Use in air
  • etc.

Provided Methods§

Source

fn type_name(&self) -> &'static str

Returns the Rust type name of the concrete behavior implementation.

Source

fn get_name<'a>(&self, stack: &'a ItemStack) -> Cow<'a, TextComponent>

Returns this item’s display name, from the stack’s item_name component if present.

Source

fn get_default_instance(&self, item: ItemRef) -> ItemStack

Returns the canonical single-item stack for this item, including component defaults.

Source

fn use_on(&self, context: &mut UseOnContext<'_>) -> InteractionResult

Called when this item is used on a block.

Source

fn use_item(&self, context: &mut UseItemContext<'_>) -> InteractionResult

Called when this item is used (e.g. right click in air).

Source

fn get_use_animation(&self, stack: &ItemStack) -> ItemUseAnimation

Returns which animation plays while this item is actively being used, based on its data components.

Source

fn get_use_duration(&self, stack: &ItemStack, _user: &dyn LivingEntity) -> i32

Returns how many ticks this item can be held in active use before it finishes automatically.

Source

fn on_use_tick( &self, _world: &Arc<World>, user: LivingEntityRef<'_>, stack: &mut ItemStack, ticks_remaining: i32, )

Called every tick while a living entity is actively using this item.

Source

fn release_using( &self, _stack: &mut ItemStack, _world: &Arc<World>, _user: &dyn LivingEntity, _time_left: i32, ) -> bool

Called when active use is released before completion.

Returns whether vanilla should apply the stack’s after-use component side effects.

Source

fn use_on_release(&self, _stack: &ItemStack) -> bool

Returns whether the item acts when the use key is released, rather than the use timer expiring

Source

fn finish_using( &self, stack: &mut ItemStack, world: &Arc<World>, user: LivingEntityRef<'_>, ) -> ItemStack

Called when active use reaches its full duration.

Source

fn interact_living_entity( &self, _stack: &mut ItemStack, _player: &Player, _target: &dyn LivingEntity, _hand: InteractionHand, ) -> InteractionResult

Called when this item is used to interact with a living entity (e.g. right-clicking a mob while holding it).

Source

fn get_item_damage_source( &self, _attacker: &SharedEntity, ) -> Option<DamageSource>

Returns a custom damage source this item should inflict when its wielder attacks, overriding the caller’s default attack damage type.

Source

fn get_attack_damage_bonus( &self, _attacker: &dyn LivingEntity, _victim: &dyn Entity, _base_damage: f32, _damage_source: &DamageSource, ) -> f32

Returns item-specific attack damage added by Item.getAttackDamageBonus.

Source

fn hurt_enemy( &self, _stack: &mut ItemStack, _target: &dyn LivingEntity, _attacker: &dyn LivingEntity, )

Called immediately when this item’s wielder deals a successful melee hit, before post-attack enchantment effects and durability loss.

Source

fn post_hurt_enemy( &self, _stack: &mut ItemStack, _target: &dyn LivingEntity, _attacker: &dyn LivingEntity, )

Called after hurt_enemy and post-attack enchantment effects, right before the item takes durability damage from the hit.

Source

fn inventory_tick(&self, _context: &mut InventoryTickContext<'_>)

Called every tick for each carried item.

Source

fn item_damage_per_attack(&self, stack: &ItemStack) -> Option<i32>

Returns how much durability this weapon consumes after a successful entity hit.

Source

fn can_fit_inside_container_items(&self) -> bool

Whether this item may be stored inside container items such as shulker boxes and bundles, which vanilla uses to stop them nesting.

Source

fn as_spawn_egg(&self) -> Option<&SpawnEggItem>

Returns this item behavior as a SpawnEggItem.

Source

fn as_sign_applicator(&self) -> Option<&dyn SignApplicator>

Returns the capability used by sign block interactions.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl ItemBehavior for AirItem

Source§

impl ItemBehavior for BlockItem

Source§

impl ItemBehavior for BoneMealItem

Source§

impl ItemBehavior for BottleItem

Source§

impl ItemBehavior for BrushItem

Source§

impl ItemBehavior for BucketItem

Source§

impl ItemBehavior for CompassItem

Source§

impl ItemBehavior for DefaultItemBehavior

Source§

impl ItemBehavior for DoubleHighBlockItem

Source§

impl ItemBehavior for DyeItem

Source§

impl ItemBehavior for EggItem

Source§

impl ItemBehavior for EnderEyeItem

Source§

impl ItemBehavior for EnderPearlItem

Source§

impl ItemBehavior for FireChargeItem

Source§

impl ItemBehavior for FireworkRocketItem

Source§

impl ItemBehavior for FishingRodItem

Source§

impl ItemBehavior for FlintAndSteelItem

Source§

impl ItemBehavior for FoodOnAStickItem

Source§

impl ItemBehavior for GlowInkSacItem

Source§

impl ItemBehavior for HangingSignItem

Source§

impl ItemBehavior for HoneycombItem

Source§

impl ItemBehavior for InkSacItem

Source§

impl ItemBehavior for LeadItem

Source§

impl ItemBehavior for LingeringPotionItem

Source§

impl ItemBehavior for MaceItem

Source§

impl ItemBehavior for MinecartItem

Source§

impl ItemBehavior for NameTagItem

Source§

impl ItemBehavior for PlaceOnWaterBlockItem

Source§

impl ItemBehavior for PlayerHeadItem

Source§

impl ItemBehavior for PotionItem

Source§

impl ItemBehavior for ScaffoldingBlockItem

Source§

impl ItemBehavior for ShearsItem

Source§

impl ItemBehavior for ShieldItem

Source§

impl ItemBehavior for SnowballItem

Source§

impl ItemBehavior for SolidBucketItem

Source§

impl ItemBehavior for SpawnEggItem

Source§

impl ItemBehavior for SplashPotionItem

Source§

impl ItemBehavior for SpyglassItem

Source§

impl ItemBehavior for StandingAndWallBlockItem

Source§

impl ItemBehavior for TippedArrowItem