diff options
author | Bond-009 <bond.009@outlook.com> | 2017-08-17 16:29:43 +0200 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2017-08-17 16:29:43 +0200 |
commit | 05045860c2002e3c9a79d90290f4d65fdd171141 (patch) | |
tree | 0265750956435f284d5b9c499dbbe5c90231db73 /src/Mobs | |
parent | Add cLuaWindow OnClicked Callback (#3901) (diff) | |
download | cuberite-05045860c2002e3c9a79d90290f4d65fdd171141.tar cuberite-05045860c2002e3c9a79d90290f4d65fdd171141.tar.gz cuberite-05045860c2002e3c9a79d90290f4d65fdd171141.tar.bz2 cuberite-05045860c2002e3c9a79d90290f4d65fdd171141.tar.lz cuberite-05045860c2002e3c9a79d90290f4d65fdd171141.tar.xz cuberite-05045860c2002e3c9a79d90290f4d65fdd171141.tar.zst cuberite-05045860c2002e3c9a79d90290f4d65fdd171141.zip |
Diffstat (limited to 'src/Mobs')
-rw-r--r-- | src/Mobs/Ocelot.cpp | 28 | ||||
-rw-r--r-- | src/Mobs/Ocelot.h | 3 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/Mobs/Ocelot.cpp b/src/Mobs/Ocelot.cpp index 47776670c..e5004a1d1 100644 --- a/src/Mobs/Ocelot.cpp +++ b/src/Mobs/Ocelot.cpp @@ -6,6 +6,7 @@ #include "../Entities/Player.h" #include "../Items/ItemHandler.h" #include "Broadcaster.h" +#include "../BoundingBox.h" @@ -203,3 +204,30 @@ void cOcelot::SpawnOn(cClientHandle & a_ClientHandle) + +class cFindSittingCat : + public cEntityCallback +{ + virtual bool Item(cEntity * a_Entity) override + { + return ( + (a_Entity->GetEntityType() == cEntity::etMonster) && + (static_cast<cMonster *>(a_Entity)->GetMobType() == eMonsterType::mtOcelot) && + (static_cast<cOcelot *>(a_Entity)->IsSitting()) + ); + } +}; + + + + + +bool cOcelot::IsCatSittingOnBlock(cWorld * a_World, Vector3d a_BlockPosition) +{ + cFindSittingCat FindSittingCat; + return a_World->ForEachEntityInBox(cBoundingBox(Vector3d(a_BlockPosition.x, a_BlockPosition.y + 1, a_BlockPosition.z), 1), FindSittingCat); +} + + + + diff --git a/src/Mobs/Ocelot.h b/src/Mobs/Ocelot.h index 5729851fe..59b4f25af 100644 --- a/src/Mobs/Ocelot.h +++ b/src/Mobs/Ocelot.h @@ -54,6 +54,9 @@ public: } void SetCatType (eCatType a_CatType) { m_CatType = a_CatType; } + /** Returns true if there's a cat sitting above the given position */ + static bool IsCatSittingOnBlock(cWorld * a_World, Vector3d a_BlockPosition); + protected: bool m_IsSitting; |