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/UseItemPacket.cpp | 112 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 Minecraft.World/UseItemPacket.cpp (limited to 'Minecraft.World/UseItemPacket.cpp') diff --git a/Minecraft.World/UseItemPacket.cpp b/Minecraft.World/UseItemPacket.cpp new file mode 100644 index 00000000..d9699130 --- /dev/null +++ b/Minecraft.World/UseItemPacket.cpp @@ -0,0 +1,112 @@ +#include "stdafx.h" +#include +#include "InputOutputStream.h" +#include "net.minecraft.world.item.h" +#include "PacketListener.h" +#include "UseItemPacket.h" + +const float UseItemPacket::CLICK_ACCURACY = 16.0f; + +UseItemPacket::~UseItemPacket() +{ +} + +UseItemPacket::UseItemPacket() +{ + x = 0; + y = 0; + z = 0; + face = 0; + item = nullptr; + clickX = 0.0f; + clickY = 0.0f; + clickZ = 0.0f; +} + +UseItemPacket::UseItemPacket(int x, int y, int z, int face, shared_ptr item, float clickX, float clickY, float clickZ) +{ + this->x = x; + this->y = y; + this->z = z; + this->face = face; + // 4J - take copy of item as we want our packets to have full ownership of any referenced data + this->item = item ? item->copy() : shared_ptr(); + this->clickX = clickX; + this->clickY = clickY; + this->clickZ = clickZ; +} + +void UseItemPacket::read(DataInputStream *dis) //throws IOException +{ + x = dis->readInt(); + y = dis->read(); + z = dis->readInt(); + face = dis->read(); + item = readItem(dis); + clickX = dis->read() / CLICK_ACCURACY; + clickY = dis->read() / CLICK_ACCURACY; + clickZ = dis->read() / CLICK_ACCURACY; +} + +void UseItemPacket::write(DataOutputStream *dos) //throws IOException +{ + dos->writeInt(x); + dos->write(y); + dos->writeInt(z); + dos->write(face); + + writeItem(item, dos); + dos->write((int) (clickX * CLICK_ACCURACY)); + dos->write((int) (clickY * CLICK_ACCURACY)); + dos->write((int)(clickZ * CLICK_ACCURACY)); +} + +void UseItemPacket::handle(PacketListener *listener) +{ + listener->handleUseItem(shared_from_this()); +} + +int UseItemPacket::getEstimatedSize() +{ + return 15; +} + +int UseItemPacket::getX() +{ + return x; +} + +int UseItemPacket::getY() +{ + return y; +} + +int UseItemPacket::getZ() +{ + return z; +} + +int UseItemPacket::getFace() +{ + return face; +} + +shared_ptr UseItemPacket::getItem() +{ + return item; +} + +float UseItemPacket::getClickX() +{ + return clickX; +} + +float UseItemPacket::getClickY() +{ + return clickY; +} + +float UseItemPacket::getClickZ() +{ + return clickZ; +} -- cgit v1.2.3