1
0
Fork 0

Merge pull request #1645 from jonfabe/SpectatorModeFixes

Spectator mode fixes
This commit is contained in:
Mattes D 2014-12-04 09:10:14 +01:00
commit c8e75994cc
2 changed files with 12 additions and 7 deletions

View File

@ -120,6 +120,11 @@ cPlayer::cPlayer(cClientHandle* a_Client, const AString & a_PlayerName) :
{
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);
@ -1074,7 +1079,7 @@ bool cPlayer::IsGameModeAdventure(void) const
bool cPlayer::IsGameModeSpectator(void) const
{
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)
{
// Don't burn in creative and stop burning in creative if necessary
if (!IsGameModeCreative())
// Don't burn in creative or spectator and stop burning in creative if necessary
if (!IsGameModeCreative() && !IsGameModeSpectator())
{
super::TickBurning(a_Chunk);
}
@ -1913,9 +1918,9 @@ void cPlayer::HandleFood(void)
{
// 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;
}
@ -2080,7 +2085,7 @@ void cPlayer::UpdateMovementStats(const Vector3d & a_DeltaPos)
void cPlayer::ApplyFoodExhaustionFromMovement()
{
if (IsGameModeCreative())
if (IsGameModeCreative() || IsGameModeSpectator())
{
return;
}

View File

@ -614,7 +614,7 @@ void cWorld::Start(void)
}
// Adjust the enum-backed variables into their respective bounds:
m_GameMode = (eGameMode) Clamp(GameMode, (int)gmSurvival, (int)gmAdventure);
m_GameMode = (eGameMode) Clamp(GameMode, (int)gmSurvival, (int)gmSpectator);
m_TNTShrapnelLevel = (eShrapnelLevel)Clamp(TNTShrapnelLevel, (int)slNone, (int)slAll);
m_Weather = (eWeather) Clamp(Weather, (int)wSunny, (int)wStorm);