4jcraft/targets/minecraft/network/packet/SignUpdatePacket.cpp

67 lines
1.8 KiB
C++

#include "SignUpdatePacket.h"
#include <stdint.h>
#include "PacketListener.h"
#include "java/InputOutputStream/DataInputStream.h"
#include "java/InputOutputStream/DataOutputStream.h"
#include "minecraft/world/level/tile/entity/SignTileEntity.h"
SignUpdatePacket::SignUpdatePacket() {
shouldDelay = true;
m_bVerified = false;
m_bCensored = false;
x = 0;
y = 0;
z = 0;
}
SignUpdatePacket::SignUpdatePacket(int x, int y, int z, bool bVerified,
bool bCensored, std::string lines[]) {
shouldDelay = true;
this->m_bVerified = bVerified;
this->m_bCensored = bCensored;
this->x = x;
this->y = y;
this->z = z;
for (int i = 0; i < MAX_SIGN_LINES; i++) this->lines[i] = lines[i];
}
void SignUpdatePacket::read(DataInputStream* dis) // throws IOException
{
x = dis->readInt();
y = dis->readShort();
z = dis->readInt();
this->m_bVerified = dis->readBoolean();
this->m_bCensored = dis->readBoolean();
;
for (int i = 0; i < MAX_SIGN_LINES; i++)
lines[i] = readUtf(dis, SignTileEntity::MAX_LINE_LENGTH);
}
void SignUpdatePacket::write(DataOutputStream* dos) // throws IOException
{
dos->writeInt(x);
dos->writeShort(y);
dos->writeInt(z);
dos->writeBoolean(m_bVerified);
dos->writeBoolean(m_bCensored);
for (int i = 0; i < MAX_SIGN_LINES; i++) writeUtf(lines[i], dos);
}
void SignUpdatePacket::handle(PacketListener* listener) {
listener->handleSignUpdate(shared_from_this());
}
int SignUpdatePacket::getEstimatedSize() {
int l = 0;
l += sizeof(int);
l += sizeof(short);
l += sizeof(int);
l += sizeof(uint8_t);
l += sizeof(uint8_t);
for (int i = 0; i < MAX_SIGN_LINES; i++) l += (int)lines[i].length();
return l;
}