From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- Minecraft.World/UpdateMobEffectPacket.cpp | 60 +++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 Minecraft.World/UpdateMobEffectPacket.cpp (limited to 'Minecraft.World/UpdateMobEffectPacket.cpp') diff --git a/Minecraft.World/UpdateMobEffectPacket.cpp b/Minecraft.World/UpdateMobEffectPacket.cpp new file mode 100644 index 00000000..dec8d79f --- /dev/null +++ b/Minecraft.World/UpdateMobEffectPacket.cpp @@ -0,0 +1,60 @@ +#include "stdafx.h" +#include "net.minecraft.world.effect.h" +#include "InputOutputStream.h" +#include "PacketListener.h" +#include "UpdateMobEffectPacket.h" + + + +UpdateMobEffectPacket::UpdateMobEffectPacket() +{ + this->entityId = 0; + this->effectId = 0; + this->effectAmplifier = 0; + this->effectDurationTicks = 0; +} + +UpdateMobEffectPacket::UpdateMobEffectPacket(int entityId, MobEffectInstance *effect) +{ + this->entityId = entityId; + this->effectId = (BYTE) (effect->getId() & 0xff); + this->effectAmplifier = (char) (effect->getAmplifier() & 0xff); + this->effectDurationTicks = (short) effect->getDuration(); +} + +void UpdateMobEffectPacket::read(DataInputStream *dis) +{ + entityId = dis->readInt(); + effectId = dis->readByte(); + effectAmplifier = dis->readByte(); + effectDurationTicks = dis->readShort(); +} + +void UpdateMobEffectPacket::write(DataOutputStream *dos) +{ + dos->writeInt(entityId); + dos->writeByte(effectId); + dos->writeByte(effectAmplifier); + dos->writeShort(effectDurationTicks); +} + +void UpdateMobEffectPacket::handle(PacketListener *listener) +{ + listener->handleUpdateMobEffect(shared_from_this()); +} + +int UpdateMobEffectPacket::getEstimatedSize() +{ + return 8; +} + +bool UpdateMobEffectPacket::canBeInvalidated() +{ + return true; +} + +bool UpdateMobEffectPacket::isInvalidatedBy(shared_ptr packet) +{ + shared_ptr target = dynamic_pointer_cast(packet); + return target->entityId == entityId && target->effectId == effectId; +} \ No newline at end of file -- cgit v1.2.3