42 lines
1.2 KiB
Java
42 lines
1.2 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 p_25964_) {
|
||
|
this.mob = p_25964_;
|
||
|
}
|
||
|
|
||
|
@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 blockpos1 : 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(blockpos1).is(FluidTags.WATER)) {
|
||
|
blockpos = blockpos1;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (blockpos != null) {
|
||
|
this.mob.getMoveControl().setWantedPosition(blockpos.getX(), blockpos.getY(), blockpos.getZ(), 1.0);
|
||
|
}
|
||
|
}
|
||
|
}
|