Files
minecraft-pe-0.6.1/src/network/packet/SetEntityMotionPacket.h
2026-03-02 22:04:18 +03:00

69 lines
1.6 KiB
C++
Executable File

#ifndef NET_MINECRAFT_NETWORK_PACKET__SetEntityMotionPacket_H__
#define NET_MINECRAFT_NETWORK_PACKET__SetEntityMotionPacket_H__
//package net.minecraft.network.packet;
#include "../Packet.h"
#include "../../world/entity/Entity.h"
class SetEntityMotionPacket: public Packet
{
public:
SetEntityMotionPacket() {}
SetEntityMotionPacket(Entity* e) {
init(e->entityId, e->xd, e->yd, e->zd);
}
SetEntityMotionPacket(int id, float xd, float yd, float zd) {
init(id, xd, yd, zd);
}
void write(RakNet::BitStream* bitStream)
{
const float M = 3.9f;
short xa = (short)(8000.0f * Mth::clamp(xd, -M, M));
short ya = (short)(8000.0f * Mth::clamp(yd, -M, M));
short za = (short)(8000.0f * Mth::clamp(zd, -M, M));
bitStream->Write((RakNet::MessageID)(ID_USER_PACKET_ENUM + PACKET_SETENTITYMOTION));
bitStream->Write(id);
bitStream->Write(xa);
bitStream->Write(ya);
bitStream->Write(za);
}
void read(RakNet::BitStream* bitStream)
{
short xa, ya, za;
bitStream->Read(id);
bitStream->Read(xa);
bitStream->Read(ya);
bitStream->Read(za);
xd = xa / 8000.0f;
yd = ya / 8000.0f;
zd = za / 8000.0f;
}
void handle(const RakNet::RakNetGUID& source, NetEventCallback* callback)
{
callback->handle(source, (SetEntityMotionPacket*)this);
}
private:
void init(int entityId, float xd, float yd, float zd) {
this->id = entityId;
this->xd = xd;
this->yd = yd;
this->zd = zd;
}
public:
int id;
float xd, yd, zd;
};
#endif /*NET_MINECRAFT_NETWORK_PACKET__SetEntityMotionPacket_H__*/