1
0
Fork 0

Stop Wolf from following player when he is flying

Check to make sure player is not flying before allowing wolf to move to player.

Fixed isFlying to IsFlying
This commit is contained in:
Tyler Encke 2016-02-18 16:07:17 -05:00 committed by Enky
parent dc4ea39755
commit f29908ce77
1 changed files with 12 additions and 4 deletions

View File

@ -344,10 +344,12 @@ void cWolf::TickFollowPlayer()
virtual bool Item(cPlayer * a_Player) override
{
OwnerPos = a_Player->GetPosition();
OwnerFlying = a_Player->IsFlying();
return true;
}
public:
Vector3d OwnerPos;
bool OwnerFlying;
} Callback;
if (m_World->DoWithPlayerByUUID(m_OwnerUUID, Callback))
@ -356,9 +358,12 @@ void cWolf::TickFollowPlayer()
double Distance = (Callback.OwnerPos - GetPosition()).Length();
if (Distance > 20)
{
Callback.OwnerPos.y = FindFirstNonAirBlockPosition(Callback.OwnerPos.x, Callback.OwnerPos.z);
TeleportToCoords(Callback.OwnerPos.x, Callback.OwnerPos.y, Callback.OwnerPos.z);
SetTarget(nullptr);
if (!Callback.OwnerFlying)
{
Callback.OwnerPos.y = FindFirstNonAirBlockPosition(Callback.OwnerPos.x, Callback.OwnerPos.z);
TeleportToCoords(Callback.OwnerPos.x, Callback.OwnerPos.y, Callback.OwnerPos.z);
SetTarget(nullptr);
}
}
if (Distance < 2)
{
@ -371,7 +376,10 @@ void cWolf::TickFollowPlayer()
{
if (GetTarget() == nullptr)
{
MoveToPosition(Callback.OwnerPos);
if (!Callback.OwnerFlying)
{
MoveToPosition(Callback.OwnerPos);
}
}
}
}