Skip to main content

steel_core/behavior/items/
compass.rs

1use std::borrow::Cow;
2
3use steel_macros::item_behavior;
4use steel_registry::{
5    data_components::vanilla_components::LODESTONE_TRACKER, item_stack::ItemStack,
6};
7use text_components::TextComponent;
8
9use crate::behavior::ItemBehavior;
10
11use super::dynamic_name::{default_name, translated};
12
13/// Compass behavior providing the lodestone-specific name.
14// TODO: Implement lodestone binding and tracked-target invalidation when item
15// inventory ticks are available.
16#[item_behavior]
17pub struct CompassItem;
18
19impl ItemBehavior for CompassItem {
20    fn get_name<'a>(&self, stack: &'a ItemStack) -> Cow<'a, TextComponent> {
21        if stack.has(LODESTONE_TRACKER) {
22            translated("item.minecraft.lodestone_compass".to_owned(), None)
23        } else {
24            default_name(stack)
25        }
26    }
27}