51 lines
1.2 KiB
C++
51 lines
1.2 KiB
C++
|
|
#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
|
|
|
|
|
|
|
|
|