summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source/Mobs/Cow.cpp16
-rw-r--r--source/Mobs/Cow.h1
-rw-r--r--source/Mobs/Horse.cpp12
3 files changed, 25 insertions, 4 deletions
diff --git a/source/Mobs/Cow.cpp b/source/Mobs/Cow.cpp
index 8e9b87d27..431a6916d 100644
--- a/source/Mobs/Cow.cpp
+++ b/source/Mobs/Cow.cpp
@@ -7,10 +7,6 @@
-// TODO: Milk Cow
-
-
-
cCow::cCow(void) :
@@ -28,6 +24,18 @@ void cCow::GetDrops(cItems & a_Drops, cEntity * a_Killer)
AddRandomDropItem(a_Drops, 1, 3, IsOnFire() ? E_ITEM_STEAK : E_ITEM_RAW_BEEF);
}
+void cCow::OnRightClicked(cPlayer & a_Player)
+{
+ if ((a_Player.GetEquippedItem().m_ItemType == E_ITEM_BUCKET))
+ {
+ if (!a_Player.IsGameModeCreative())
+ {
+ a_Player.GetInventory().RemoveOneEquippedItem();
+ a_Player.GetInventory().AddItem(E_ITEM_MILK)
+ }
+
+ }
+}
diff --git a/source/Mobs/Cow.h b/source/Mobs/Cow.h
index b90cb170e..0391d4a31 100644
--- a/source/Mobs/Cow.h
+++ b/source/Mobs/Cow.h
@@ -18,6 +18,7 @@ public:
CLASS_PROTODEF(cCow);
virtual void GetDrops(cItems & a_Drops, cEntity * a_Killer = NULL) override;
+ virtual void OnRightClicked(cPlayer & a_Player) override;
} ;
diff --git a/source/Mobs/Horse.cpp b/source/Mobs/Horse.cpp
index 46e7969cc..c2a8f6ed0 100644
--- a/source/Mobs/Horse.cpp
+++ b/source/Mobs/Horse.cpp
@@ -107,6 +107,18 @@ void cHorse::OnRightClicked(cPlayer & a_Player)
m_TameAttemptTimes++;
a_Player.AttachTo(this);
+
+ if (a_Player.GetEquippedItem().m_ItemType == E_ITEM_SADDLE)
+ {
+ if (!a_Player.IsGameModeCreative())
+ {
+ a_Player.GetInventory().RemoveOneEquippedItem();
+ }
+
+ // Set saddle state & broadcast metadata
+ m_bIsSaddled = true;
+ m_World->BroadcastEntityMetadata(*this);
+ }
}