minecraft-src/net/minecraft/world/entity/ai/sensing/AxolotlAttackablesSensor.java
2025-07-04 03:45:38 +03:00

35 lines
1.3 KiB
Java

package net.minecraft.world.entity.ai.sensing;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.tags.EntityTypeTags;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.ai.memory.MemoryModuleType;
public class AxolotlAttackablesSensor extends NearestVisibleLivingEntitySensor {
public static final float TARGET_DETECTION_DISTANCE = 8.0F;
@Override
protected boolean isMatchingEntity(ServerLevel level, LivingEntity entity, LivingEntity target) {
return this.isClose(entity, target)
&& target.isInWater()
&& (this.isHostileTarget(target) || this.isHuntTarget(entity, target))
&& Sensor.isEntityAttackable(level, entity, target);
}
private boolean isHuntTarget(LivingEntity attacker, LivingEntity target) {
return !attacker.getBrain().hasMemoryValue(MemoryModuleType.HAS_HUNTING_COOLDOWN) && target.getType().is(EntityTypeTags.AXOLOTL_HUNT_TARGETS);
}
private boolean isHostileTarget(LivingEntity target) {
return target.getType().is(EntityTypeTags.AXOLOTL_ALWAYS_HOSTILES);
}
private boolean isClose(LivingEntity attacker, LivingEntity target) {
return target.distanceToSqr(attacker) <= 64.0;
}
@Override
protected MemoryModuleType<LivingEntity> getMemory() {
return MemoryModuleType.NEAREST_ATTACKABLE;
}
}