pub trait ItemBehavior: Send + Sync {
Show 18 methods
// Provided methods
fn type_name(&self) -> &'static str { ... }
fn get_name<'a>(&self, stack: &'a ItemStack) -> Cow<'a, TextComponent> { ... }
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: &dyn LivingEntity,
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: &dyn LivingEntity,
) -> ItemStack { ... }
fn interact_living_entity(
&self,
_stack: &mut ItemStack,
_player: &Player,
_target: &dyn LivingEntity,
_hand: InteractionHand,
) -> InteractionResult { ... }
fn get_item_damage_source(
&self,
_attacker: &dyn LivingEntity,
) -> 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 item_damage_per_attack(&self, stack: &ItemStack) -> Option<i32> { ... }
fn can_fit_inside_container_items(&self) -> bool { ... }
fn as_spawn_egg(&self) -> Option<&SpawnEggItem> { ... }
}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§
Sourcefn type_name(&self) -> &'static str
fn type_name(&self) -> &'static str
Returns the Rust type name of the concrete behavior implementation.
Sourcefn get_name<'a>(&self, stack: &'a ItemStack) -> Cow<'a, TextComponent>
fn get_name<'a>(&self, stack: &'a ItemStack) -> Cow<'a, TextComponent>
Returns vanilla Item.getName(stack).
Sourcefn use_on(&self, _context: &mut UseOnContext<'_>) -> InteractionResult
fn use_on(&self, _context: &mut UseOnContext<'_>) -> InteractionResult
Called when this item is used on a block.
Sourcefn use_item(&self, context: &mut UseItemContext<'_>) -> InteractionResult
fn use_item(&self, context: &mut UseItemContext<'_>) -> InteractionResult
Called when this item is used (e.g. right click in air).
Sourcefn get_use_animation(&self, stack: &ItemStack) -> ItemUseAnimation
fn get_use_animation(&self, stack: &ItemStack) -> ItemUseAnimation
Returns vanilla Item.getUseAnimation.
Sourcefn get_use_duration(&self, stack: &ItemStack, _user: &dyn LivingEntity) -> i32
fn get_use_duration(&self, stack: &ItemStack, _user: &dyn LivingEntity) -> i32
Returns vanilla Item.getUseDuration.
Sourcefn on_use_tick(
&self,
_world: &Arc<World>,
user: &dyn LivingEntity,
stack: &mut ItemStack,
ticks_remaining: i32,
)
fn on_use_tick( &self, _world: &Arc<World>, user: &dyn LivingEntity, stack: &mut ItemStack, ticks_remaining: i32, )
Called every tick while a living entity is actively using this item.
Sourcefn release_using(
&self,
_stack: &mut ItemStack,
_world: &Arc<World>,
_user: &dyn LivingEntity,
_time_left: i32,
) -> bool
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.
Sourcefn use_on_release(&self, _stack: &ItemStack) -> bool
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
Sourcefn finish_using(
&self,
stack: &mut ItemStack,
world: &Arc<World>,
user: &dyn LivingEntity,
) -> ItemStack
fn finish_using( &self, stack: &mut ItemStack, world: &Arc<World>, user: &dyn LivingEntity, ) -> ItemStack
Called when active use reaches its full duration.
Sourcefn interact_living_entity(
&self,
_stack: &mut ItemStack,
_player: &Player,
_target: &dyn LivingEntity,
_hand: InteractionHand,
) -> InteractionResult
fn interact_living_entity( &self, _stack: &mut ItemStack, _player: &Player, _target: &dyn LivingEntity, _hand: InteractionHand, ) -> InteractionResult
Called by vanilla ItemStack.interactLivingEntity.
Sourcefn get_item_damage_source(
&self,
_attacker: &dyn LivingEntity,
) -> Option<DamageSource>
fn get_item_damage_source( &self, _attacker: &dyn LivingEntity, ) -> Option<DamageSource>
Returns vanilla Item.getItemDamageSource.
Sourcefn get_attack_damage_bonus(
&self,
_attacker: &dyn LivingEntity,
_victim: &dyn Entity,
_base_damage: f32,
_damage_source: &DamageSource,
) -> f32
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.
Sourcefn hurt_enemy(
&self,
_stack: &mut ItemStack,
_target: &dyn LivingEntity,
_attacker: &dyn LivingEntity,
)
fn hurt_enemy( &self, _stack: &mut ItemStack, _target: &dyn LivingEntity, _attacker: &dyn LivingEntity, )
Called by vanilla Item.hurtEnemy.
Sourcefn post_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, )
Called by vanilla Item.postHurtEnemy.
Sourcefn item_damage_per_attack(&self, stack: &ItemStack) -> Option<i32>
fn item_damage_per_attack(&self, stack: &ItemStack) -> Option<i32>
Returns how much durability this weapon consumes after a successful entity hit.
Sourcefn can_fit_inside_container_items(&self) -> bool
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.
Sourcefn as_spawn_egg(&self) -> Option<&SpawnEggItem>
fn as_spawn_egg(&self) -> Option<&SpawnEggItem>
Returns this item behavior as a SpawnEggItem.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".