42 lines
992 B
Rust
42 lines
992 B
Rust
use potato_derive::ItemComponent;
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
use crate::identifier::Identifier;
|
|
|
|
#[derive(Debug, Serialize, Deserialize, Clone, ItemComponent)]
|
|
#[item_component(namespace = "minecraft", id = "attribute_modifiers")]
|
|
pub struct AttributeModifiers(Vec<AttributeModifier>);
|
|
|
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
|
pub struct AttributeModifier {
|
|
pub r#type: String,
|
|
#[serde(default)]
|
|
pub slot: AttributeModifierSlot,
|
|
pub id: Identifier,
|
|
pub amount: f64,
|
|
pub operation: AttributeModifierOperation,
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
|
#[serde(rename_all = "snake_case")]
|
|
pub enum AttributeModifierSlot {
|
|
#[default]
|
|
Any,
|
|
Hand,
|
|
Armor,
|
|
Mainhand,
|
|
Offhand,
|
|
Head,
|
|
Chest,
|
|
Legs,
|
|
Feet,
|
|
Body,
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
|
#[serde(rename_all = "snake_case")]
|
|
pub enum AttributeModifierOperation {
|
|
AddValue,
|
|
AddMultipliedBase,
|
|
AddMultipliedTotal,
|
|
}
|