summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Entities/Player.cpp29
-rw-r--r--src/Entities/Player.h3
2 files changed, 32 insertions, 0 deletions
diff --git a/src/Entities/Player.cpp b/src/Entities/Player.cpp
index 8f30cd4cc..948a259ff 100644
--- a/src/Entities/Player.cpp
+++ b/src/Entities/Player.cpp
@@ -240,6 +240,11 @@ void cPlayer::Tick(float a_Dt, cChunk & a_Chunk)
HandleFood();
}
+ if (m_IsFishing)
+ {
+ HandleFloater();
+ }
+
// Send Player List (Once per m_LastPlayerListTime/1000 ms)
cTimer t1;
if (m_LastPlayerListTime + cPlayer::PLAYER_LIST_TIME_MS <= t1.GetNowTime())
@@ -1781,6 +1786,30 @@ void cPlayer::HandleFood(void)
+void cPlayer::HandleFloater()
+{
+ if (GetEquippedItem().m_ItemType == E_ITEM_FISHING_ROD)
+ {
+ return;
+ }
+ class cFloaterCallback :
+ public cEntityCallback
+ {
+ public:
+ virtual bool Item(cEntity * a_Entity) override
+ {
+ a_Entity->Destroy(true);
+ return true;
+ }
+ } Callback;
+ m_World->DoWithEntityByID(m_FloaterID, Callback);
+ SetIsFishing(false);
+}
+
+
+
+
+
void cPlayer::ApplyFoodExhaustionFromMovement()
{
if (IsGameModeCreative())
diff --git a/src/Entities/Player.h b/src/Entities/Player.h
index c0ad9eeac..66f1c07a7 100644
--- a/src/Entities/Player.h
+++ b/src/Entities/Player.h
@@ -466,6 +466,9 @@ protected:
/// Called in each tick to handle food-related processing
void HandleFood(void);
+
+ /// Called in each tick if the player is fishing to make sure the floater dissapears when the player doesn't have a fishing rod as equipped item.
+ void HandleFloater(void);
/// Called in each tick to handle air-related processing i.e. drowning
void HandleAir();