diff options
author | Mattes D <github@xoft.cz> | 2014-06-01 10:43:37 +0200 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2014-06-01 10:43:37 +0200 |
commit | 2059944d1e39e952c164b8a87c0c3f216b3b731e (patch) | |
tree | fd210c1cf1bfcda2f7ed1292df01a26f9555c057 /src/Mobs/Wither.cpp | |
parent | Initial commit of the Generator article. (diff) | |
parent | Updated AlchemistVillage prefabs. (diff) | |
download | cuberite-2059944d1e39e952c164b8a87c0c3f216b3b731e.tar cuberite-2059944d1e39e952c164b8a87c0c3f216b3b731e.tar.gz cuberite-2059944d1e39e952c164b8a87c0c3f216b3b731e.tar.bz2 cuberite-2059944d1e39e952c164b8a87c0c3f216b3b731e.tar.lz cuberite-2059944d1e39e952c164b8a87c0c3f216b3b731e.tar.xz cuberite-2059944d1e39e952c164b8a87c0c3f216b3b731e.tar.zst cuberite-2059944d1e39e952c164b8a87c0c3f216b3b731e.zip |
Diffstat (limited to '')
-rw-r--r-- | src/Mobs/Wither.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/Mobs/Wither.cpp b/src/Mobs/Wither.cpp index 5b6e895e1..170f4fdc0 100644 --- a/src/Mobs/Wither.cpp +++ b/src/Mobs/Wither.cpp @@ -2,7 +2,9 @@ #include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules #include "Wither.h" + #include "../World.h" +#include "../Entities/Player.h" @@ -100,3 +102,35 @@ void cWither::GetDrops(cItems & a_Drops, cEntity * a_Killer) + +void cWither::KilledBy(cEntity * a_Killer) +{ + super::KilledBy(a_Killer); + + class cPlayerCallback : public cPlayerListCallback + { + Vector3f m_Pos; + + virtual bool Item(cPlayer * a_Player) + { + // TODO 2014-05-21 xdot: Vanilla minecraft uses an AABB check instead of a radius one + double Dist = (a_Player->GetPosition() - m_Pos).Length(); + if (Dist < 50.0) + { + // If player is close, award achievement + a_Player->AwardAchievement(achKillWither); + } + return false; + } + + public: + cPlayerCallback(const Vector3f & a_Pos) : m_Pos(a_Pos) {} + + } PlayerCallback(GetPosition()); + + m_World->ForEachPlayer(PlayerCallback); +} + + + + |