1
0

Add missing IsSpectatorMode() checks in Player.cpp, make sure that player is flying when spawned otherwise it will fall through the world.

This commit is contained in:
Jonathan Fabian 2014-12-02 20:25:41 -05:00
parent b0e4643eb6
commit 24c6da6209

View File

@ -120,6 +120,11 @@ cPlayer::cPlayer(cClientHandle* a_Client, const AString & a_PlayerName) :
{ {
m_CanFly = true; m_CanFly = true;
} }
if (World->IsGameModeSpectator()) //Otherwise Player will fall out of the world on join
{
m_CanFly = true;
m_IsFlying = true;
}
} }
cRoot::Get()->GetServer()->PlayerCreated(this); cRoot::Get()->GetServer()->PlayerCreated(this);
@ -1074,7 +1079,7 @@ bool cPlayer::IsGameModeAdventure(void) const
bool cPlayer::IsGameModeSpectator(void) const bool cPlayer::IsGameModeSpectator(void) const
{ {
return (m_GameMode == gmSpectator) || // Either the player is explicitly in Spectator return (m_GameMode == gmSpectator) || // Either the player is explicitly in Spectator
((m_GameMode == gmNotSet) && m_World->IsGameModeSpectator()); // or they inherit from the world and the world is Adventure ((m_GameMode == gmNotSet) && m_World->IsGameModeSpectator()); // or they inherit from the world and the world is Spectator
} }
@ -1893,8 +1898,8 @@ void cPlayer::UseEquippedItem(int a_Amount)
void cPlayer::TickBurning(cChunk & a_Chunk) void cPlayer::TickBurning(cChunk & a_Chunk)
{ {
// Don't burn in creative and stop burning in creative if necessary // Don't burn in creative or spectator and stop burning in creative if necessary
if (!IsGameModeCreative()) if (!(IsGameModeCreative() || IsGameModeSpectator()))
{ {
super::TickBurning(a_Chunk); super::TickBurning(a_Chunk);
} }
@ -1913,9 +1918,9 @@ void cPlayer::HandleFood(void)
{ {
// Ref.: http://www.minecraftwiki.net/wiki/Hunger // Ref.: http://www.minecraftwiki.net/wiki/Hunger
if (IsGameModeCreative()) if (IsGameModeCreative() || IsGameModeSpectator())
{ {
// Hunger is disabled for Creative // Hunger is disabled for Creative and Spectator
return; return;
} }
@ -2080,7 +2085,7 @@ void cPlayer::UpdateMovementStats(const Vector3d & a_DeltaPos)
void cPlayer::ApplyFoodExhaustionFromMovement() void cPlayer::ApplyFoodExhaustionFromMovement()
{ {
if (IsGameModeCreative()) if (IsGameModeCreative() || IsGameModeSpectator())
{ {
return; return;
} }