1
0

Merge pull request #1135 from mc-server/fixes

Fixes to projectiles and the undead
This commit is contained in:
Tiger Wang
2014-07-09 09:50:38 +01:00
19 changed files with 271 additions and 109 deletions

View File

@@ -589,20 +589,19 @@ void cNBTChunkSerializer::AddProjectileEntity(cProjectileEntity * a_Projectile)
m_Writer.BeginCompound("");
AddBasicEntity(a_Projectile, a_Projectile->GetMCAClassName());
Vector3d Pos = a_Projectile->GetPosition();
m_Writer.AddShort("xTile", (Int16)floor(Pos.x));
m_Writer.AddShort("yTile", (Int16)floor(Pos.y));
m_Writer.AddShort("zTile", (Int16)floor(Pos.z));
m_Writer.AddShort("inTile", 0); // TODO: Query the block type
m_Writer.AddShort("shake", 0); // TODO: Any shake?
m_Writer.AddByte ("inGround", a_Projectile->IsInGround() ? 1 : 0);
m_Writer.AddByte("inGround", a_Projectile->IsInGround() ? 1 : 0);
switch (a_Projectile->GetProjectileKind())
{
case cProjectileEntity::pkArrow:
{
m_Writer.AddByte("inData", 0); // TODO: Query the block meta (is it needed?)
m_Writer.AddByte("pickup", ((cArrowEntity *)a_Projectile)->GetPickupState());
m_Writer.AddDouble("damage", ((cArrowEntity *)a_Projectile)->GetDamageCoeff());
cArrowEntity * Arrow = (cArrowEntity *)a_Projectile;
m_Writer.AddInt("xTile", (Int16)Arrow->GetBlockHit().x);
m_Writer.AddInt("yTile", (Int16)Arrow->GetBlockHit().y);
m_Writer.AddInt("zTile", (Int16)Arrow->GetBlockHit().z);
m_Writer.AddByte("pickup", Arrow->GetPickupState());
m_Writer.AddDouble("damage", Arrow->GetDamageCoeff());
break;
}
case cProjectileEntity::pkGhastFireball:
@@ -620,14 +619,11 @@ void cNBTChunkSerializer::AddProjectileEntity(cProjectileEntity * a_Projectile)
{
ASSERT(!"Unsaved projectile entity!");
}
} // switch (ProjectileKind)
cEntity * Creator = a_Projectile->GetCreator();
if (Creator != NULL)
} // switch (ProjectileKind)
if (!a_Projectile->GetCreatorName().empty())
{
if (Creator->GetEntityType() == cEntity::etPlayer)
{
m_Writer.AddString("ownerName", ((cPlayer *)Creator)->GetName());
}
m_Writer.AddString("ownerName", a_Projectile->GetCreatorName());
}
m_Writer.EndCompound();
}