4jcraft/Minecraft.World/Network/Packets/SetEntityLinkPacket.cpp
2026-03-21 18:09:02 -05:00

49 lines
1.5 KiB
C++

#include "../../Platform/stdafx.h"
#include <iostream>
#include "../../IO/Streams/InputOutputStream.h"
#include "PacketListener.h"
#include "../../Headers/net.minecraft.world.entity.h"
#include "SetEntityLinkPacket.h"
SetEntityLinkPacket::SetEntityLinkPacket() {
sourceId = -1;
destId = -1;
type = -1;
}
SetEntityLinkPacket::SetEntityLinkPacket(int linkType,
std::shared_ptr<Entity> sourceEntity,
std::shared_ptr<Entity> destEntity) {
type = linkType;
this->sourceId = sourceEntity->entityId;
this->destId = destEntity != NULL ? destEntity->entityId : -1;
}
int SetEntityLinkPacket::getEstimatedSize() { return 8; }
void SetEntityLinkPacket::read(DataInputStream* dis) // throws IOException
{
sourceId = dis->readInt();
destId = dis->readInt();
type = dis->readUnsignedByte();
}
void SetEntityLinkPacket::write(DataOutputStream* dos) // throws IOException
{
dos->writeInt(sourceId);
dos->writeInt(destId);
dos->writeByte(type);
}
void SetEntityLinkPacket::handle(PacketListener* listener) {
listener->handleEntityLinkPacket(shared_from_this());
}
bool SetEntityLinkPacket::canBeInvalidated() { return true; }
bool SetEntityLinkPacket::isInvalidatedBy(std::shared_ptr<Packet> packet) {
std::shared_ptr<SetEntityLinkPacket> target =
std::dynamic_pointer_cast<SetEntityLinkPacket>(packet);
return target->sourceId == sourceId;
}