summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Mobs/Chicken.cpp25
-rw-r--r--src/Mobs/Chicken.h3
-rw-r--r--src/Mobs/Cow.cpp28
-rw-r--r--src/Mobs/Cow.h8
-rw-r--r--src/Mobs/Mooshroom.cpp27
-rw-r--r--src/Mobs/Mooshroom.h8
-rw-r--r--src/Mobs/Pig.cpp27
-rw-r--r--src/Mobs/Pig.h4
-rw-r--r--src/Mobs/Sheep.cpp24
-rw-r--r--src/Mobs/Sheep.h4
10 files changed, 153 insertions, 5 deletions
diff --git a/src/Mobs/Chicken.cpp b/src/Mobs/Chicken.cpp
index 087fd088a..52c8d3788 100644
--- a/src/Mobs/Chicken.cpp
+++ b/src/Mobs/Chicken.cpp
@@ -2,7 +2,7 @@
#include "Chicken.h"
#include "../World.h"
-
+#include "../Entities/Player.h"
@@ -41,6 +41,29 @@ void cChicken::Tick(float a_Dt, cChunk & a_Chunk)
{
m_EggDropTimer++;
}
+ cPlayer * a_Closest_Player = m_World->FindClosestPlayer(GetPosition(), (float)m_SightDistance);
+ if (a_Closest_Player != NULL)
+ {
+ if (a_Closest_Player->GetEquippedItem().m_ItemType == E_ITEM_SEEDS)
+ {
+ if (!IsBegging())
+ {
+ m_IsBegging = true;
+ m_World->BroadcastEntityMetadata(*this);
+ }
+ Vector3d PlayerPos = a_Closest_Player->GetPosition();
+ PlayerPos.y++;
+ m_FinalDestination = PlayerPos;
+ }
+ else
+ {
+ if (IsBegging())
+ {
+ m_IsBegging = false;
+ m_World->BroadcastEntityMetadata(*this);
+ }
+ }
+ }
}
diff --git a/src/Mobs/Chicken.h b/src/Mobs/Chicken.h
index 979c4d8a0..b9cff40d4 100644
--- a/src/Mobs/Chicken.h
+++ b/src/Mobs/Chicken.h
@@ -19,10 +19,13 @@ public:
virtual void GetDrops(cItems & a_Drops, cEntity * a_Killer = NULL) override;
virtual void Tick(float a_Dt, cChunk & a_Chunk) override;
+ bool IsBegging (void) const { return m_IsBegging; }
+
private:
int m_EggDropTimer;
+ bool m_IsBegging;
} ;
diff --git a/src/Mobs/Cow.cpp b/src/Mobs/Cow.cpp
index 9eb74dac2..205ecc73f 100644
--- a/src/Mobs/Cow.cpp
+++ b/src/Mobs/Cow.cpp
@@ -41,5 +41,29 @@ void cCow::OnRightClicked(cPlayer & a_Player)
}
}
-
-
+void cCow::Tick(float a_Dt, cChunk & a_Chunk)
+{
+ cPlayer * a_Closest_Player = m_World->FindClosestPlayer(GetPosition(), (float)m_SightDistance);
+ if (a_Closest_Player != NULL)
+ {
+ if (a_Closest_Player->GetEquippedItem().m_ItemType == E_ITEM_WHEAT)
+ {
+ if (!IsBegging())
+ {
+ m_IsBegging = true;
+ m_World->BroadcastEntityMetadata(*this);
+ }
+ Vector3d PlayerPos = a_Closest_Player->GetPosition();
+ PlayerPos.y++;
+ m_FinalDestination = PlayerPos;
+ }
+ else
+ {
+ if (IsBegging())
+ {
+ m_IsBegging = false;
+ m_World->BroadcastEntityMetadata(*this);
+ }
+ }
+ }
+}
diff --git a/src/Mobs/Cow.h b/src/Mobs/Cow.h
index 0391d4a31..b001ea856 100644
--- a/src/Mobs/Cow.h
+++ b/src/Mobs/Cow.h
@@ -19,6 +19,14 @@ public:
virtual void GetDrops(cItems & a_Drops, cEntity * a_Killer = NULL) override;
virtual void OnRightClicked(cPlayer & a_Player) override;
+ virtual void Tick(float a_Dt, cChunk & a_Chunk) override;
+
+ bool IsBegging (void) const { return m_IsBegging; }
+
+private:
+
+ bool m_IsBegging;
+
} ;
diff --git a/src/Mobs/Mooshroom.cpp b/src/Mobs/Mooshroom.cpp
index 940e2db44..1ff90392d 100644
--- a/src/Mobs/Mooshroom.cpp
+++ b/src/Mobs/Mooshroom.cpp
@@ -2,6 +2,7 @@
#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
#include "Mooshroom.h"
+#include "../Entities/Player.h"
@@ -29,5 +30,31 @@ void cMooshroom::GetDrops(cItems & a_Drops, cEntity * a_Killer)
}
+void cMooshroom::Tick(float a_Dt, cChunk & a_Chunk)
+{
+ cPlayer * a_Closest_Player = m_World->FindClosestPlayer(GetPosition(), (float)m_SightDistance);
+ if (a_Closest_Player != NULL)
+ {
+ if (a_Closest_Player->GetEquippedItem().m_ItemType == E_ITEM_WHEAT)
+ {
+ if (!IsBegging())
+ {
+ m_IsBegging = true;
+ m_World->BroadcastEntityMetadata(*this);
+ }
+ Vector3d PlayerPos = a_Closest_Player->GetPosition();
+ PlayerPos.y++;
+ m_FinalDestination = PlayerPos;
+ }
+ else
+ {
+ if (IsBegging())
+ {
+ m_IsBegging = false;
+ m_World->BroadcastEntityMetadata(*this);
+ }
+ }
+ }
+}
diff --git a/src/Mobs/Mooshroom.h b/src/Mobs/Mooshroom.h
index 73f6348b6..c288f68a9 100644
--- a/src/Mobs/Mooshroom.h
+++ b/src/Mobs/Mooshroom.h
@@ -18,6 +18,14 @@ public:
CLASS_PROTODEF(cMooshroom);
virtual void GetDrops(cItems & a_Drops, cEntity * a_Killer = NULL) override;
+ virtual void Tick(float a_Dt, cChunk & a_Chunk) override;
+
+ bool IsBegging (void) const { return m_IsBegging; }
+
+private:
+
+ bool m_IsBegging;
+
} ;
diff --git a/src/Mobs/Pig.cpp b/src/Mobs/Pig.cpp
index 0871a38a9..e31bc90ba 100644
--- a/src/Mobs/Pig.cpp
+++ b/src/Mobs/Pig.cpp
@@ -71,7 +71,32 @@ void cPig::OnRightClicked(cPlayer & a_Player)
}
}
-
+void cPig::Tick(float a_Dt, cChunk & a_Chunk)
+{
+ cPlayer * a_Closest_Player = m_World->FindClosestPlayer(GetPosition(), (float)m_SightDistance);
+ if (a_Closest_Player != NULL)
+ {
+ if (a_Closest_Player->GetEquippedItem().m_ItemType == E_ITEM_CARROT)
+ {
+ if (!IsBegging())
+ {
+ m_IsBegging = true;
+ m_World->BroadcastEntityMetadata(*this);
+ }
+ Vector3d PlayerPos = a_Closest_Player->GetPosition();
+ PlayerPos.y++;
+ m_FinalDestination = PlayerPos;
+ }
+ else
+ {
+ if (IsBegging())
+ {
+ m_IsBegging = false;
+ m_World->BroadcastEntityMetadata(*this);
+ }
+ }
+ }
+}
diff --git a/src/Mobs/Pig.h b/src/Mobs/Pig.h
index 4fd0d8db8..f42a4f412 100644
--- a/src/Mobs/Pig.h
+++ b/src/Mobs/Pig.h
@@ -19,10 +19,14 @@ public:
virtual void GetDrops(cItems & a_Drops, cEntity * a_Killer = NULL) override;
virtual void OnRightClicked(cPlayer & a_Player) override;
+ virtual void Tick(float a_Dt, cChunk & a_Chunk) override;
+
bool IsSaddled(void) const { return m_bIsSaddled; }
+ bool IsBegging (void) const { return m_IsBegging; }
private:
+ bool m_IsBegging;
bool m_bIsSaddled;
} ;
diff --git a/src/Mobs/Sheep.cpp b/src/Mobs/Sheep.cpp
index 702108ae4..3fb9351ad 100644
--- a/src/Mobs/Sheep.cpp
+++ b/src/Mobs/Sheep.cpp
@@ -96,4 +96,28 @@ void cSheep::Tick(float a_Dt, cChunk & a_Chunk)
}
}
}
+ cPlayer * a_Closest_Player = m_World->FindClosestPlayer(GetPosition(), (float)m_SightDistance);
+ if (a_Closest_Player != NULL)
+ {
+ if (a_Closest_Player->GetEquippedItem().m_ItemType == E_ITEM_WHEAT)
+ {
+ if (!IsBegging())
+ {
+ m_IsBegging = true;
+ m_World->BroadcastEntityMetadata(*this);
+ }
+ Vector3d PlayerPos = a_Closest_Player->GetPosition();
+ PlayerPos.y++;
+ m_FinalDestination = PlayerPos;
+ }
+ else
+ {
+ if (IsBegging())
+ {
+ m_IsBegging = false;
+ m_World->BroadcastEntityMetadata(*this);
+ }
+ }
+ }
}
+
diff --git a/src/Mobs/Sheep.h b/src/Mobs/Sheep.h
index 4eee3db1c..322b31dd9 100644
--- a/src/Mobs/Sheep.h
+++ b/src/Mobs/Sheep.h
@@ -21,11 +21,13 @@ public:
virtual void OnRightClicked(cPlayer & a_Player) override;
virtual void Tick(float a_Dt, cChunk & a_Chunk) override;
+ bool IsBegging(void) const { return m_IsBegging; }
bool IsSheared(void) const { return m_IsSheared; }
int GetFurColor(void) const { return m_WoolColor; }
private:
-
+
+ bool m_IsBegging;
bool m_IsSheared;
int m_WoolColor;
int m_TimeToStopEating;