Skip to content

Navigation

MidCoard edited this page Mar 27, 2020 · 1 revision

使用Navigation

开始

写在前面

原本是想提供一个接口用以自定义Navigation甚至可以更改其寻路算法,但是由于实现太过冗杂,我们便放弃了。 由于时间原因,就仓促诞生了如下的一个Navigation接口使用寻路相关算法。

Navigation

获取Navigation

FocessEntity提供了#getNavigation()方法用以获得Navigation实例。

Navigation navigation = focessEntity.getNavigation();

通过Navigation你可以使用寻路相关算法。

获取世界

使用 #getWorld() 来获取实体所在的世界。

注意,所有有效的寻路都必须在一个世界里面

开始使用

使用 #isIdle() 来获取Navigation是否处于空闲状态,避免同时调用导致得不到预期效果。

找到通往实体的路线

使用#findPathTo(FocessEntity focessEntity) 来获取通往实体的路线。

找到路线

更便捷的,你可以使用#findPathTo(double x,double y,double z)#findPathTo(double x,double y,double z,int distance) 直接通过某一世界的坐标信息来获取通往该坐标的路线。

行动起来

当你找到路线后,你可以使用#startMovingAlong(Path path,double speed) 来让实体走上一条预定的道路。

当然,你还可以直接使用#startMovingTo(final double x, final double y, final double z, final double speed)#startMovingTo(final FocessEntity entity, final double speed) 同时实现寻路与行动。

获取路径

使用#getCurrentPath()来获取本次行动的路线。

中断行动

使用#stop()来中断本次寻路行动。

速度、误差范围修正

使用#getSpeed()#getRangeMulti``plier()来获取速度、误差范围修正。

使用#setSpeed(double speed)#setRangeMultiplier(float rangeMultiplier)来设置速度、误差范围修正。 注意,默认的误差范围修正为float DEFAULT_RANGE_MULTIPLIER = 1.0F

重新计算路径

使用#recalculatePath()重新计算路径。

使用#shouldRecalculatePath()获取是否需要重新计算路径。

获取、更改某些寻路限制

使用#getAvoidsWater()(只适用于1.8)#canOpenDoors()(不适用于1.8)avoidSunlight()#canEnterOpenDoors()#canSwim() 获取相关寻路限制。

使用#setAvoidsWater(boolean avoidsWater)(只适用于1.8)#setCanOpenDoors(final boolean canOpenDoors)(不适用于1.8)#setAvoidSunlight(final boolean avoidSunlight)#setCanEnterOpenDoors(final boolean canEnterOpenDoors)#setCanSwim(final boolean canSwim) 修改相关寻路限制。

开始(Getting Started)

实体处理(Deal with Entity)

Goal操作(Modify Goal)

使用Navigation(Use Navigation)

其他(Other Things)

Clone this wiki locally