diff options
| author | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
|---|---|---|
| committer | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
| commit | b691c43c44ff180d10e7d4a9afc83b98551ff586 (patch) | |
| tree | 3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.World/UseItemPacket.cpp | |
| parent | def8cb415354ac390b7e89052a50605285f1aca9 (diff) | |
Initial commit
Diffstat (limited to 'Minecraft.World/UseItemPacket.cpp')
| -rw-r--r-- | Minecraft.World/UseItemPacket.cpp | 112 |
1 files changed, 112 insertions, 0 deletions
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 <iostream> +#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<ItemInstance> 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<ItemInstance>(); + 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<ItemInstance> UseItemPacket::getItem() +{ + return item; +} + +float UseItemPacket::getClickX() +{ + return clickX; +} + +float UseItemPacket::getClickY() +{ + return clickY; +} + +float UseItemPacket::getClickZ() +{ + return clickZ; +} |
