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
|
||
|
|
||
|
|
||
|
|
||
|
|