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

36 lines
1.4 KiB
Java

package net.minecraft.world.entity.ai.goal;
import net.minecraft.core.BlockPos;
import net.minecraft.core.SectionPos;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.PathfinderMob;
import net.minecraft.world.entity.ai.behavior.BehaviorUtils;
import net.minecraft.world.entity.ai.util.DefaultRandomPos;
import net.minecraft.world.phys.Vec3;
import org.jetbrains.annotations.Nullable;
public class MoveBackToVillageGoal extends RandomStrollGoal {
private static final int MAX_XZ_DIST = 10;
private static final int MAX_Y_DIST = 7;
public MoveBackToVillageGoal(PathfinderMob mob, double speedModifier, boolean checkNoActionTime) {
super(mob, speedModifier, 10, checkNoActionTime);
}
@Override
public boolean canUse() {
ServerLevel serverLevel = (ServerLevel)this.mob.level();
BlockPos blockPos = this.mob.blockPosition();
return serverLevel.isVillage(blockPos) ? false : super.canUse();
}
@Nullable
@Override
protected Vec3 getPosition() {
ServerLevel serverLevel = (ServerLevel)this.mob.level();
BlockPos blockPos = this.mob.blockPosition();
SectionPos sectionPos = SectionPos.of(blockPos);
SectionPos sectionPos2 = BehaviorUtils.findSectionClosestToVillage(serverLevel, sectionPos, 2);
return sectionPos2 != sectionPos ? DefaultRandomPos.getPosTowards(this.mob, 10, 7, Vec3.atBottomCenterOf(sectionPos2.center()), (float) (Math.PI / 2)) : null;
}
}