diff --git a/src/Entities/Entity.cpp b/src/Entities/Entity.cpp index 90683271a..209c10b44 100644 --- a/src/Entities/Entity.cpp +++ b/src/Entities/Entity.cpp @@ -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; diff --git a/src/World.cpp b/src/World.cpp index 8883aae1d..cfbbb4ff6 100644 --- a/src/World.cpp +++ b/src/World.cpp @@ -1974,9 +1974,9 @@ void cWorld::SpawnItemPickups(const cItems & a_Pickups, Vector3d a_Pos, double a continue; } - float SpeedX = static_cast(a_FlyAwaySpeed * Random.RandInt(-5, 5)); - float SpeedY = static_cast(a_FlyAwaySpeed * Random.RandInt(50)); - float SpeedZ = static_cast(a_FlyAwaySpeed * Random.RandInt(-5, 5)); + float SpeedX = static_cast(a_FlyAwaySpeed * Random.RandInt(-10, 10)); + float SpeedY = static_cast(a_FlyAwaySpeed * Random.RandInt(40, 50)); + float SpeedZ = static_cast(a_FlyAwaySpeed * Random.RandInt(-10, 10)); auto Pickup = cpp14::make_unique(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; }