minecraft_command_types/command/
item.rs1use crate::command::item_source::ItemSource;
2use crate::item::ItemStack;
3use crate::snbt::SNBT;
4use minecraft_command_types_derive::HasMacro;
5use std::fmt::{Display, Formatter};
6
7#[derive(Debug, Clone, Eq, PartialEq, Hash, HasMacro)]
8pub enum ItemCommand {
9 Modifier(SNBT),
10 With(ItemStack, Option<i32>),
11 From(ItemSource, String, Option<SNBT>),
12}
13
14impl Display for ItemCommand {
15 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
16 match self {
17 ItemCommand::Modifier(item) => item.fmt(f),
18 ItemCommand::With(item, count) => {
19 write!(f, "with {}", item)?;
20
21 if let Some(count) = count {
22 write!(f, " {}", count)?;
23 }
24
25 Ok(())
26 }
27 ItemCommand::From(source, slot, modifier) => {
28 write!(f, "from {} {}", source, slot)?;
29
30 if let Some(modifier) = modifier {
31 write!(f, " {}", modifier)?;
32 }
33
34 Ok(())
35 }
36 }
37 }
38}