42 lines
1.1 KiB
Java
42 lines
1.1 KiB
Java
package net.minecraft.world.entity.ai.goal;
|
|
|
|
import net.minecraft.core.BlockPos;
|
|
import net.minecraft.tags.FluidTags;
|
|
import net.minecraft.util.Mth;
|
|
import net.minecraft.world.entity.PathfinderMob;
|
|
|
|
public class TryFindWaterGoal extends Goal {
|
|
private final PathfinderMob mob;
|
|
|
|
public TryFindWaterGoal(PathfinderMob mob) {
|
|
this.mob = mob;
|
|
}
|
|
|
|
@Override
|
|
public boolean canUse() {
|
|
return this.mob.onGround() && !this.mob.level().getFluidState(this.mob.blockPosition()).is(FluidTags.WATER);
|
|
}
|
|
|
|
@Override
|
|
public void start() {
|
|
BlockPos blockPos = null;
|
|
|
|
for (BlockPos blockPos2 : BlockPos.betweenClosed(
|
|
Mth.floor(this.mob.getX() - 2.0),
|
|
Mth.floor(this.mob.getY() - 2.0),
|
|
Mth.floor(this.mob.getZ() - 2.0),
|
|
Mth.floor(this.mob.getX() + 2.0),
|
|
this.mob.getBlockY(),
|
|
Mth.floor(this.mob.getZ() + 2.0)
|
|
)) {
|
|
if (this.mob.level().getFluidState(blockPos2).is(FluidTags.WATER)) {
|
|
blockPos = blockPos2;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (blockPos != null) {
|
|
this.mob.getMoveControl().setWantedPosition(blockPos.getX(), blockPos.getY(), blockPos.getZ(), 1.0);
|
|
}
|
|
}
|
|
}
|