summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Entities/Entity.cpp7
-rw-r--r--src/Entities/Player.cpp18
-rw-r--r--src/Entities/Player.h18
3 files changed, 19 insertions, 24 deletions
diff --git a/src/Entities/Entity.cpp b/src/Entities/Entity.cpp
index b78c4dd82..33f5a6135 100644
--- a/src/Entities/Entity.cpp
+++ b/src/Entities/Entity.cpp
@@ -1180,6 +1180,13 @@ void cEntity::TickBurning(cChunk & a_Chunk)
// Remember the current burning state:
bool HasBeenBurning = (m_TicksLeftBurning > 0);
+ // Fireproof entities burn out on the next tick
+ if (IsFireproof())
+ {
+ m_TicksLeftBurning = 0;
+ }
+
+ // Fire is extinguished by rain
if (GetWorld()->IsWeatherWetAt(POSX_TOINT, POSZ_TOINT))
{
if (POSY_TOINT > m_World->GetHeight(POSX_TOINT, POSZ_TOINT))
diff --git a/src/Entities/Player.cpp b/src/Entities/Player.cpp
index fb2274cad..f9804569f 100644
--- a/src/Entities/Player.cpp
+++ b/src/Entities/Player.cpp
@@ -2352,23 +2352,6 @@ void cPlayer::UseEquippedItem(int a_Amount)
-void cPlayer::TickBurning(cChunk & a_Chunk)
-{
- // Don't burn in creative or spectator and stop burning in creative if necessary
- if (!IsGameModeCreative() && !IsGameModeSpectator())
- {
- super::TickBurning(a_Chunk);
- }
- else if (IsOnFire())
- {
- m_TicksLeftBurning = 0;
- OnFinishedBurning();
- }
-}
-
-
-
-
void cPlayer::HandleFood(void)
{
@@ -3018,4 +3001,3 @@ float cPlayer::GetPlayerRelativeBlockHardness(BLOCKTYPE a_Block)
// LOGD("blockHardness: %f, digSpeed: %f, canHarvestBlockDivisor: %f\n", blockHardness, digSpeed, canHarvestBlockDivisor);
return (blockHardness < 0) ? 0 : ((digSpeed / blockHardness) / canHarvestBlockDivisor);
}
-
diff --git a/src/Entities/Player.h b/src/Entities/Player.h
index 5c08151c8..2685622ad 100644
--- a/src/Entities/Player.h
+++ b/src/Entities/Player.h
@@ -195,6 +195,15 @@ public:
/** Returns true if the player is in Spectator mode, either explicitly, or by inheriting from current world */
bool IsGameModeSpectator(void) const;
+ /** Returns true if the player is fireproof
+ Stops players burning in creative or spectator modes.
+ */
+ virtual bool IsFireproof() const override
+ {
+ return (m_IsFireproof || IsGameModeCreative() || IsGameModeSpectator());
+
+ }
+
/** Returns true if the player can be targeted by Mobs */
bool CanMobsTarget(void) const;
@@ -331,13 +340,13 @@ public:
/** Returns true if the player is currently in the process of eating the currently equipped item */
bool IsEating(void) const { return (m_EatingFinishTick >= 0); }
- /** Returns true if the player is currently flying. */
+ /** Returns true if the player is currently flying */
bool IsFlying(void) const { return m_IsFlying; }
- /** Returns if a player is sleeping in a bed */
+ /** Returns true if a player is sleeping in a bed */
bool IsInBed(void) const { return m_bIsInBed; }
- /** returns true if the player has thrown out a floater. */
+ /** Returns true if the player has thrown out a floater */
bool IsFishing(void) const { return m_IsFishing; }
void SetIsFishing(bool a_IsFishing, UInt32 a_FloaterID = cEntity::INVALID_ID) { m_IsFishing = a_IsFishing; m_FloaterID = a_FloaterID; }
@@ -719,9 +728,6 @@ protected:
/** Filters out damage for creative mode / friendly fire */
virtual bool DoTakeDamage(TakeDamageInfo & TDI) override;
- /** Stops players from burning in creative mode */
- virtual void TickBurning(cChunk & a_Chunk) override;
-
/** Called in each tick to handle food-related processing */
void HandleFood(void);