azalea_inventory/item/
consume_effect.rs

1use azalea_buf::AzBuf;
2use azalea_core::resource_location::ResourceLocation;
3use azalea_registry::{HolderSet, MobEffect, SoundEvent};
4
5use crate::components::MobEffectInstance;
6
7#[derive(Clone, PartialEq, AzBuf)]
8pub enum ConsumeEffect {
9    ApplyEffects {
10        effects: Vec<MobEffectInstance>,
11        probability: f32,
12    },
13    RemoveEffects(HolderSet<MobEffect, ResourceLocation>),
14    ClearAllEffects,
15    TeleportRandomly {
16        diameter: f32,
17    },
18    PlaySound {
19        sound: SoundEvent,
20    },
21}
22
23impl From<ConsumeEffect> for azalea_registry::ConsumeEffectKind {
24    fn from(effect: ConsumeEffect) -> Self {
25        match effect {
26            ConsumeEffect::ApplyEffects { .. } => azalea_registry::ConsumeEffectKind::ApplyEffects,
27            ConsumeEffect::RemoveEffects { .. } => {
28                azalea_registry::ConsumeEffectKind::RemoveEffects
29            }
30            ConsumeEffect::ClearAllEffects => azalea_registry::ConsumeEffectKind::ClearAllEffects,
31            ConsumeEffect::TeleportRandomly { .. } => {
32                azalea_registry::ConsumeEffectKind::TeleportRandomly
33            }
34            ConsumeEffect::PlaySound { .. } => azalea_registry::ConsumeEffectKind::PlaySound,
35        }
36    }
37}