steel_protocol/packets/game/
c_remove_mob_effect.rs1use steel_macros::{ClientPacket, WriteTo};
4use steel_registry::mob_effect::MobEffectRef;
5use steel_registry::packets::play::C_REMOVE_MOB_EFFECT;
6
7#[derive(ClientPacket, WriteTo, Clone, Debug)]
11#[packet_id(Play = C_REMOVE_MOB_EFFECT)]
12pub struct CRemoveMobEffect {
13 #[write(as = VarInt)]
14 pub entity_id: i32,
15 #[write(as = VarInt)]
17 pub effect_id: i32,
18}
19
20impl CRemoveMobEffect {
21 #[must_use]
22 pub fn new(entity_id: i32, effect: MobEffectRef) -> Self {
23 Self {
24 entity_id,
25 effect_id: effect.packet_holder_id(),
26 }
27 }
28}
29
30#[cfg(test)]
31mod tests {
32
33 use steel_registry::init_vanilla_registry;
34 use steel_registry::vanilla_mob_effects;
35
36 use super::*;
37
38 #[test]
39 fn remove_mob_effect_uses_raw_holder_registry_id() {
40 init_vanilla_registry();
41
42 let packet = CRemoveMobEffect::new(42, vanilla_mob_effects::SPEED);
43
44 assert_eq!(packet.effect_id, 0);
45 }
46}