minecraft_command_types/command/
team.rs1use crate::command::enums::team_collision_rule::TeamCollisionRule;
2use crate::command::enums::team_color::TeamColor;
3use crate::command::enums::team_visibility::TeamVisibility;
4use crate::entity_selector::EntitySelector;
5use crate::snbt::SNBT;
6use minecraft_command_types_derive::HasMacro;
7use std::fmt::{Display, Formatter};
8
9#[derive(Debug, Clone, Eq, PartialEq, Hash, HasMacro)]
10pub enum TeamOption {
11 DisplayName(SNBT),
12 Color(TeamColor),
13 FriendlyFire(bool),
14 SeeFriendlyInvisibles(bool),
15 NametagVisibility(TeamVisibility),
16 DeathMessageVisibility(TeamVisibility),
17 CollisionRule(TeamCollisionRule),
18 Prefix(SNBT),
19 Suffix(SNBT),
20}
21
22impl Display for TeamOption {
23 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
24 match self {
25 TeamOption::DisplayName(display_name) => {
26 write!(f, "displayName {}", display_name)
27 }
28 TeamOption::Color(color) => {
29 write!(f, "color {}", color)
30 }
31 TeamOption::FriendlyFire(friendly_fire) => {
32 write!(f, "friendlyFire {}", friendly_fire)
33 }
34 TeamOption::SeeFriendlyInvisibles(see_friendly_invisibles) => {
35 write!(f, "seeFriendlyInvisibles {}", see_friendly_invisibles)
36 }
37 TeamOption::NametagVisibility(visibility) => {
38 write!(f, "nametagVisibility {}", visibility)
39 }
40 TeamOption::DeathMessageVisibility(visibility) => {
41 write!(f, "deathMessageVisibility {}", visibility)
42 }
43 TeamOption::CollisionRule(collision_rule) => {
44 write!(f, "collisionRule {}", collision_rule)
45 }
46 TeamOption::Prefix(prefix) => {
47 write!(f, "prefix {}", prefix)
48 }
49 TeamOption::Suffix(suffix) => {
50 write!(f, "suffix {}", suffix)
51 }
52 }
53 }
54}
55#[derive(Debug, Clone, Eq, PartialEq, Hash, HasMacro)]
56pub enum TeamCommand {
57 List(Option<String>),
58 Add(String, Option<SNBT>),
59 Remove(String),
60 Empty(String),
61 Join(String, Option<EntitySelector>),
62 Leave(EntitySelector),
63 Modify(String, TeamOption),
64}
65
66impl Display for TeamCommand {
67 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
68 match self {
69 TeamCommand::List(name) => {
70 f.write_str("list")?;
71
72 if let Some(name) = name {
73 write!(f, " {}", name)?;
74 }
75
76 Ok(())
77 }
78 TeamCommand::Add(name, display_name) => {
79 write!(f, "add {}", name)?;
80
81 if let Some(display_name) = display_name {
82 write!(f, " {}", display_name)?;
83 }
84
85 Ok(())
86 }
87 TeamCommand::Remove(name) => {
88 write!(f, "remove {}", name)
89 }
90 TeamCommand::Empty(name) => {
91 write!(f, "empty {}", name)
92 }
93 TeamCommand::Join(name, selector) => {
94 write!(f, "join {}", name)?;
95
96 if let Some(selector) = selector {
97 write!(f, " {}", selector)?;
98 }
99
100 Ok(())
101 }
102 TeamCommand::Leave(selector) => {
103 write!(f, "leave {}", selector)
104 }
105 TeamCommand::Modify(name, option) => {
106 write!(f, "modify {} {}", name, option)
107 }
108 }
109 }
110}