Pickup spawn improvements (#4525)
Pickups are now thrown around when spawned, like in vanilla. Pickups also bail out of the collision detection checks while being created, to prevent them from blasting too far off in e.g. cobblestone generators.
This commit is contained in:
parent
41e09484b7
commit
7700116330
@ -972,7 +972,7 @@ void cEntity::HandlePhysics(std::chrono::milliseconds a_Dt, cChunk & a_Chunk)
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!(IsMinecart() || IsTNT()))
|
||||
else if (!(IsMinecart() || IsTNT() || (IsPickup() && (m_TicksAlive < 15))))
|
||||
{
|
||||
// Push out entity.
|
||||
BLOCKTYPE GotBlock;
|
||||
|
@ -1974,9 +1974,9 @@ void cWorld::SpawnItemPickups(const cItems & a_Pickups, Vector3d a_Pos, double a
|
||||
continue;
|
||||
}
|
||||
|
||||
float SpeedX = static_cast<float>(a_FlyAwaySpeed * Random.RandInt(-5, 5));
|
||||
float SpeedY = static_cast<float>(a_FlyAwaySpeed * Random.RandInt(50));
|
||||
float SpeedZ = static_cast<float>(a_FlyAwaySpeed * Random.RandInt(-5, 5));
|
||||
float SpeedX = static_cast<float>(a_FlyAwaySpeed * Random.RandInt(-10, 10));
|
||||
float SpeedY = static_cast<float>(a_FlyAwaySpeed * Random.RandInt(40, 50));
|
||||
float SpeedZ = static_cast<float>(a_FlyAwaySpeed * Random.RandInt(-10, 10));
|
||||
|
||||
auto Pickup = cpp14::make_unique<cPickup>(a_Pos, *itr, a_IsPlayerCreated, Vector3f{SpeedX, SpeedY, SpeedZ});
|
||||
auto PickupPtr = Pickup.get();
|
||||
@ -2226,7 +2226,7 @@ bool cWorld::DropBlockAsPickups(Vector3i a_BlockPos, const cEntity * a_Digger, c
|
||||
{
|
||||
return false;
|
||||
}
|
||||
SpawnItemPickups(pickups, Vector3d(0.5, 0.5, 0.5) + a_BlockPos);
|
||||
SpawnItemPickups(pickups, Vector3d(0.5, 0.5, 0.5) + a_BlockPos, 10);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user