azalea_core/
attribute_modifier_operation.rs

1use std::str::FromStr;
2
3use azalea_buf::AzBuf;
4use serde::Serialize;
5use simdnbt::{FromNbtTag, borrow::NbtTag};
6
7#[derive(Clone, Copy, PartialEq, AzBuf, Debug, Serialize)]
8#[serde(rename_all = "snake_case")]
9pub enum AttributeModifierOperation {
10    AddValue,
11    AddMultipliedBase,
12    AddMultipliedTotal,
13}
14
15impl FromStr for AttributeModifierOperation {
16    type Err = ();
17
18    fn from_str(s: &str) -> Result<Self, Self::Err> {
19        let value: AttributeModifierOperation = match s {
20            "add_value" => Self::AddValue,
21            "add_multiplied_base" => Self::AddMultipliedBase,
22            "add_multiplied_total" => Self::AddMultipliedTotal,
23            _ => return Err(()),
24        };
25        Ok(value)
26    }
27}
28impl FromNbtTag for AttributeModifierOperation {
29    fn from_nbt_tag(tag: NbtTag) -> Option<Self> {
30        let v = tag.string()?;
31        Self::from_str(&v.to_str()).ok()
32    }
33}