cn.nukkit.entity.passive.EntityFish Maven / Gradle / Ivy
package cn.nukkit.entity.passive;
import cn.nukkit.api.PowerNukkitXOnly;
import cn.nukkit.api.Since;
import cn.nukkit.entity.EntitySwimmable;
import cn.nukkit.entity.ai.behavior.Behavior;
import cn.nukkit.entity.ai.behaviorgroup.BehaviorGroup;
import cn.nukkit.entity.ai.behaviorgroup.IBehaviorGroup;
import cn.nukkit.entity.ai.controller.DiveController;
import cn.nukkit.entity.ai.controller.LookController;
import cn.nukkit.entity.ai.controller.SpaceMoveController;
import cn.nukkit.entity.ai.executor.SpaceRandomRoamExecutor;
import cn.nukkit.entity.ai.route.finder.impl.SimpleSpaceAStarRouteFinder;
import cn.nukkit.entity.ai.route.posevaluator.SwimmingPosEvaluator;
import cn.nukkit.level.format.FullChunk;
import cn.nukkit.nbt.tag.CompoundTag;
import java.util.Set;
/**
* 所有鱼的基类
*/
@PowerNukkitXOnly
@Since("1.19.60-r1")
public abstract class EntityFish extends EntityAnimal implements EntitySwimmable {
public EntityFish(FullChunk chunk, CompoundTag nbt) {
super(chunk, nbt);
}
//移除搁浅音效很不对味
@Override
public IBehaviorGroup requireBehaviorGroup() {
return new BehaviorGroup(
this.tickSpread,
Set.of(),
Set.of(
new Behavior(
new SpaceRandomRoamExecutor(0.36f, 12, 1, 80, false, -1, false, 10),
entity -> true, 1)
),
Set.of(),
Set.of(new SpaceMoveController(), new LookController(true, true), new DiveController()),
new SimpleSpaceAStarRouteFinder(new SwimmingPosEvaluator(), this),
this
);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy