diff options
author | Marvin Kopf <marvinkopf@posteo.de> | 2016-02-02 14:44:10 +0100 |
---|---|---|
committer | Marvin Kopf <marvinkopf@posteo.de> | 2016-02-02 14:57:20 +0100 |
commit | a1c48f4853b234e920e96671c4ff218567d4f2d4 (patch) | |
tree | b6f5c8c073837c43f15b68414db1aaa92bbbab6a | |
parent | Merge pull request #2936 from mathias-github/master (diff) | |
download | cuberite-a1c48f4853b234e920e96671c4ff218567d4f2d4.tar cuberite-a1c48f4853b234e920e96671c4ff218567d4f2d4.tar.gz cuberite-a1c48f4853b234e920e96671c4ff218567d4f2d4.tar.bz2 cuberite-a1c48f4853b234e920e96671c4ff218567d4f2d4.tar.lz cuberite-a1c48f4853b234e920e96671c4ff218567d4f2d4.tar.xz cuberite-a1c48f4853b234e920e96671c4ff218567d4f2d4.tar.zst cuberite-a1c48f4853b234e920e96671c4ff218567d4f2d4.zip |
-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 |