valence_protocol/packets/play/
boss_bar_s2c.rs
1use std::borrow::Cow;
2
3use bevy_ecs::prelude::Component;
4use bitfield_struct::bitfield;
5use uuid::Uuid;
6use valence_text::Text;
7
8use crate::{Decode, Encode, Packet};
9
10#[derive(Clone, Debug, Encode, Decode, Packet)]
11pub struct BossBarS2c<'a> {
12 pub id: Uuid,
13 pub action: BossBarAction<'a>,
14}
15
16#[derive(Clone, PartialEq, Debug, Encode, Decode)]
17pub enum BossBarAction<'a> {
18 Add {
19 title: Cow<'a, Text>,
20 health: f32,
21 color: BossBarColor,
22 division: BossBarDivision,
23 flags: BossBarFlags,
24 },
25 Remove,
26 UpdateHealth(f32),
27 UpdateTitle(Cow<'a, Text>),
28 UpdateStyle(BossBarColor, BossBarDivision),
29 UpdateFlags(BossBarFlags),
30}
31
32#[derive(Copy, Clone, PartialEq, Eq, Debug, Encode, Decode, Default)]
34pub enum BossBarColor {
35 #[default]
36 Pink,
37 Blue,
38 Red,
39 Green,
40 Yellow,
41 Purple,
42 White,
43}
44
45#[derive(Copy, Clone, PartialEq, Eq, Debug, Encode, Decode, Default)]
47pub enum BossBarDivision {
48 #[default]
49 NoDivision,
50 SixNotches,
51 TenNotches,
52 TwelveNotches,
53 TwentyNotches,
54}
55
56#[bitfield(u8)]
58#[derive(PartialEq, Eq, Encode, Decode, Component)]
59pub struct BossBarFlags {
60 pub darken_sky: bool,
61 pub dragon_bar: bool,
62 pub create_fog: bool,
63 #[bits(5)]
64 _pad: u8,
65}