azalea_inventory/item/
mod.rs

1use azalea_registry::builtin::ItemKind;
2
3use crate::{components::MaxStackSize, default_components::get_default_component};
4
5pub mod consume_effect;
6
7pub trait MaxStackSizeExt {
8    /// Get the maximum stack size for this item.
9    ///
10    /// This is a signed integer to be consistent with the `count` field of
11    /// [`ItemStackData`].
12    ///
13    /// [`ItemStackData`]: crate::ItemStackData
14    fn max_stack_size(&self) -> i32;
15
16    /// Whether this item can be stacked with other items.
17    ///
18    /// This is equivalent to `self.max_stack_size() > 1`.
19    fn stackable(&self) -> bool {
20        self.max_stack_size() > 1
21    }
22}
23
24impl MaxStackSizeExt for ItemKind {
25    fn max_stack_size(&self) -> i32 {
26        get_default_component::<MaxStackSize>(*self).map_or(64, |s| s.count)
27    }
28}