Fixed wither summoning
This commit is contained in:
parent
0fe1e50ffc
commit
ba42166411
@ -47,6 +47,15 @@ public:
|
||||
|
||||
void Reset(void) { m_IsWither = false; }
|
||||
} CallbackA, CallbackB;
|
||||
|
||||
a_World->DoWithMobHeadAt(a_BlockX, a_BlockY, a_BlockZ, CallbackA);
|
||||
|
||||
if (!CallbackA.IsWither())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
CallbackA.Reset();
|
||||
|
||||
BLOCKTYPE BlockY1 = a_ChunkInterface.GetBlock(a_BlockX, a_BlockY - 1, a_BlockZ);
|
||||
BLOCKTYPE BlockY2 = a_ChunkInterface.GetBlock(a_BlockX, a_BlockY - 2, a_BlockZ);
|
||||
@ -151,7 +160,21 @@ public:
|
||||
World->DoWithMobHeadAt(a_BlockX, a_BlockY, a_BlockZ, Callback);
|
||||
a_ChunkInterface.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, a_BlockMeta);
|
||||
|
||||
TrySpawnWither(a_ChunkInterface, World, a_BlockX, a_BlockY, a_BlockZ);
|
||||
static const Vector3i Coords[] =
|
||||
{
|
||||
Vector3i( 0, 0, 0),
|
||||
Vector3i( 1, 0, 0),
|
||||
Vector3i(-1, 0, 0),
|
||||
Vector3i( 0, 0, 1),
|
||||
Vector3i( 0, 0, -1),
|
||||
};
|
||||
for (size_t i = 0; i < ARRAYCOUNT(Coords); ++i)
|
||||
{
|
||||
if (TrySpawnWither(a_ChunkInterface, World, a_BlockX + Coords[i].x, a_BlockY, a_BlockZ + Coords[i].z))
|
||||
{
|
||||
break;
|
||||
}
|
||||
} // for i - Coords[]
|
||||
}
|
||||
} ;
|
||||
|
||||
|
@ -13,8 +13,6 @@ cWither::cWither(void) :
|
||||
m_InvulnerableTicks(220)
|
||||
{
|
||||
SetMaxHealth(300);
|
||||
|
||||
SetHealth(GetMaxHealth() / 3);
|
||||
}
|
||||
|
||||
|
||||
@ -30,6 +28,18 @@ bool cWither::IsArmored(void) const
|
||||
|
||||
|
||||
|
||||
bool cWither::Initialize(cWorld * a_World) override
|
||||
{
|
||||
// Set health before BroadcastSpawnEntity()
|
||||
SetHealth(GetMaxHealth() / 3);
|
||||
|
||||
return super::Initialize(a_World);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cWither::DoTakeDamage(TakeDamageInfo & a_TDI)
|
||||
{
|
||||
if (a_TDI.DamageType == dtDrowning)
|
||||
|
@ -25,6 +25,7 @@ public:
|
||||
bool IsArmored(void) const;
|
||||
|
||||
// cEntity overrides
|
||||
virtual bool Initialize(cWorld * a_World) override;
|
||||
virtual void GetDrops(cItems & a_Drops, cEntity * a_Killer = NULL) override;
|
||||
virtual void DoTakeDamage(TakeDamageInfo & a_TDI) override;
|
||||
virtual void Tick(float a_Dt, cChunk & a_Chunk) override;
|
||||
|
Loading…
x
Reference in New Issue
Block a user