chunkedge_protocol/packets/play/
set_player_team_s2c.rs1use std::borrow::Cow;
2
3use bitfield_struct::bitfield;
4use chunkedge_binary::{Decode, Encode, TextComponent};
5
6use crate::Packet;
7
8#[derive(Clone, Debug, Encode, Decode, Packet)]
9pub struct SetPlayerTeamS2c<'a> {
10 pub team_name: &'a str,
11 pub mode: Mode<'a>,
12}
13
14#[derive(Clone, PartialEq, Debug, Encode, Decode)]
15pub enum Mode<'a> {
16 CreateTeam {
17 team_display_name: Cow<'a, TextComponent>,
18 friendly_flags: TeamFlags,
19 name_tag_visibility: NameTagVisibility,
20 collision_rule: CollisionRule,
21 team_color: TeamColor,
22 team_prefix: Cow<'a, TextComponent>,
23 team_suffix: Cow<'a, TextComponent>,
24 entities: Vec<&'a str>,
25 },
26 RemoveTeam,
27 UpdateTeamInfo {
28 team_display_name: Cow<'a, TextComponent>,
29 friendly_flags: TeamFlags,
30 name_tag_visibility: NameTagVisibility,
31 collision_rule: CollisionRule,
32 team_color: TeamColor,
33 team_prefix: Cow<'a, TextComponent>,
34 team_suffix: Cow<'a, TextComponent>,
35 },
36 AddEntities {
37 entities: Vec<&'a str>,
38 },
39 RemoveEntities {
40 entities: Vec<&'a str>,
41 },
42}
43
44#[bitfield(u8)]
45#[derive(PartialEq, Eq, Encode, Decode)]
46pub struct TeamFlags {
47 pub friendly_fire: bool,
48 pub see_invisible_teammates: bool,
49 #[bits(6)]
50 _pad: u8,
51}
52
53#[derive(Copy, Clone, PartialEq, Eq, Debug, Encode, Decode)]
54pub enum NameTagVisibility {
55 Always,
56 Never,
57 HideForOtherTeams,
58 HideForOwnTeams,
59}
60
61#[derive(Copy, Clone, PartialEq, Eq, Debug, Encode, Decode)]
62pub enum CollisionRule {
63 Always,
64 Never,
65 PushOtherTeams,
66 PushOwnTeam,
67}
68
69#[derive(Copy, Clone, PartialEq, Eq, Debug, Encode, Decode)]
70pub enum TeamColor {
71 Black,
72 DarkBlue,
73 DarkGreen,
74 DarkCyan,
75 DarkRed,
76 Purple,
77 Gold,
78 Gray,
79 DarkGray,
80 Blue,
81 BrightGreen,
82 Cyan,
83 Red,
84 Pink,
85 Yellow,
86 White,
87 Obfuscated,
88 Bold,
89 Strikethrough,
90 Underlined,
91 Italic,
92 Reset,
93}