the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#include "stdafx.h"
2#include "net.minecraft.world.entity.player.h"
3#include "net.minecraft.world.food.h"
4#include "net.minecraft.world.level.h"
5#include "net.minecraft.world.effect.h"
6#include "net.minecraft.h"
7#include "ItemInstance.h"
8#include "FoodItem.h"
9#include "SoundTypes.h"
10
11// 4J : WESTY : Other award ... eating cooked pork chop.
12#include "net.minecraft.stats.h"
13
14void FoodItem::_init()
15{
16 // 4J Initialisers
17 canAlwaysEat = false;
18 effectId = 0;
19 effectDurationSeconds = 0;
20 effectAmplifier = 0;
21 effectProbability = 0.0f;
22}
23
24FoodItem::FoodItem(int id, int nutrition, float saturationMod, bool isMeat)
25 : Item( id ), nutrition(nutrition), saturationModifier( saturationMod ), m_isMeat( isMeat )
26{
27 _init();
28}
29
30FoodItem::FoodItem(int id, int nutrition, bool isMeat)
31 : Item( id ), nutrition(nutrition), saturationModifier( FoodConstants::FOOD_SATURATION_NORMAL ), m_isMeat( isMeat )
32{
33 _init();
34}
35
36shared_ptr<ItemInstance> FoodItem::useTimeDepleted(shared_ptr<ItemInstance> instance, Level *level, shared_ptr<Player> player)
37{
38 instance->count--;
39 player->getFoodData()->eat(this);
40 // 4J - new sound brought forward from 1.2.3
41 level->playEntitySound(player, eSoundType_RANDOM_BURP, 0.5f, level->random->nextFloat() * 0.1f + 0.9f);
42
43 addEatEffect(instance, level, player);
44
45 return instance;
46}
47
48void FoodItem::addEatEffect(shared_ptr<ItemInstance> instance, Level *level, shared_ptr<Player> player)
49{
50 if (!level->isClientSide && effectId > 0 && level->random->nextFloat() < effectProbability)
51 {
52 player->addEffect(new MobEffectInstance(effectId, effectDurationSeconds * SharedConstants::TICKS_PER_SECOND, effectAmplifier));
53 }
54
55}
56
57int FoodItem::getUseDuration(shared_ptr<ItemInstance> itemInstance)
58{
59 return EAT_DURATION;
60}
61
62UseAnim FoodItem::getUseAnimation(shared_ptr<ItemInstance> itemInstance)
63{
64 return UseAnim_eat;
65}
66
67shared_ptr<ItemInstance> FoodItem::use(shared_ptr<ItemInstance> instance, Level *level, shared_ptr<Player> player)
68{
69 if (player->canEat(canAlwaysEat))
70 {
71 player->startUsingItem(instance, getUseDuration(instance));
72 }
73
74 // 4J : WESTY : Other award ... eating cooked pork chop.
75 // 4J-JEV: This is just for an avatar award on the xbox.
76#ifdef _XBOX
77 if ( instance->getItem() == Item::porkChop_cooked )
78 {
79 player->awardStat(GenericStats::eatPorkChop(),GenericStats::param_eatPorkChop());
80 }
81#endif
82
83 return instance;
84}
85
86float FoodItem::getSaturationModifier()
87{
88 return saturationModifier;
89}
90
91int FoodItem::getNutrition()
92{
93 return nutrition;
94}
95
96bool FoodItem::isMeat()
97{
98 return m_isMeat;
99}
100
101FoodItem *FoodItem::setEatEffect(int id, int durationInSecods, int amplifier, float effectProbability)
102{
103 effectId = id;
104 effectDurationSeconds = durationInSecods;
105 effectAmplifier = amplifier;
106 this->effectProbability = effectProbability;
107 return this;
108}
109
110FoodItem *FoodItem::setCanAlwaysEat()
111{
112 canAlwaysEat = true;
113 return this;
114}
115
116// 4J Added
117bool FoodItem::canEat(shared_ptr<Player> player)
118{
119 return player->canEat(canAlwaysEat);
120}