Merge branch 'master' of https://github.com/mc-server/MCServer
This commit is contained in:
@@ -45,6 +45,7 @@ cEntity::cEntity(eEntityType a_EntityType, double a_X, double a_Y, double a_Z, d
|
||||
, m_IsInitialized(false)
|
||||
, m_EntityType(a_EntityType)
|
||||
, m_World(NULL)
|
||||
, m_IsFireproof(false)
|
||||
, m_TicksSinceLastBurnDamage(0)
|
||||
, m_TicksSinceLastLavaDamage(0)
|
||||
, m_TicksSinceLastFireDamage(0)
|
||||
@@ -816,7 +817,10 @@ void cEntity::TickBurning(cChunk & a_Chunk)
|
||||
m_TicksSinceLastBurnDamage++;
|
||||
if (m_TicksSinceLastBurnDamage >= BURN_TICKS_PER_DAMAGE)
|
||||
{
|
||||
TakeDamage(dtOnFire, NULL, BURN_DAMAGE, 0);
|
||||
if (!m_IsFireproof)
|
||||
{
|
||||
TakeDamage(dtOnFire, NULL, BURN_DAMAGE, 0);
|
||||
}
|
||||
m_TicksSinceLastBurnDamage = 0;
|
||||
}
|
||||
m_TicksLeftBurning--;
|
||||
@@ -884,7 +888,10 @@ void cEntity::TickBurning(cChunk & a_Chunk)
|
||||
m_TicksSinceLastLavaDamage++;
|
||||
if (m_TicksSinceLastLavaDamage >= LAVA_TICKS_PER_DAMAGE)
|
||||
{
|
||||
TakeDamage(dtLavaContact, NULL, LAVA_DAMAGE, 0);
|
||||
if (!m_IsFireproof)
|
||||
{
|
||||
TakeDamage(dtLavaContact, NULL, LAVA_DAMAGE, 0);
|
||||
}
|
||||
m_TicksSinceLastLavaDamage = 0;
|
||||
}
|
||||
}
|
||||
@@ -902,7 +909,10 @@ void cEntity::TickBurning(cChunk & a_Chunk)
|
||||
m_TicksSinceLastFireDamage++;
|
||||
if (m_TicksSinceLastFireDamage >= FIRE_TICKS_PER_DAMAGE)
|
||||
{
|
||||
TakeDamage(dtFireContact, NULL, FIRE_DAMAGE, 0);
|
||||
if (!m_IsFireproof)
|
||||
{
|
||||
TakeDamage(dtFireContact, NULL, FIRE_DAMAGE, 0);
|
||||
}
|
||||
m_TicksSinceLastFireDamage = 0;
|
||||
}
|
||||
}
|
||||
@@ -1061,6 +1071,16 @@ void cEntity::SetMaxHealth(int a_MaxHealth)
|
||||
|
||||
|
||||
|
||||
/// Sets whether the entity is fireproof
|
||||
void cEntity::SetIsFireproof(bool a_IsFireproof)
|
||||
{
|
||||
m_IsFireproof = a_IsFireproof;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// Puts the entity on fire for the specified amount of ticks
|
||||
void cEntity::StartBurning(int a_TicksLeftBurning)
|
||||
{
|
||||
|
||||
@@ -329,6 +329,11 @@ public:
|
||||
|
||||
int GetMaxHealth(void) const { return m_MaxHealth; }
|
||||
|
||||
/// Sets whether the entity is fireproof
|
||||
void SetIsFireproof(bool a_IsFireproof);
|
||||
|
||||
bool IsFireproof(void) const { return m_IsFireproof; }
|
||||
|
||||
/// Puts the entity on fire for the specified amount of ticks
|
||||
void StartBurning(int a_TicksLeftBurning);
|
||||
|
||||
@@ -435,6 +440,9 @@ protected:
|
||||
|
||||
cWorld * m_World;
|
||||
|
||||
/// Whether the entity is capable of taking fire or lava damage.
|
||||
bool m_IsFireproof;
|
||||
|
||||
/// Time, in ticks, since the last damage dealt by being on fire. Valid only if on fire (IsOnFire())
|
||||
int m_TicksSinceLastBurnDamage;
|
||||
|
||||
|
||||
@@ -795,7 +795,7 @@ bool cMinecart::TestBlockCollision(NIBBLETYPE a_RailMeta)
|
||||
{
|
||||
BLOCKTYPE BlockXM = m_World->GetBlock(POSX_TOINT - 1, POSY_TOINT, POSZ_TOINT);
|
||||
BLOCKTYPE BlockXP = m_World->GetBlock(POSX_TOINT + 1, POSY_TOINT, POSZ_TOINT);
|
||||
BLOCKTYPE BlockZM = m_World->GetBlock(POSX_TOINT, POSY_TOINT, POSZ_TOINT + 1);
|
||||
BLOCKTYPE BlockZM = m_World->GetBlock(POSX_TOINT, POSY_TOINT, POSZ_TOINT - 1);
|
||||
BLOCKTYPE BlockZP = m_World->GetBlock(POSX_TOINT, POSY_TOINT, POSZ_TOINT + 1);
|
||||
if (
|
||||
(!IsBlockRail(BlockXM) && cBlockInfo::IsSolid(BlockXM)) ||
|
||||
|
||||
@@ -85,9 +85,10 @@ cPlayer::cPlayer(cClientHandle* a_Client, const AString & a_PlayerName)
|
||||
if (!LoadFromDisk())
|
||||
{
|
||||
m_Inventory.Clear();
|
||||
SetPosX(cRoot::Get()->GetDefaultWorld()->GetSpawnX());
|
||||
SetPosY(cRoot::Get()->GetDefaultWorld()->GetSpawnY());
|
||||
SetPosZ(cRoot::Get()->GetDefaultWorld()->GetSpawnZ());
|
||||
cWorld * DefaultWorld = cRoot::Get()->GetDefaultWorld();
|
||||
SetPosX(DefaultWorld->GetSpawnX());
|
||||
SetPosY(DefaultWorld->GetSpawnY());
|
||||
SetPosZ(DefaultWorld->GetSpawnZ());
|
||||
|
||||
LOGD("Player \"%s\" is connecting for the first time, spawning at default world spawn {%.2f, %.2f, %.2f}",
|
||||
a_PlayerName.c_str(), GetPosX(), GetPosY(), GetPosZ()
|
||||
@@ -1165,9 +1166,9 @@ Vector3d cPlayer::GetThrowSpeed(double a_SpeedCoeff) const
|
||||
|
||||
|
||||
|
||||
void cPlayer::ForceSetSpeed(Vector3d a_Direction)
|
||||
void cPlayer::ForceSetSpeed(const Vector3d & a_Speed)
|
||||
{
|
||||
SetSpeed(a_Direction);
|
||||
SetSpeed(a_Speed);
|
||||
m_ClientHandle->SendEntityVelocity(*this);
|
||||
}
|
||||
|
||||
|
||||
@@ -181,7 +181,7 @@ public:
|
||||
void LoginSetGameMode(eGameMode a_GameMode);
|
||||
|
||||
/** Forces the player to move in the given direction. */
|
||||
void ForceSetSpeed(Vector3d a_Direction); // tolua_export
|
||||
void ForceSetSpeed(const Vector3d & a_Speed); // tolua_export
|
||||
|
||||
/** Tries to move to a new position, with attachment-related checks (y == -999) */
|
||||
void MoveTo(const Vector3d & a_NewPos); // tolua_export
|
||||
|
||||
Reference in New Issue
Block a user