Potato/potato-data/src/registry/item/components/attribute_modifiers.rs
2025-04-05 00:06:22 +02:00

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,
}