This commit is contained in:
2026-07-18 19:14:16 +02:00
parent 50d1de49e0
commit fcf7427fb2
3 changed files with 44 additions and 9 deletions

View File

@@ -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); LOGI("%f %f %f \n", player->x, player->y, player->z);
item = player->inventory->getSelected(); 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); minecraft->raknetInstance->send(packet);
} }
int t = level->getTile(x, y, z); 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); ItemInstance* itemInstance = item->use(level, player);
if(level->isClientSide) { 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); minecraft->raknetInstance->send(packet);
} }
if (itemInstance != item || (itemInstance != NULL && itemInstance->count != oldCount)) { if (itemInstance != item || (itemInstance != NULL && itemInstance->count != oldCount)) {

View File

@@ -749,12 +749,17 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, UseItemP
} }
ItemInstance* item = player->inventory->getItem(slot); ItemInstance* item = player->inventory->getItem(slot);
player->x = packet->playerX; player->x = packet->playerX;
player->y = packet->playerY; player->y = packet->playerY;
player->z = packet->playerZ; 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) { if(packet->face == 255) {
// Special case: x,y,z means direction-of-action // Special case: x,y,z means direction-of-action

View File

@@ -17,11 +17,13 @@ public:
unsigned char itemData; unsigned char itemData;
ItemInstance item; ItemInstance item;
float playerX, playerY, playerZ; float playerX, playerY, playerZ;
float playerX0, playerY0, playerZ0;
float playerX1, playerY1, playerZ1;
UseItemPacket() {} UseItemPacket() {}
UseItemPacket(int x, int y, int z, int face, const ItemInstance* item, int entityId, float clickX, float clickY, float clickZ, 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), : x(x),
y(y), y(y),
z(z), z(z),
@@ -34,10 +36,17 @@ public:
clickZ(clickZ), clickZ(clickZ),
playerX(plrX), playerX(plrX),
playerY(plrY), 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), : face(255),
itemId(item? item->id : 0), itemId(item? item->id : 0),
itemData(item? item->getAuxValue() : 0), itemData(item? item->getAuxValue() : 0),
@@ -47,7 +56,13 @@ public:
z((int)(aim.z * 32768.0f)), z((int)(aim.z * 32768.0f)),
playerX(plrX), playerX(plrX),
playerY(plrY), 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(playerX);
bitStream->Write(playerY); bitStream->Write(playerY);
bitStream->Write(playerZ); 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) void read(RakNet::BitStream* bitStream)
@@ -88,6 +109,12 @@ public:
bitStream->Read(playerX); bitStream->Read(playerX);
bitStream->Read(playerY); bitStream->Read(playerY);
bitStream->Read(playerZ); 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) void handle(const RakNet::RakNetGUID& source, NetEventCallback* callback)