From 30ac3f583849f68ea7a29df5be6c53b3ef1fe26d Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Mon, 9 Sep 2013 19:28:50 +0100 Subject: Added a few changes [SEE DESC] * Revised pickup comments * SlotArea pickup tossing now reflects Player.cpp * Removed unneeded ItemShears comment (was working already) * Sand and gravel pickups spawn with correct speed --- source/Blocks/BlockHandler.cpp | 8 ++++++++ source/Items/ItemShears.h | 1 - source/Simulator/SandSimulator.cpp | 2 +- source/UI/SlotArea.cpp | 2 +- source/World.cpp | 4 ++-- 5 files changed, 12 insertions(+), 5 deletions(-) (limited to 'source') diff --git a/source/Blocks/BlockHandler.cpp b/source/Blocks/BlockHandler.cpp index 5134c1103..2627ac6b4 100644 --- a/source/Blocks/BlockHandler.cpp +++ b/source/Blocks/BlockHandler.cpp @@ -351,6 +351,14 @@ void cBlockHandler::DropBlock(cWorld * a_World, cEntity * a_Digger, int a_BlockX if (!Pickups.empty()) { + // Add random offset to the spawn position: + // Commented out until bug with pickups not spawning properly is fixed, see World.cpp + /* + int MicroX = (int)(a_BlockX * 32) + (r1.randInt(16) + r1.randInt(16) - 16); + int MicroY = (int)(a_BlockY * 32) + (r1.randInt(16) + r1.randInt(16) - 16); + int MicroZ = (int)(a_BlockZ * 32) + (r1.randInt(16) + r1.randInt(16) - 16); + */ + a_World->SpawnItemPickups(Pickups, a_BlockX, a_BlockY, a_BlockZ); } } diff --git a/source/Items/ItemShears.h b/source/Items/ItemShears.h index 663fa0170..6a17607ee 100644 --- a/source/Items/ItemShears.h +++ b/source/Items/ItemShears.h @@ -38,7 +38,6 @@ public: a_Player->UseEquippedItem(); return true; } - // TODO: cobweb, vines return false; } diff --git a/source/Simulator/SandSimulator.cpp b/source/Simulator/SandSimulator.cpp index f4f0cdc80..87fb83357 100644 --- a/source/Simulator/SandSimulator.cpp +++ b/source/Simulator/SandSimulator.cpp @@ -258,7 +258,7 @@ void cSandSimulator::FinishFalling( // Create a pickup instead: cItems Pickups; Pickups.Add((ENUM_ITEM_ID)a_FallingBlockType, 1, a_FallingBlockMeta); - a_World->SpawnItemPickups(Pickups, (double)a_BlockX + 0.5, (double)a_BlockY + 0.5, (double)a_BlockZ + 0.5, 0); + a_World->SpawnItemPickups(Pickups, (double)a_BlockX + 0.5, (double)a_BlockY + 0.5, (double)a_BlockZ + 0.5); } diff --git a/source/UI/SlotArea.cpp b/source/UI/SlotArea.cpp index 9213d4ff8..0a37e82b0 100644 --- a/source/UI/SlotArea.cpp +++ b/source/UI/SlotArea.cpp @@ -793,7 +793,7 @@ void cSlotAreaTemporary::TossItems(cPlayer & a_Player, int a_Begin, int a_End) double vX = 0, vY = 0, vZ = 0; EulerToVector(-a_Player.GetRotation(), a_Player.GetPitch(), vZ, vX, vY); vY = -vY * 2 + 1.f; - a_Player.GetWorld()->SpawnItemPickups(Drops, a_Player.GetPosX(), a_Player.GetPosY() + 1.6f, a_Player.GetPosZ(), vX * 2, vY * 2, vZ * 2); + a_Player.GetWorld()->SpawnItemPickups(Drops, a_Player.GetPosX(), a_Player.GetPosY() + 1.6f, a_Player.GetPosZ(), vX * 3, vY * 3, vZ * 3); } diff --git a/source/World.cpp b/source/World.cpp index 718c86262..1d403994d 100644 --- a/source/World.cpp +++ b/source/World.cpp @@ -1517,7 +1517,7 @@ void cWorld::SpawnItemPickups(const cItems & a_Pickups, double a_BlockX, double float SpeedY = 1; float SpeedZ = (float)(a_FlyAwaySpeed * (r1.randInt(1000) - 500)); - // (FS #338 Fixed with mid block position spawn, previous TODOs/comments removed) + // Pickup doesn't spawn on client without a mid block position. Perhaps the doubles are causing issues? int MicroX = (int)(floor(a_BlockX) * 32) + 16; int MicroY = (int)(floor(a_BlockY) * 32) + 16; int MicroZ = (int)(floor(a_BlockZ) * 32) + 16; @@ -1539,7 +1539,7 @@ void cWorld::SpawnItemPickups(const cItems & a_Pickups, double a_BlockX, double MTRand r1; for (cItems::const_iterator itr = a_Pickups.begin(); itr != a_Pickups.end(); ++itr) { - // (FS #338 Fixed with mid block position spawn, previous TODOs/comments removed) + // Pickup doesn't spawn on client without a mid block position. Perhaps the doubles are causing issues? int MicroX = (int)(floor(a_BlockX) * 32) + 16; int MicroY = (int)(floor(a_BlockY) * 32) + 16; int MicroZ = (int)(floor(a_BlockZ) * 32) + 16; -- cgit v1.2.3