diff options
author | LogicParrot <LogicParrot@users.noreply.github.com> | 2016-02-02 18:40:03 +0100 |
---|---|---|
committer | LogicParrot <LogicParrot@users.noreply.github.com> | 2016-02-02 18:40:03 +0100 |
commit | a8599efd778d601aa67703a558bc171f206f3763 (patch) | |
tree | b6f5c8c073837c43f15b68414db1aaa92bbbab6a /src | |
parent | Merge pull request #2936 from mathias-github/master (diff) | |
parent | Fix cPawn pushing (diff) | |
download | cuberite-a8599efd778d601aa67703a558bc171f206f3763.tar cuberite-a8599efd778d601aa67703a558bc171f206f3763.tar.gz cuberite-a8599efd778d601aa67703a558bc171f206f3763.tar.bz2 cuberite-a8599efd778d601aa67703a558bc171f206f3763.tar.lz cuberite-a8599efd778d601aa67703a558bc171f206f3763.tar.xz cuberite-a8599efd778d601aa67703a558bc171f206f3763.tar.zst cuberite-a8599efd778d601aa67703a558bc171f206f3763.zip |
Diffstat (limited to '')
-rw-r--r-- | src/Entities/Entity.cpp | 13 | ||||
-rw-r--r-- | src/Entities/Entity.h | 3 | ||||
-rw-r--r-- | src/Entities/Pawn.cpp | 6 |
3 files changed, 22 insertions, 0 deletions
diff --git a/src/Entities/Entity.cpp b/src/Entities/Entity.cpp index d4097f734..593bc6aca 100644 --- a/src/Entities/Entity.cpp +++ b/src/Entities/Entity.cpp @@ -1864,6 +1864,19 @@ bool cEntity::IsA(const char * a_ClassName) const +bool cEntity::IsAttachedTo(const cEntity * a_Entity) const +{ + if ((m_AttachedTo != nullptr) && (a_Entity->GetUniqueID() == m_AttachedTo->GetUniqueID())) + { + return true; + } + return false; +} + + + + + void cEntity::SetHeadYaw(double a_HeadYaw) { m_HeadYaw = a_HeadYaw; diff --git a/src/Entities/Entity.h b/src/Entities/Entity.h index 3715fb5c4..dbfc019e7 100644 --- a/src/Entities/Entity.h +++ b/src/Entities/Entity.h @@ -423,6 +423,9 @@ public: /** Detaches from the currently attached entity, if any */ virtual void Detach(void); + /** Returns true if this entity is attached to the specified entity */ + bool IsAttachedTo(const cEntity * a_Entity) const; + /** Makes sure head yaw is not over the specified range. */ void WrapHeadYaw(); diff --git a/src/Entities/Pawn.cpp b/src/Entities/Pawn.cpp index 6b404f7e0..2d86dfecf 100644 --- a/src/Entities/Pawn.cpp +++ b/src/Entities/Pawn.cpp @@ -73,6 +73,12 @@ void cPawn::Tick(std::chrono::milliseconds a_Dt, cChunk & a_Chunk) return false; } + // do not push a boat / minecart you're sitting in + if (m_Pusher->IsAttachedTo(a_Entity)) + { + return false; + } + Vector3d v3Delta = a_Entity->GetPosition() - m_Pusher->GetPosition(); v3Delta.y = 0.0; // we only push sideways v3Delta *= 1.0 / (v3Delta.Length() + 0.01); // we push harder if we're close |