From db65e11d57fb52395a3ba2e9372bdaf29aca691c Mon Sep 17 00:00:00 2001 From: beeduck Date: Mon, 18 Jul 2016 13:10:00 -0700 Subject: Fixes for boat entities (#3265) protocol for vehicles now properly handled, protocol for boat paddles now properly handled, boats can no longer spawn underwater, boats now properly float, boat metadata now properly broadcasted. --- src/Items/ItemBoat.h | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/Items/ItemBoat.h') diff --git a/src/Items/ItemBoat.h b/src/Items/ItemBoat.h index 208904130..de16c70dc 100644 --- a/src/Items/ItemBoat.h +++ b/src/Items/ItemBoat.h @@ -77,7 +77,22 @@ public: double y = Callbacks.m_Pos.y; double z = Callbacks.m_Pos.z; - cBoat * Boat = new cBoat(x + 0.5, y + 1, z + 0.5); + // Verify that block type for spawn point is water + BLOCKTYPE SpawnBlock = a_World->GetBlock(x, y, z); + if (!IsBlockWater(SpawnBlock)) + { + return false; + } + + // Block above must be air to spawn a boat (prevents spawning a boat underwater) + BLOCKTYPE BlockAbove = a_World->GetBlock(x, y + 1, z); + if (BlockAbove != E_BLOCK_AIR) + { + return false; + } + + // Spawn block at water level + cBoat * Boat = new cBoat(x + 0.5, y + 0.5, z + 0.5); Boat->Initialize(*a_World); return true; -- cgit v1.2.3