4jcraft/Minecraft.World/Entities/Mobs/AgeableMob.h
2026-03-21 16:29:02 -05:00

39 lines
937 B
C++

#pragma once
#include "../PathfinderMob.h"
class AgableMob : public PathfinderMob {
private:
static const int DATA_AGE_ID = 12;
public:
static const int BABY_START_AGE = -20 * 60 * 20;
private:
float registeredBBWidth;
float registeredBBHeight;
public:
AgableMob(Level* level);
virtual bool mobInteract(std::shared_ptr<Player> player);
protected:
virtual void defineSynchedData();
public:
virtual std::shared_ptr<AgableMob> getBreedOffspring(
std::shared_ptr<AgableMob> target) = 0;
virtual int getAge();
virtual void ageUp(int seconds);
virtual void setAge(int age);
virtual void addAdditonalSaveData(CompoundTag* tag);
virtual void readAdditionalSaveData(CompoundTag* tag);
virtual void aiStep();
virtual bool isBaby();
virtual void updateSize(bool isBaby);
protected:
virtual void setSize(float w, float h);
void internalSetSize(float scale);
};