Skip to main content

Mob

Trait Mob 

Source
pub trait Mob: LivingEntity + Leashable {
Show 108 methods // Required methods fn mob_base(&self) -> &MobBase; fn mob_flags(&self) -> i8; fn set_mob_flags(&self, flags: i8); // Provided methods fn is_saddled(&self) -> bool { ... } fn custom_server_ai_step(&self) { ... } fn ate(&self) { ... } fn tick_goal_selectors(&self) { ... } fn xp_reward(&self) -> i32 { ... } fn set_xp_reward(&self, xp_reward: i32) { ... } fn target(&self) -> Option<SharedEntity> { ... } fn set_target(&self, target: Option<&SharedEntity>) -> bool { ... } fn is_valid_target(&self, target: &dyn LivingEntity) -> bool { ... } fn can_attack(&self, target: &dyn LivingEntity) -> bool { ... } fn base_experience_reward_mob(&self) -> i32 { ... } fn ambient_sound_interval(&self) -> i32 { ... } fn ambient_sound(&self) -> Option<SoundEventRef> { ... } fn play_ambient_sound(&self) { ... } fn reset_ambient_sound_time(&self) { ... } fn base_tick_mob(&self) { ... } fn mob_base_tick(&self) { ... } fn finalize_spawn( &self, world: &Arc<World>, spawn_reason: EntitySpawnReason, group_data: Option<SpawnGroupData>, ) -> Option<SpawnGroupData> { ... } fn finalize_spawn_mob_base( &self, _world: &Arc<World>, _spawn_reason: EntitySpawnReason, group_data: Option<SpawnGroupData>, ) -> Option<SpawnGroupData> { ... } fn interact_mob( &self, player: &Player, hand: InteractionHand, location: DVec3, ) -> InteractionResult { ... } fn check_and_handle_important_interactions( &self, player: &Player, hand: InteractionHand, ) -> InteractionResult { ... } fn mob_interact( &self, _player: &Player, _hand: InteractionHand, ) -> InteractionResult { ... } fn can_shear_equipment(&self, _player: &Player) -> bool { ... } fn use_player_item(&self, player: &Player, hand: InteractionHand) { ... } fn remove_when_far_away(&self, dist_sqr: f64) -> bool { ... } fn requires_custom_persistence(&self) -> bool { ... } fn is_persistence_required(&self) -> bool { ... } fn set_persistence_required(&self) { ... } fn mob_can_be_leashed(&self) -> bool { ... } fn can_pick_up_loot(&self) -> bool { ... } fn set_can_pick_up_loot(&self, can_pick_up_loot: bool) { ... } fn equipment_drop_chance(&self, slot: EquipmentSlot) -> f32 { ... } fn is_equipment_drop_preserved(&self, slot: EquipmentSlot) -> bool { ... } fn set_guaranteed_drop(&self, slot: EquipmentSlot) { ... } fn get_pickup_reach(&self) -> DVec3 { ... } fn wants_to_pick_up(&self, item_stack: &ItemStack) -> bool { ... } fn can_hold_item(&self, _item_stack: &ItemStack) -> bool { ... } fn pick_up_item(&self, world: &Arc<World>, item_entity: &ItemEntity) { ... } fn equip_item_if_possible(&self, item_stack: ItemStack) -> ItemStack { ... } fn get_equipment_slot_for_item( &self, item_stack: &ItemStack, ) -> EquipmentSlot { ... } fn equipment_in_slot(&self, slot: EquipmentSlot) -> ItemStack { ... } fn can_replace_current_item( &self, new_item_stack: &ItemStack, current_item_stack: &ItemStack, slot: EquipmentSlot, ) -> bool { ... } fn compare_armor( &self, new_item_stack: &ItemStack, current_item_stack: &ItemStack, slot: EquipmentSlot, ) -> bool { ... } fn get_preferred_weapon_type(&self) -> Option<Identifier> { ... } fn compare_weapons( &self, new_item_stack: &ItemStack, current_item_stack: &ItemStack, slot: EquipmentSlot, ) -> bool { ... } fn approximate_attribute_with( &self, item_stack: &ItemStack, attribute: AttributeRef, slot: EquipmentSlot, ) -> f64 { ... } fn can_replace_equal_item( &self, new_item_stack: &ItemStack, current_item_stack: &ItemStack, ) -> bool { ... } fn tick_looting(&self) { ... } fn drop_custom_death_loot_mob( &self, _source: &DamageSource, killed_by_player: bool, ) { ... } fn save_mob(&self, nbt: &mut NbtCompound) { ... } fn load_mob(&self, nbt: BorrowedNbtCompoundView<'_, '_>) { ... } fn set_death_loot_table(&self, loot_table: Option<Identifier>) { ... } fn set_death_loot_table_seed(&self, seed: i64) { ... } fn custom_death_loot_table(&self) -> Option<LootTableRef> { ... } fn has_custom_death_loot_table(&self) -> bool { ... } fn death_loot_table_seed(&self) -> i64 { ... } fn clear_custom_death_loot_table(&self) { ... } fn is_within_home(&self) -> bool { ... } fn is_within_home_pos(&self, pos: BlockPos) -> bool { ... } fn is_within_home_vec(&self, pos: DVec3) -> bool { ... } fn set_home_to(&self, position: BlockPos, radius: i32) { ... } fn home_position(&self) -> BlockPos { ... } fn home_radius(&self) -> i32 { ... } fn clear_home(&self) { ... } fn has_home(&self) -> bool { ... } fn check_mob_despawn(&self) { ... } fn nearest_player_distance_sqr(&self) -> Option<f64> { ... } fn controlling_passenger_mob(&self) -> Option<SharedEntity> { ... } fn get_pathfinding_malus(&self, path_type: PathType) -> f32 { ... } fn max_fall_distance(&self) -> i32 { ... } fn set_pathfinding_malus(&self, path_type: PathType, malus: f32) { ... } fn is_no_ai(&self) -> bool { ... } fn set_no_ai(&self, no_ai: bool) { ... } fn is_left_handed(&self) -> bool { ... } fn set_left_handed(&self, left_handed: bool) { ... } fn is_aggressive(&self) -> bool { ... } fn has_line_of_sight_cached(&self, target: &dyn Entity) -> bool { ... } fn max_head_x_rot(&self) -> f32 { ... } fn max_head_y_rot(&self) -> f32 { ... } fn do_hurt_target(&self, world: &World, target: &SharedEntity) -> bool { ... } fn mob_attack_damage_source( &self, weapon_item: &ItemStack, attacker: &dyn LivingEntity, ) -> DamageSource { ... } fn get_attack_knockback( &self, target: &dyn Entity, weapon_item: &ItemStack, damage_source: &DamageSource, ) -> f64 { ... } fn cause_extra_knockback( &self, target: &dyn Entity, knockback_amount: f64, _old_movement: DVec3, ) { ... } fn play_attack_sound(&self) { ... } fn is_within_melee_attack_range(&self, target: &dyn LivingEntity) -> bool { ... } fn attack_bounding_box(&self, horizontal_expansion: f64) -> WorldAabb { ... } fn set_aggressive(&self, aggressive: bool) { ... } fn set_mob_flag(&self, flag: i8, enabled: bool) { ... } fn controlled_mob_vehicle(&self) -> Option<SharedEntity> { ... } fn set_wanted_position(&self, position: DVec3, speed_modifier: f64) { ... } fn jump_control_jump(&self) { ... } fn set_mob_speed(&self, speed: f32) { ... } fn mob_server_ai_step(&self) { ... } fn mob_ai_step(&self) -> Option<MoveResult> { ... } fn tick_path_navigation(&self) { ... } fn tick_move_control(&self) { ... } fn tick_move_to_control(&self, wanted_position: DVec3, speed_modifier: f64) { ... } fn tick_strafe_control(&self, forward: f32, right: f32) { ... } fn is_strafe_walkable(&self, dx: f32, dz: f32) -> bool { ... } fn tick_jumping_control(&self, speed_modifier: f64) { ... } fn tick_look_control(&self) { ... } fn clamp_head_rotation_to_body_when_pathing(&self) { ... } fn tick_jump_control(&self) { ... } fn update_control_flags(&self) { ... } fn tick_body_rotation_control(&self) { ... }
}

Required Methods§

Source

fn mob_base(&self) -> &MobBase

Source

fn mob_flags(&self) -> i8

Source

fn set_mob_flags(&self, flags: i8)

Provided Methods§

Source

fn is_saddled(&self) -> bool

Returns vanilla Mob.isSaddled.

Source

fn custom_server_ai_step(&self)

Source

fn ate(&self)

Runs vanilla Mob.ate, invoked after an eating goal resolves a block.

Source

fn tick_goal_selectors(&self)

Source

fn xp_reward(&self) -> i32

Source

fn set_xp_reward(&self, xp_reward: i32)

Source

fn target(&self) -> Option<SharedEntity>

Returns vanilla Mob.getTarget.

Source

fn set_target(&self, target: Option<&SharedEntity>) -> bool

Sets vanilla Mob.target.

Returns false when the supplied entity is not a living entity.

Source

fn is_valid_target(&self, target: &dyn LivingEntity) -> bool

Source

fn can_attack(&self, target: &dyn LivingEntity) -> bool

Returns vanilla Mob.canAttack.

Source

fn base_experience_reward_mob(&self) -> i32

Source

fn ambient_sound_interval(&self) -> i32

Source

fn ambient_sound(&self) -> Option<SoundEventRef>

Source

fn play_ambient_sound(&self)

Source

fn reset_ambient_sound_time(&self)

Source

fn base_tick_mob(&self)

Runs vanilla Mob.baseTick.

Source

fn mob_base_tick(&self)

Runs the mob-owned portion of vanilla Mob.baseTick.

Source

fn finalize_spawn( &self, world: &Arc<World>, spawn_reason: EntitySpawnReason, group_data: Option<SpawnGroupData>, ) -> Option<SpawnGroupData>

Source

fn finalize_spawn_mob_base( &self, _world: &Arc<World>, _spawn_reason: EntitySpawnReason, group_data: Option<SpawnGroupData>, ) -> Option<SpawnGroupData>

Source

fn interact_mob( &self, player: &Player, hand: InteractionHand, location: DVec3, ) -> InteractionResult

Handles vanilla Mob.interact.

Source

fn check_and_handle_important_interactions( &self, player: &Player, hand: InteractionHand, ) -> InteractionResult

Handles vanilla Mob.checkAndHandleImportantInteractions.

Source

fn mob_interact( &self, _player: &Player, _hand: InteractionHand, ) -> InteractionResult

Handles vanilla Mob.mobInteract.

Source

fn can_shear_equipment(&self, _player: &Player) -> bool

Returns vanilla Mob.canShearEquipment.

Source

fn use_player_item(&self, player: &Player, hand: InteractionHand)

Applies vanilla Mob.usePlayerItem.

Source

fn remove_when_far_away(&self, dist_sqr: f64) -> bool

Source

fn requires_custom_persistence(&self) -> bool

Source

fn is_persistence_required(&self) -> bool

Source

fn set_persistence_required(&self)

Source

fn mob_can_be_leashed(&self) -> bool

Returns whether this mob can be leashed, before its leash state is considered.

Source

fn can_pick_up_loot(&self) -> bool

Returns vanilla Mob.canPickUpLoot.

Source

fn set_can_pick_up_loot(&self, can_pick_up_loot: bool)

Source

fn equipment_drop_chance(&self, slot: EquipmentSlot) -> f32

Source

fn is_equipment_drop_preserved(&self, slot: EquipmentSlot) -> bool

Source

fn set_guaranteed_drop(&self, slot: EquipmentSlot)

Source

fn get_pickup_reach(&self) -> DVec3

Vanilla Mob.getPickupReach: the per-axis distance the item-pickup search box is inflated by. Overridable so mobs with a longer reach can widen it.

Source

fn wants_to_pick_up(&self, item_stack: &ItemStack) -> bool

Vanilla Mob.wantsToPickUp: whether this mob wants to collect the item it just walked over. Defaults to whatever the mob is willing to hold.

Source

fn can_hold_item(&self, _item_stack: &ItemStack) -> bool

Vanilla Mob.canHoldItem: whether this mob is willing to hold the item. The base mob holds anything; specific mobs narrow this down.

Source

fn pick_up_item(&self, world: &Arc<World>, item_entity: &ItemEntity)

Vanilla Mob.pickUpItem: take a dropped item into this mob’s equipment.

Delegates the slot routing and gear-swap decision to equip_item_if_possible, then shrinks the source stack by however much was equipped, only removing the item entity once nothing is left.

Source

fn equip_item_if_possible(&self, item_stack: ItemStack) -> ItemStack

Vanilla Mob.equipItemIfPossible: route item_stack to the slot its equippable component asks for (main hand otherwise), swap up when the target slot already holds worse gear, and drop the replaced piece by its drop chance. Returns the stack that was equipped, or empty when nothing was taken.

Source

fn get_equipment_slot_for_item(&self, item_stack: &ItemStack) -> EquipmentSlot

Vanilla LivingEntity.getEquipmentSlotForItem: the slot an item wants to occupy, falling back to the main hand when it is not equippable or the mob cannot use that slot.

Source

fn equipment_in_slot(&self, slot: EquipmentSlot) -> ItemStack

Returns a copy of whatever this mob currently holds in slot.

Source

fn can_replace_current_item( &self, new_item_stack: &ItemStack, current_item_stack: &ItemStack, slot: EquipmentSlot, ) -> bool

Vanilla Mob.canReplaceCurrentItem: whether the freshly picked-up item should displace what is already in slot.

Source

fn compare_armor( &self, new_item_stack: &ItemStack, current_item_stack: &ItemStack, slot: EquipmentSlot, ) -> bool

Vanilla Mob.compareArmor: prefer the piece granting more armor, then more toughness, then the equal-item tiebreak, unless the worn piece is protected against removal.

Source

fn get_preferred_weapon_type(&self) -> Option<Identifier>

Vanilla Mob.getPreferredWeaponType: the item tag a mob favors for its main hand regardless of raw damage (a skeleton keeps its bow over a stronger sword). The base mob has no preference; specific mobs override it.

Source

fn compare_weapons( &self, new_item_stack: &ItemStack, current_item_stack: &ItemStack, slot: EquipmentSlot, ) -> bool

Vanilla Mob.compareWeapons: keep a piece of the mob’s preferred weapon type over one that is not, otherwise prefer more attack damage, then the equal-item tiebreak.

Source

fn approximate_attribute_with( &self, item_stack: &ItemStack, attribute: AttributeRef, slot: EquipmentSlot, ) -> f64

Vanilla Mob.getApproximateAttributeWith: the value of attribute this mob would have in slot while wearing item_stack, taking the mob’s base value (zero when it lacks the attribute) and folding in the item’s attribute modifiers.

Source

fn can_replace_equal_item( &self, new_item_stack: &ItemStack, current_item_stack: &ItemStack, ) -> bool

Vanilla Mob.canReplaceEqualItem: the tiebreak when two pieces grade out equally, favoring more enchantments, then less damage, then a custom name.

Source

fn tick_looting(&self)

Vanilla Mob.aiStep looting loop: while this mob may pick up loot and the mobGriefing game rule allows it, collect nearby dropped items in reach.

Source

fn drop_custom_death_loot_mob( &self, _source: &DamageSource, killed_by_player: bool, )

Source

fn save_mob(&self, nbt: &mut NbtCompound)

Source

fn load_mob(&self, nbt: BorrowedNbtCompoundView<'_, '_>)

Source

fn set_death_loot_table(&self, loot_table: Option<Identifier>)

Source

fn set_death_loot_table_seed(&self, seed: i64)

Source

fn custom_death_loot_table(&self) -> Option<LootTableRef>

Source

fn has_custom_death_loot_table(&self) -> bool

Source

fn death_loot_table_seed(&self) -> i64

Source

fn clear_custom_death_loot_table(&self)

Source

fn is_within_home(&self) -> bool

Source

fn is_within_home_pos(&self, pos: BlockPos) -> bool

Source

fn is_within_home_vec(&self, pos: DVec3) -> bool

Source

fn set_home_to(&self, position: BlockPos, radius: i32)

Source

fn home_position(&self) -> BlockPos

Source

fn home_radius(&self) -> i32

Source

fn clear_home(&self)

Source

fn has_home(&self) -> bool

Source

fn check_mob_despawn(&self)

Source

fn nearest_player_distance_sqr(&self) -> Option<f64>

Source

fn controlling_passenger_mob(&self) -> Option<SharedEntity>

Source

fn get_pathfinding_malus(&self, path_type: PathType) -> f32

Source

fn max_fall_distance(&self) -> i32

Vanilla Entity.getMaxFallDistance baseline.

Source

fn set_pathfinding_malus(&self, path_type: PathType, malus: f32)

Source

fn is_no_ai(&self) -> bool

Source

fn set_no_ai(&self, no_ai: bool)

Source

fn is_left_handed(&self) -> bool

Source

fn set_left_handed(&self, left_handed: bool)

Source

fn is_aggressive(&self) -> bool

Source

fn has_line_of_sight_cached(&self, target: &dyn Entity) -> bool

Whether this mob can see target.

Source

fn max_head_x_rot(&self) -> f32

Returns vanilla Mob.getMaxHeadXRot.

Source

fn max_head_y_rot(&self) -> f32

Returns vanilla Mob.getMaxHeadYRot.

Source

fn do_hurt_target(&self, world: &World, target: &SharedEntity) -> bool

Handles vanilla Mob.doHurtTarget.

Source

fn mob_attack_damage_source( &self, weapon_item: &ItemStack, attacker: &dyn LivingEntity, ) -> DamageSource

Returns the damage source used by vanilla ItemStack.getDamageSource.

Source

fn get_attack_knockback( &self, target: &dyn Entity, weapon_item: &ItemStack, damage_source: &DamageSource, ) -> f64

Returns vanilla LivingEntity.getKnockback for mob attacks.

Source

fn cause_extra_knockback( &self, target: &dyn Entity, knockback_amount: f64, _old_movement: DVec3, )

Applies vanilla LivingEntity.causeExtraKnockback.

Source

fn play_attack_sound(&self)

Plays vanilla LivingEntity.playAttackSound.

Source

fn is_within_melee_attack_range(&self, target: &dyn LivingEntity) -> bool

Returns vanilla Mob.isWithinMeleeAttackRange.

Source

fn attack_bounding_box(&self, horizontal_expansion: f64) -> WorldAabb

Returns vanilla Mob.getAttackBoundingBox.

Source

fn set_aggressive(&self, aggressive: bool)

Source

fn set_mob_flag(&self, flag: i8, enabled: bool)

Source

fn controlled_mob_vehicle(&self) -> Option<SharedEntity>

Source

fn set_wanted_position(&self, position: DVec3, speed_modifier: f64)

Source

fn jump_control_jump(&self)

Source

fn set_mob_speed(&self, speed: f32)

Mirrors vanilla Mob.setSpeed: update cached speed and forward AI input.

Source

fn mob_server_ai_step(&self)

Source

fn mob_ai_step(&self) -> Option<MoveResult>

Vanilla Mob.aiStep: the LivingEntity.aiStep movement foundation followed by the item-pickup looting loop.

Looting lives here rather than in mob_server_ai_step because vanilla runs it from aiStep, not serverAiStep: a mob with NoAI set still collects loot, so the looting must not sit behind the isEffectiveAi gate that guards the goal/navigation ticks.

Source

fn tick_path_navigation(&self)

Source

fn tick_move_control(&self)

Source

fn tick_move_to_control(&self, wanted_position: DVec3, speed_modifier: f64)

Source

fn tick_strafe_control(&self, forward: f32, right: f32)

Source

fn is_strafe_walkable(&self, dx: f32, dz: f32) -> bool

Source

fn tick_jumping_control(&self, speed_modifier: f64)

Source

fn tick_look_control(&self)

Source

fn clamp_head_rotation_to_body_when_pathing(&self)

Source

fn tick_jump_control(&self)

Source

fn update_control_flags(&self)

Source

fn tick_body_rotation_control(&self)

Dyn Compatibility§

This trait is dyn compatible.

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

Implementors§