diff options
Diffstat (limited to 'src/Entities/LeashKnot.h')
-rw-r--r-- | src/Entities/LeashKnot.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/Entities/LeashKnot.h b/src/Entities/LeashKnot.h new file mode 100644 index 000000000..1a854ef34 --- /dev/null +++ b/src/Entities/LeashKnot.h @@ -0,0 +1,50 @@ + +#pragma once + +#include "HangingEntity.h" + + +class cWorldInterface; + + + + +// tolua_begin +class cLeashKnot : + public cHangingEntity +{ + typedef cHangingEntity super; + +public: + + // tolua_end + + CLASS_PROTODEF(cLeashKnot) + + cLeashKnot(eBlockFace a_BlockFace, double a_X, double a_Y, double a_Z); + + /** Looks for mobs leashed to a player and ties them to this knot */ + void TiePlayersLeashedMobs(cPlayer & a_Player, bool a_ShouldBroadCast); + + void SetShouldSelfDestroy() { m_ShouldSelfDestroy = true; } + + /** Returns the leash knot entity representing the knot at the specified position. Returns nullptr if there's no knot. */ + static cLeashKnot * FindKnotAtPos(cWorldInterface & a_WorldInterface, Vector3i a_BlockPos); + +private: + + /** When a fence is destroyed, the knot on it gets destroyed after a while. This flag turns on the countdown to self destroy. */ + bool m_ShouldSelfDestroy; + int m_TicksToSelfDestroy; + + virtual void OnRightClicked(cPlayer & a_Player) override; + virtual void KilledBy(TakeDamageInfo & a_TDI) override; + virtual void GetDrops(cItems & a_Items, cEntity * a_Killer) override; + virtual void SpawnOn(cClientHandle & a_ClientHandle) override; + virtual void Tick(std::chrono::milliseconds a_Dt, cChunk & a_Chunk) override; + +}; // tolua_export + + + + |