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)]
9#[packet_id(Play = C_REMOVE_MOB_EFFECT)]
10pub struct CRemoveMobEffect {
11 #[write(as = VarInt)]
12 pub entity_id: i32,
13 #[write(as = VarInt)]
15 pub effect_id: i32,
16}
17
18impl CRemoveMobEffect {
19 #[must_use]
20 pub fn new(entity_id: i32, effect: MobEffectRef) -> Self {
21 Self {
22 entity_id,
23 effect_id: effect.packet_holder_id(),
24 }
25 }
26}
27
28#[cfg(test)]
29mod tests {
30
31 use steel_registry::init_vanilla_registry;
32 use steel_registry::vanilla_mob_effects;
33
34 use super::*;
35
36 #[test]
37 fn remove_mob_effect_uses_raw_holder_registry_id() {
38 init_vanilla_registry();
39
40 let packet = CRemoveMobEffect::new(42, vanilla_mob_effects::SPEED);
41
42 assert_eq!(packet.effect_id, 0);
43 }
44}