summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Entities/Player.cpp4
-rw-r--r--src/Items/ItemGoldenApple.h18
-rw-r--r--src/Items/ItemHandler.cpp13
3 files changed, 14 insertions, 21 deletions
diff --git a/src/Entities/Player.cpp b/src/Entities/Player.cpp
index 71f7b582f..073d00909 100644
--- a/src/Entities/Player.cpp
+++ b/src/Entities/Player.cpp
@@ -678,6 +678,10 @@ void cPlayer::FinishEating(void)
{
return;
}
+ if (!IsGameModeCreative())
+ {
+ GetInventory().RemoveOneEquippedItem();
+ }
ItemHandler->OnFoodEaten(m_World, this, &Item);
}
diff --git a/src/Items/ItemGoldenApple.h b/src/Items/ItemGoldenApple.h
index 00f5ac1c0..2303e0e7a 100644
--- a/src/Items/ItemGoldenApple.h
+++ b/src/Items/ItemGoldenApple.h
@@ -21,23 +21,21 @@ public:
virtual bool EatItem(cPlayer * a_Player, cItem * a_Item) override
{
- if (!super::EatItem(a_Player, a_Item))
- {
- return false;
- }
-
- // Add the effects:
- a_Player->AddEntityEffect(cEntityEffect::effAbsorption, 2400, 0);
- a_Player->AddEntityEffect(cEntityEffect::effRegeneration, 100, 1);
+ super::EatItem(a_Player, a_Item);
- // When the apple is a 'notch apple', give extra effects:
+ // Enchanted golden apples have stronger effects:
if (a_Item->m_ItemDamage >= E_META_GOLDEN_APPLE_ENCHANTED)
{
- a_Player->AddEntityEffect(cEntityEffect::effRegeneration, 600, 4);
+ a_Player->AddEntityEffect(cEntityEffect::effAbsorption, 2400, 3);
+ a_Player->AddEntityEffect(cEntityEffect::effRegeneration, 400, 1);
a_Player->AddEntityEffect(cEntityEffect::effResistance, 6000, 0);
a_Player->AddEntityEffect(cEntityEffect::effFireResistance, 6000, 0);
+ return true;
}
+ a_Player->AddEntityEffect(cEntityEffect::effAbsorption, 2400, 0);
+ a_Player->AddEntityEffect(cEntityEffect::effRegeneration, 100, 1);
+
return true;
}
diff --git a/src/Items/ItemHandler.cpp b/src/Items/ItemHandler.cpp
index 976ab959d..14b25d2b7 100644
--- a/src/Items/ItemHandler.cpp
+++ b/src/Items/ItemHandler.cpp
@@ -822,17 +822,8 @@ bool cItemHandler::GetPlacementBlockTypeMeta(
bool cItemHandler::EatItem(cPlayer * a_Player, cItem * a_Item)
{
- if (!a_Player->IsGameModeCreative())
- {
- a_Player->GetInventory().RemoveOneEquippedItem();
- }
-
- FoodInfo Info = GetFoodInfo(a_Item);
- if ((Info.FoodLevel > 0) || (Info.Saturation > 0.f))
- {
- return a_Player->Feed(Info.FoodLevel, Info.Saturation);
- }
- return false;
+ auto FoodInfo = GetFoodInfo(a_Item);
+ return a_Player->Feed(FoodInfo.FoodLevel, FoodInfo.Saturation);
}