diff options
author | p-mcgowan <mickeymcgowan@shaw.ca> | 2014-12-04 22:31:58 +0100 |
---|---|---|
committer | p-mcgowan <mickeymcgowan@shaw.ca> | 2014-12-04 22:31:58 +0100 |
commit | 8557ab18d0cff48fbd3cefe45cdebc4be1afb71a (patch) | |
tree | a460a2b6d674e64764b6a70c820d7a1d9867e7f8 /src/Entities/Player.cpp | |
parent | reformat for lua and CI (diff) | |
parent | Merge pull request #1645 from jonfabe/SpectatorModeFixes (diff) | |
download | cuberite-8557ab18d0cff48fbd3cefe45cdebc4be1afb71a.tar cuberite-8557ab18d0cff48fbd3cefe45cdebc4be1afb71a.tar.gz cuberite-8557ab18d0cff48fbd3cefe45cdebc4be1afb71a.tar.bz2 cuberite-8557ab18d0cff48fbd3cefe45cdebc4be1afb71a.tar.lz cuberite-8557ab18d0cff48fbd3cefe45cdebc4be1afb71a.tar.xz cuberite-8557ab18d0cff48fbd3cefe45cdebc4be1afb71a.tar.zst cuberite-8557ab18d0cff48fbd3cefe45cdebc4be1afb71a.zip |
Diffstat (limited to 'src/Entities/Player.cpp')
-rw-r--r-- | src/Entities/Player.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/Entities/Player.cpp b/src/Entities/Player.cpp index edcdb4799..bafd06277 100644 --- a/src/Entities/Player.cpp +++ b/src/Entities/Player.cpp @@ -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; } |