From 7700116330534d7129cb1aeeb10b1b8ad20b3c8f Mon Sep 17 00:00:00 2001 From: Mat Date: Mon, 23 Mar 2020 02:05:47 +0200 Subject: 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. --- src/Entities/Entity.cpp | 2 +- src/World.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) 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; } -- cgit v1.2.3