forked from Kolyah35/minecraft-pe-0.6.1
Fixed Missing Lighting calls and GL states which was causing stars to render too early Split Controls should hopefully work on phones now Chickens should hopefully lay eggs now
114 lines
2.3 KiB
C++
Executable File
114 lines
2.3 KiB
C++
Executable File
#include "Chicken.h"
|
|
#include "../../item/Item.h"
|
|
#include "../../level/Level.h"
|
|
|
|
Chicken::Chicken( Level* level )
|
|
: super(level),
|
|
sheared(false),
|
|
flap(0),
|
|
oFlap(0),
|
|
flapSpeed(0),
|
|
oFlapSpeed(0),
|
|
flapping(1),
|
|
eggTime(0)
|
|
{
|
|
entityRendererId = ER_CHICKEN_RENDERER;
|
|
|
|
textureName = "mob/chicken.png";
|
|
setSize(0.3f, 0.7f);
|
|
eggTime = random.nextInt(SharedConstants::TicksPerSecond * 60 * 5) + SharedConstants::TicksPerSecond * 60 * 5;
|
|
}
|
|
|
|
int Chicken::getEntityTypeId() const
|
|
{
|
|
return MobTypes::Chicken;
|
|
}
|
|
|
|
|
|
int Chicken::getMaxHealth()
|
|
{
|
|
return 4;
|
|
}
|
|
|
|
void Chicken::aiStep()
|
|
{
|
|
super::aiStep();
|
|
|
|
oFlap = flap;
|
|
oFlapSpeed = flapSpeed;
|
|
|
|
flapSpeed += (onGround ? -1 : 4) * 0.3f;
|
|
if (flapSpeed < 0) flapSpeed = 0;
|
|
if (flapSpeed > 1) flapSpeed = 1;
|
|
|
|
if (!onGround && flapping < 1) flapping = 1;
|
|
flapping *= 0.9f;
|
|
|
|
if (!onGround && yd < 0) {
|
|
yd *= 0.6f;
|
|
}
|
|
|
|
flap += flapping * 2;
|
|
|
|
//@todo
|
|
if (!isBaby()) {
|
|
if (!level->isClientSide && --eggTime <= 0) {
|
|
level->playSound(this, "mob.chickenplop", 1.0f, (random.nextFloat() - random.nextFloat()) * 0.2f + 1.0f);
|
|
spawnAtLocation(Item::egg->id, 1);
|
|
eggTime = random.nextInt(SharedConstants::TicksPerSecond * 60 * 5) + SharedConstants::TicksPerSecond * 60 * 5;
|
|
}
|
|
}
|
|
}
|
|
|
|
void Chicken::addAdditonalSaveData( CompoundTag* tag )
|
|
{
|
|
super::addAdditonalSaveData(tag);
|
|
}
|
|
|
|
void Chicken::readAdditionalSaveData( CompoundTag* tag )
|
|
{
|
|
super::readAdditionalSaveData(tag);
|
|
}
|
|
|
|
void Chicken::causeFallDamage( float distance )
|
|
{
|
|
}
|
|
|
|
const char* Chicken::getAmbientSound()
|
|
{
|
|
return "mob.chicken";
|
|
}
|
|
|
|
std::string Chicken::getHurtSound()
|
|
{
|
|
return "mob.chickenhurt";
|
|
}
|
|
|
|
std::string Chicken::getDeathSound()
|
|
{
|
|
return "mob.chickenhurt";
|
|
}
|
|
|
|
//int Chicken::getDeathLoot()
|
|
//{
|
|
// return Item::feather->id;
|
|
//}
|
|
|
|
void Chicken::dropDeathLoot( /*bool wasKilledByPlayer, int playerBonusLevel*/ )
|
|
{
|
|
//// drop some feathers
|
|
int count = random.nextInt(3);// + random.nextInt(1 + playerBonusLevel);
|
|
for (int i = 0; i < count; i++) {
|
|
spawnAtLocation(Item::feather->id, 1);
|
|
}
|
|
//// and some meat
|
|
if (isOnFire()) spawnAtLocation(Item::chicken_cooked->id, 1); //@fire
|
|
else
|
|
spawnAtLocation(Item::chicken_raw->id, 1);
|
|
}
|
|
|
|
Animal* Chicken::getBreedOffspring( Animal* target )
|
|
{
|
|
return new Chicken(level);
|
|
}
|