1
0

Merge pull request #617 from UltraCoderRU/master

Some fixes in wolves implementation
This commit is contained in:
Mattes D 2014-02-02 02:35:24 -08:00
commit 6f90b492b8
5 changed files with 20 additions and 4 deletions

View File

@ -23,6 +23,7 @@ Sxw1212
Taugeshtu Taugeshtu
tigerw (Tiger Wang) tigerw (Tiger Wang)
tonibm19 tonibm19
UltraCoderRU
worktycho worktycho
xoft xoft

View File

@ -276,7 +276,7 @@ void cMonster::Tick(float a_Dt, cChunk & a_Chunk)
{ {
Distance.y = 0; Distance.y = 0;
Distance.Normalize(); Distance.Normalize();
Distance *= 3; Distance *= 5;
SetSpeedX(Distance.x); SetSpeedX(Distance.x);
SetSpeedZ(Distance.z); SetSpeedZ(Distance.z);

View File

@ -204,6 +204,7 @@ void cWolf::TickFollowPlayer()
{ {
if (!IsSitting()) if (!IsSitting())
{ {
Callback.OwnerPos.y = FindFirstNonAirBlockPosition(Callback.OwnerPos.x, Callback.OwnerPos.z);
TeleportToCoords(Callback.OwnerPos.x, Callback.OwnerPos.y, Callback.OwnerPos.z); TeleportToCoords(Callback.OwnerPos.x, Callback.OwnerPos.y, Callback.OwnerPos.z);
} }
} }

View File

@ -455,7 +455,9 @@ void cNBTChunkSerializer::AddMonsterEntity(cMonster * a_Monster)
case cMonster::mtWolf: case cMonster::mtWolf:
{ {
m_Writer.AddString("Owner", ((const cWolf *)a_Monster)->GetOwner()); m_Writer.AddString("Owner", ((const cWolf *)a_Monster)->GetOwner());
m_Writer.AddByte("Sitting", ((const cWolf *)a_Monster)->IsSitting()); m_Writer.AddByte("Sitting", (((const cWolf *)a_Monster)->IsSitting() ? 1 : 0));
m_Writer.AddByte("Angry", (((const cWolf *)a_Monster)->IsAngry() ? 1 : 0));
m_Writer.AddInt("CollarColor", ((const cWolf *)a_Monster)->GetCollarColor());
break; break;
} }
case cMonster::mtZombie: case cMonster::mtZombie:

View File

@ -1889,8 +1889,20 @@ void cWSSAnvil::LoadWolfFromNBT(cEntityList & a_Entities, const cParsedNBT & a_N
int SittingIdx = a_NBT.FindChildByName(a_TagIdx, "Sitting"); int SittingIdx = a_NBT.FindChildByName(a_TagIdx, "Sitting");
if (SittingIdx > 0) if (SittingIdx > 0)
{ {
bool IsSitting = (a_NBT.GetByte(SittingIdx) > 0); bool Sitting = ((a_NBT.GetByte(SittingIdx) == 1) ? true : false);
Monster->SetIsSitting(IsSitting); Monster->SetIsSitting(Sitting);
}
int AngryIdx = a_NBT.FindChildByName(a_TagIdx, "Angry");
if (AngryIdx > 0)
{
bool Angry = ((a_NBT.GetByte(AngryIdx) == 1) ? true : false);
Monster->SetIsAngry(Angry);
}
int CollarColorIdx = a_NBT.FindChildByName(a_TagIdx, "CollarColor");
if (CollarColorIdx > 0)
{
int CollarColor = a_NBT.GetInt(CollarColorIdx);
Monster->SetCollarColor(CollarColor);
} }
a_Entities.push_back(Monster.release()); a_Entities.push_back(Monster.release());
} }