azalea_core/
attribute_modifier_operation.rs1use 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}