4jcraft/Minecraft.World/Entities/WaterAnimal.cpp
2026-03-21 16:29:02 -05:00

45 lines
1.3 KiB
C++

#include "../Platform/stdafx.h"
#include "../Headers/com.mojang.nbt.h"
#include "../Headers/net.minecraft.world.level.tile.h"
#include "../Headers/net.minecraft.world.phys.h"
#include "../Headers/net.minecraft.world.level.h"
#include "../Headers/net.minecraft.world.damagesource.h"
#include "WaterAnimal.h"
WaterAnimal::WaterAnimal(Level* level) : PathfinderMob(level) {
// 4J Stu - This function call had to be moved here from the Entity ctor to
// ensure that the derived version of the function is called
// This should only be called for the most derive classes
// this->defineSynchedData();
}
bool WaterAnimal::isWaterMob() {
return true; // prevent drowning
}
bool WaterAnimal::canSpawn() { return level->isUnobstructed(bb); }
int WaterAnimal::getAmbientSoundInterval() { return 20 * 6; }
bool WaterAnimal::removeWhenFarAway() { return true; }
int WaterAnimal::getExperienceReward(std::shared_ptr<Player> killedBy) {
return 1 + level->random->nextInt(3);
}
void WaterAnimal::baseTick() {
int airSupply = getAirSupply();
PathfinderMob::baseTick(); // this modified the airsupply
if (isAlive() && !isInWater()) {
setAirSupply(--airSupply);
if (getAirSupply() == -20) {
setAirSupply(0);
hurt(DamageSource::drown, 2);
}
} else {
setAirSupply(TOTAL_AIR_SUPPLY);
}
}