ffqwfqwfw

This commit is contained in:
2026-07-18 14:02:45 +02:00
parent 26e5376030
commit 3811964689
6 changed files with 36 additions and 12 deletions

View File

@@ -90,8 +90,10 @@ bool GameMode::useItemOn(Player* player, Level* level, ItemInstance* item, int x
float clickY = hit.y - y;
float clickZ = hit.z - z;
if (level->isClientSide) {
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);
UseItemPacket packet(x, y, z, face, item, player->entityId, clickX, clickY, clickZ, player->x, player->y, player->z);
minecraft->raknetInstance->send(packet);
}
int t = level->getTile(x, y, z);
@@ -100,7 +102,7 @@ bool GameMode::useItemOn(Player* player, Level* level, ItemInstance* item, int x
return true;
if (item == NULL) return false;
if(isCreativeType()) {
if (isCreativeType()) {
int aux = item->getAuxValue();
int count = item->count;
bool success = item->useOn(player, level, x, y, z, face, clickX, clickY, clickZ);
@@ -117,7 +119,7 @@ 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);
UseItemPacket packet(item, player->entityId, player->aimDirection, player->x, player->y, player->z);
minecraft->raknetInstance->send(packet);
}
if (itemInstance != item || (itemInstance != NULL && itemInstance->count != oldCount)) {

View File

@@ -820,7 +820,7 @@ void ClientSideNetworkHandler::handle(const RakNet::RakNetGUID& source, SetEntit
if (!level)
return;
LOGI("SetEntityDataPacket\n");
// LOGI("SetEntityDataPacket\n");
Entity* e = level->getEntity(packet->id);
if (e) {

View File

@@ -433,7 +433,7 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, MovePlay
{
if (!level) return;
LOGI("MovePlayerPacket\n");
// LOGI("MovePlayerPacket\n");
if (Entity* entity = level->getEntity(packet->entityId)) {
ServerPlayer* player = (ServerPlayer*) getPlayer(source);
@@ -713,7 +713,10 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, UseItemP
LOGI("UseItemPacket: id %i data %i\n", packet->itemId, packet->itemData);
Entity* entity = level->getEntity(packet->entityId);
if (entity && entity->isPlayer()) {
LOGI("%f %f %f \n", entity->x, entity->y, entity->z);
Player* player = (Player*) entity;
int x = packet->x, y = packet->y, z = packet->z;
Tile* t = Tile::tiles[level->getTile(x, y, z)];
@@ -747,6 +750,12 @@ 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);
if(packet->face == 255) {
// Special case: x,y,z means direction-of-action
player->aimDirection.set(packet->x / 32768.0f, packet->y / 32768.0f, packet->z / 32768.0f);

View File

@@ -16,10 +16,12 @@ public:
short itemId;
unsigned char itemData;
ItemInstance item;
float playerX, playerY, playerZ;
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)
: x(x),
y(y),
z(z),
@@ -29,17 +31,23 @@ public:
entityId(entityId),
clickX(clickX),
clickY(clickY),
clickZ(clickZ)
clickZ(clickZ),
playerX(plrX),
playerY(plrY),
playerZ(plrZ)
{}
UseItemPacket(const ItemInstance* item, int entityId, const Vec3& aim)
UseItemPacket(const ItemInstance* item, int entityId, const Vec3& aim, float plrX, float plrY, float plrZ)
: face(255),
itemId(item? item->id : 0),
itemData(item? item->getAuxValue() : 0),
entityId(entityId),
x((int)(aim.x * 32768.0f)),
y((int)(aim.y * 32768.0f)),
z((int)(aim.z * 32768.0f))
z((int)(aim.z * 32768.0f)),
playerX(plrX),
playerY(plrY),
playerZ(plrZ)
{
}
@@ -57,6 +65,9 @@ public:
bitStream->Write(clickX);
bitStream->Write(clickY);
bitStream->Write(clickZ);
bitStream->Write(playerX);
bitStream->Write(playerY);
bitStream->Write(playerZ);
}
void read(RakNet::BitStream* bitStream)
@@ -74,7 +85,9 @@ public:
item.id = itemId;
item.setAuxValue(itemData);
item.count = (itemId == 0 && itemData == 0)? 0 : 1;
bitStream->Read(playerX);
bitStream->Read(playerY);
bitStream->Read(playerZ);
}
void handle(const RakNet::RakNetGUID& source, NetEventCallback* callback)

View File

@@ -61,7 +61,7 @@ public:
if (level->setTileAndData(x, y, z, tileId, data)) {
Tile::tiles[tileId]->setPlacedBy(level, x, y, z, player);
level->playSound(x + 0.5f, y + 0.5f, z + 0.5f, tile->soundType->getStepSound(), (tile->soundType->getVolume() + 1) / 2, tile->soundType->getPitch() * 0.8f);
printf("%f %f %f \n", player->x, player->y, player->z);
/*
PlaceBlockPacket packet(player->entityId, x, y, z, face, tileId, instance->getAuxValue());
//LOGI("Place block at @ %d, %d, %d\n", x, y, z);