1
0

Merge pull request #461 from mc-server/repeaters

Repeaters, pressure plates, and others
This commit is contained in:
Mattes D
2013-12-25 23:57:02 -08:00
7 changed files with 314 additions and 47 deletions

View File

@@ -252,6 +252,11 @@ void cPlayer::Tick(float a_Dt, cChunk & a_Chunk)
m_World->SendPlayerList(this);
m_LastPlayerListTime = t1.GetNowTime();
}
if (IsFlying())
{
m_LastGroundHeight = (float)GetPosY();
}
}
@@ -452,10 +457,16 @@ void cPlayer::SetTouchGround(bool a_bTouchGround)
if (m_LastJumpHeight > m_LastGroundHeight) Damage++;
m_LastJumpHeight = (float)GetPosY();
if ((Damage > 0) && (!IsGameModeCreative()))
if (Damage > 0)
{
TakeDamage(dtFalling, NULL, Damage, Damage, 0);
}
if (!IsGameModeCreative())
{
TakeDamage(dtFalling, NULL, Damage, Damage, 0);
}
// Mojang uses floor() to get X and Z positions, instead of just casting it to an (int)
GetWorld()->BroadcastSoundParticleEffect(2006, (int)floor(GetPosX()), (int)GetPosY() - 1, (int)floor(GetPosZ()), Damage /* Used as particle effect speed modifier */);
}
m_LastGroundHeight = (float)GetPosY();
}
@@ -979,6 +990,12 @@ void cPlayer::SetGameMode(eGameMode a_GameMode)
m_GameMode = a_GameMode;
m_ClientHandle->SendGameMode(a_GameMode);
if (!IsGameModeCreative())
{
SetFlying(false);
SetCanFly(false);
}
}