Skip to main content

steel_core/entity/consume_effect/
clear_all_effects.rs

1//! `ClearAllStatusEffectsConsumeEffect` behavior (e.g. milk bucket).
2
3use std::sync::Arc;
4
5use steel_registry::consume_effect::ConsumeEffectData;
6
7use super::ConsumeEffectBehavior;
8use crate::entity::LivingEntity;
9use crate::world::World;
10
11/// Mirrors vanilla `ClearAllStatusEffectsConsumeEffect.apply`. Carries no
12/// fields, so there is nothing to downcast for.
13pub struct ClearAllEffectsBehavior;
14
15impl ConsumeEffectBehavior for ClearAllEffectsBehavior {
16    fn apply(&self, _effect: &ConsumeEffectData, _world: &Arc<World>, user: &dyn LivingEntity) {
17        for active in user.active_mob_effects() {
18            user.remove_mob_effect(active.effect());
19        }
20    }
21}