1
0
Fork 0

Modify pickup collection behaviour to correspond to vanilla.

As documented here: https://www.spigotmc.org/threads/item-pickup-radius.337271/#post-3141146
This commit is contained in:
Alexander Harkness 2020-05-03 00:13:34 +01:00 committed by Tiger Wang
parent f5ce03d10d
commit 942403de2b
1 changed files with 4 additions and 16 deletions

View File

@ -1625,9 +1625,8 @@ void cChunk::SetAreaBiome(int a_MinRelX, int a_MaxRelX, int a_MinRelZ, int a_Max
void cChunk::CollectPickupsByPlayer(cPlayer & a_Player)
{
double PosX = a_Player.GetPosX();
double PosY = a_Player.GetPosY();
double PosZ = a_Player.GetPosZ();
auto BoundingBox = cBoundingBox(a_Player.GetPosition(), a_Player.GetWidth(), a_Player.GetHeight());
BoundingBox.Expand(1, 0.5, 1);
for (auto & Entity : m_Entities)
{
@ -1635,11 +1634,8 @@ void cChunk::CollectPickupsByPlayer(cPlayer & a_Player)
{
continue; // Only pickups and projectiles can be picked up
}
float DiffX = static_cast<float>(Entity->GetPosX() - PosX);
float DiffY = static_cast<float>(Entity->GetPosY() - PosY);
float DiffZ = static_cast<float>(Entity->GetPosZ() - PosZ);
float SqrDist = DiffX * DiffX + DiffY * DiffY + DiffZ * DiffZ;
if (SqrDist < 1.5f * 1.5f) // 1.5 block
if (BoundingBox.IsInside(Entity->GetPosition()))
{
/*
LOG("Pickup %d being collected by player \"%s\", distance %f",
@ -1656,14 +1652,6 @@ void cChunk::CollectPickupsByPlayer(cPlayer & a_Player)
static_cast<cProjectileEntity &>(*Entity).CollectedBy(a_Player);
}
}
else if (SqrDist < 5 * 5)
{
/*
LOG("Pickup %d close to player \"%s\", but still too far to collect: %f",
(*itr)->GetUniqueID(), a_Player->GetName().c_str(), SqrDist
);
*/
}
}
}