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

70 lines
2.1 KiB
C++

#include "../../Platform/stdafx.h"
#include <iostream>
#include "../../IO/Streams/InputOutputStream.h"
#include "PacketListener.h"
#include "ContainerOpenPacket.h"
void ContainerOpenPacket::_init(int containerId, int type,
const std::wstring& title, int size,
bool customName, int entityId) {
this->containerId = containerId;
this->type = type;
this->title = title;
this->size = size;
this->customName = customName;
this->entityId = entityId;
}
ContainerOpenPacket::ContainerOpenPacket() { _init(0, 0, L"", 0, false, 0); }
ContainerOpenPacket::ContainerOpenPacket(int containerId, int type,
const std::wstring& title, int size,
bool customName) {
_init(containerId, type, title, size, customName, 0);
}
ContainerOpenPacket::ContainerOpenPacket(int containerId, int type,
const std::wstring& title, int size,
bool customName, int entityId) {
_init(containerId, type, title, size, customName, entityId);
}
void ContainerOpenPacket::handle(PacketListener* listener) {
listener->handleContainerOpen(shared_from_this());
}
void ContainerOpenPacket::read(DataInputStream* dis) // throws IOException
{
containerId = dis->readByte() & 0xff;
type = dis->readByte() & 0xff;
size = dis->readByte() & 0xff;
customName = dis->readBoolean();
if (type == HORSE) {
entityId = dis->readInt();
}
if (customName) {
title = readUtf(dis, 64);
}
}
void ContainerOpenPacket::write(DataOutputStream* dos) // throws IOException
{
dos->writeByte(containerId & 0xff);
dos->writeByte(type & 0xff);
dos->writeByte(size & 0xff);
dos->writeBoolean(customName);
if (type == HORSE) {
dos->writeInt(entityId);
}
if (customName) {
writeUtf(title, dos);
}
}
int ContainerOpenPacket::getEstimatedSize() {
if (type == HORSE) {
return 10;
}
return 6;
}