minecraft-src/net/minecraft/world/entity/ai/behavior/LookAtTargetSink.java
2025-07-04 01:41:11 +03:00

25 lines
1.1 KiB
Java

package net.minecraft.world.entity.ai.behavior;
import com.google.common.collect.ImmutableMap;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.Mob;
import net.minecraft.world.entity.ai.memory.MemoryModuleType;
import net.minecraft.world.entity.ai.memory.MemoryStatus;
public class LookAtTargetSink extends Behavior<Mob> {
public LookAtTargetSink(int minDuration, int maxDuration) {
super(ImmutableMap.of(MemoryModuleType.LOOK_TARGET, MemoryStatus.VALUE_PRESENT), minDuration, maxDuration);
}
protected boolean canStillUse(ServerLevel level, Mob entity, long gameTime) {
return entity.getBrain().getMemory(MemoryModuleType.LOOK_TARGET).filter(positionTracker -> positionTracker.isVisibleBy(entity)).isPresent();
}
protected void stop(ServerLevel level, Mob entity, long gameTime) {
entity.getBrain().eraseMemory(MemoryModuleType.LOOK_TARGET);
}
protected void tick(ServerLevel level, Mob owner, long gameTime) {
owner.getBrain().getMemory(MemoryModuleType.LOOK_TARGET).ifPresent(positionTracker -> owner.getLookControl().setLookAt(positionTracker.currentPosition()));
}
}