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/Entities/Entity.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/Entities/Entity.cpp') diff --git a/src/Entities/Entity.cpp b/src/Entities/Entity.cpp index 6e1dec957..98be99a27 100644 --- a/src/Entities/Entity.cpp +++ b/src/Entities/Entity.cpp @@ -1038,6 +1038,20 @@ void cEntity::HandlePhysics(std::chrono::milliseconds a_Dt, cChunk & a_Chunk) NextSpeed -= NextSpeed * (m_AirDrag * 20.0f) * DtSec.count(); } NextSpeed.y += static_cast(fallspeed); + + // A real boat floats + if (IsBoat()) + { + // Find top water block and sit there + int NextBlockY = BlockY; + BLOCKTYPE NextBlock = NextChunk->GetBlock(RelBlockX, NextBlockY, RelBlockZ); + while (IsBlockWater(NextBlock)) + { + NextBlock = NextChunk->GetBlock(RelBlockX, ++NextBlockY, RelBlockZ); + } + NextPos.y = NextBlockY - 0.5; + NextSpeed.y = 0; + } } else { @@ -1913,6 +1927,14 @@ void cEntity::BroadcastMovementUpdate(const cClientHandle * a_Exclude) +cEntity * cEntity::GetAttached() +{ + return m_AttachedTo; +} + + + + void cEntity::AttachTo(cEntity * a_AttachTo) { -- cgit v1.2.3