aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/UseItemPacket.cpp
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.World/UseItemPacket.cpp
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.World/UseItemPacket.cpp')
-rw-r--r--Minecraft.World/UseItemPacket.cpp112
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;
+}