summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Server/Plugins/APIDump/APIDesc.lua15
-rw-r--r--src/Entities/Entity.cpp7
-rw-r--r--src/Entities/Player.cpp18
-rw-r--r--src/Entities/Player.h18
4 files changed, 31 insertions, 27 deletions
diff --git a/Server/Plugins/APIDump/APIDesc.lua b/Server/Plugins/APIDump/APIDesc.lua
index 0122a3e4f..3a4e81f0c 100644
--- a/Server/Plugins/APIDump/APIDesc.lua
+++ b/Server/Plugins/APIDump/APIDesc.lua
@@ -8812,7 +8812,7 @@ a_Player:OpenWindow(Window);
}
},
Notes = "Leash the monster to an entity.",
- },
+ },
MobTypeToString =
{
IsStatic = true,
@@ -10351,6 +10351,16 @@ a_Player:OpenWindow(Window);
},
Notes = "Returns true if the player is currently eating the item in their hand.",
},
+ IsFireproof =
+ {
+ Returns =
+ {
+ {
+ Type = "boolean",
+ },
+ },
+ Notes = "Returns true if a player is fireproof. This is when the flag has been explicitly set, or the player is in creative or spectator mode.",
+ },
IsFishing =
{
Returns =
@@ -15748,7 +15758,7 @@ end
E_ITEM_LEASH =
{
Notes = "The itemtype for lead (E_ITEM_LEAD synonym)"
- },
+ },
E_ITEM_LEATHER =
{
Notes = "The itemtype for leather"
@@ -17478,4 +17488,3 @@ end
"__.*__",
},
}
-
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);