minecraft-src/net/minecraft/world/entity/ai/behavior/Swim.java
2025-07-04 02:00:41 +03:00

33 lines
978 B
Java

package net.minecraft.world.entity.ai.behavior;
import com.google.common.collect.ImmutableMap;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.tags.FluidTags;
import net.minecraft.world.entity.Mob;
public class Swim<T extends Mob> extends Behavior<T> {
private final float chance;
public Swim(float chance) {
super(ImmutableMap.of());
this.chance = chance;
}
public static <T extends Mob> boolean shouldSwim(T mob) {
return mob.isInWater() && mob.getFluidHeight(FluidTags.WATER) > mob.getFluidJumpThreshold() || mob.isInLava();
}
protected boolean checkExtraStartConditions(ServerLevel level, Mob owner) {
return shouldSwim(owner);
}
protected boolean canStillUse(ServerLevel level, Mob entity, long gameTime) {
return this.checkExtraStartConditions(level, entity);
}
protected void tick(ServerLevel level, Mob owner, long gameTime) {
if (owner.getRandom().nextFloat() < this.chance) {
owner.getJumpControl().jump();
}
}
}