From fcf7427fb259c8737634f9fb4ba44f5c0f0fa40b Mon Sep 17 00:00:00 2001 From: InviseDivine Date: Sat, 18 Jul 2026 19:14:16 +0200 Subject: [PATCH] gg fixed --- src/client/gamemode/GameMode.cpp | 7 +++-- src/network/ServerSideNetworkHandler.cpp | 11 ++++++-- src/network/packet/UseItemPacket.h | 35 +++++++++++++++++++++--- 3 files changed, 44 insertions(+), 9 deletions(-) diff --git a/src/client/gamemode/GameMode.cpp b/src/client/gamemode/GameMode.cpp index 6877d7c..8009d64 100755 --- a/src/client/gamemode/GameMode.cpp +++ b/src/client/gamemode/GameMode.cpp @@ -93,7 +93,9 @@ bool GameMode::useItemOn(Player* player, Level* level, ItemInstance* item, int x LOGI("%f %f %f \n", player->x, player->y, player->z); item = player->inventory->getSelected(); - UseItemPacket packet(x, y, z, face, item, player->entityId, clickX, clickY, clickZ, player->x, player->y, player->z); + UseItemPacket packet(x, y, z, face, item, player->entityId, clickX, clickY, clickZ, player->x, player->y, player->z, + player->bb.x0, player->bb.y0, player->bb.z0, player->bb.x1, player->bb.y1, player->bb.z1); + minecraft->raknetInstance->send(packet); } int t = level->getTile(x, y, z); @@ -119,7 +121,8 @@ bool GameMode::useItem( Player* player, Level* level, ItemInstance* item ) { ItemInstance* itemInstance = item->use(level, player); if(level->isClientSide) { - UseItemPacket packet(item, player->entityId, player->aimDirection, player->x, player->y, player->z); + UseItemPacket packet(item, player->entityId, player->aimDirection, player->x, player->y, player->z, + player->bb.x0, player->bb.y0, player->bb.z0, player->bb.x1, player->bb.y1, player->bb.z1); minecraft->raknetInstance->send(packet); } if (itemInstance != item || (itemInstance != NULL && itemInstance->count != oldCount)) { diff --git a/src/network/ServerSideNetworkHandler.cpp b/src/network/ServerSideNetworkHandler.cpp index 1c4a1ac..2f3f237 100755 --- a/src/network/ServerSideNetworkHandler.cpp +++ b/src/network/ServerSideNetworkHandler.cpp @@ -749,12 +749,17 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, UseItemP } ItemInstance* item = player->inventory->getItem(slot); - player->x = packet->playerX; player->y = packet->playerY; player->z = packet->playerZ; - LOGI("upd: %f %f %f \n", packet->playerX, packet->playerY, packet->playerZ); - LOGI("plr new: %f %f %f \n", player->x, player->y, player->z); + + player->bb.x0 = packet->playerX0; + player->bb.y0 = packet->playerY0; + player->bb.z0 = packet->playerZ0; + + player->bb.x1 = packet->playerX1; + player->bb.y1 = packet->playerY1; + player->bb.z1 = packet->playerZ1; if(packet->face == 255) { // Special case: x,y,z means direction-of-action diff --git a/src/network/packet/UseItemPacket.h b/src/network/packet/UseItemPacket.h index bfef1f2..3f67c41 100755 --- a/src/network/packet/UseItemPacket.h +++ b/src/network/packet/UseItemPacket.h @@ -17,11 +17,13 @@ public: unsigned char itemData; ItemInstance item; float playerX, playerY, playerZ; + float playerX0, playerY0, playerZ0; + float playerX1, playerY1, playerZ1; UseItemPacket() {} UseItemPacket(int x, int y, int z, int face, const ItemInstance* item, int entityId, float clickX, float clickY, float clickZ, - float plrX, float plrY, float plrZ) + float plrX, float plrY, float plrZ, float plrX0, float plrY0, float plrZ0, float plrX1, float plrY1, float plrZ1) : x(x), y(y), z(z), @@ -34,10 +36,17 @@ public: clickZ(clickZ), playerX(plrX), playerY(plrY), - playerZ(plrZ) + playerZ(plrZ), + playerX0(plrX0), + playerY0(plrY0), + playerZ0(plrZ0), + playerX1(plrX1), + playerY1(plrY1), + playerZ1(plrZ1) {} - UseItemPacket(const ItemInstance* item, int entityId, const Vec3& aim, float plrX, float plrY, float plrZ) + UseItemPacket(const ItemInstance* item, int entityId, const Vec3& aim, float plrX, float plrY, float plrZ, + float plrX0, float plrY0, float plrZ0, float plrX1, float plrY1, float plrZ1) : face(255), itemId(item? item->id : 0), itemData(item? item->getAuxValue() : 0), @@ -47,7 +56,13 @@ public: z((int)(aim.z * 32768.0f)), playerX(plrX), playerY(plrY), - playerZ(plrZ) + playerZ(plrZ), + playerX0(plrX0), + playerY0(plrY0), + playerZ0(plrZ0), + playerX1(plrX1), + playerY1(plrY1), + playerZ1(plrZ1) { } @@ -68,6 +83,12 @@ public: bitStream->Write(playerX); bitStream->Write(playerY); bitStream->Write(playerZ); + bitStream->Write(playerX0); + bitStream->Write(playerY0); + bitStream->Write(playerZ0); + bitStream->Write(playerX1); + bitStream->Write(playerY1); + bitStream->Write(playerZ1); } void read(RakNet::BitStream* bitStream) @@ -88,6 +109,12 @@ public: bitStream->Read(playerX); bitStream->Read(playerY); bitStream->Read(playerZ); + bitStream->Read(playerX0); + bitStream->Read(playerY0); + bitStream->Read(playerZ0); + bitStream->Read(playerX1); + bitStream->Read(playerY1); + bitStream->Read(playerZ1); } void handle(const RakNet::RakNetGUID& source, NetEventCallback* callback)