valence_server/
op_level.rs
1use bevy_app::prelude::*;
2use bevy_ecs::prelude::*;
3use derive_more::Deref;
4use valence_protocol::packets::play::EntityStatusS2c;
5use valence_protocol::WritePacket;
6
7use crate::client::{Client, UpdateClientsSet};
8
9pub struct OpLevelPlugin;
10
11impl Plugin for OpLevelPlugin {
12 fn build(&self, app: &mut App) {
13 app.add_systems(PostUpdate, update_op_level.in_set(UpdateClientsSet));
14 }
15}
16
17#[derive(Component, Clone, PartialEq, Eq, Default, Debug, Deref)]
18pub struct OpLevel(u8);
19
20impl OpLevel {
21 pub fn get(&self) -> u8 {
22 self.0
23 }
24
25 pub fn set(&mut self, lvl: u8) {
27 self.0 = lvl.min(3);
28 }
29}
30
31fn update_op_level(mut clients: Query<(&mut Client, &OpLevel), Changed<OpLevel>>) {
32 for (mut client, lvl) in &mut clients.iter_mut() {
33 client.write_packet(&EntityStatusS2c {
34 entity_id: 0,
35 entity_status: 24 + lvl.0,
36 });
37 }
38}