任务HUD对接

任务HUD即将玩家当前任务与任务目标显示在HUD上。因此,需要频繁地(或被动地)获取玩家的任务状态来实现该功能。

一,了解接口

  1. ITaskHudInfoProvider - 任务对接接口。

public interface ITaskHudInfoProvider extends IFunctionProvider {
    /**
     * 获得目标玩家的简要任务信息
     * 注意!为此方法区别与ITaskInfoProvider,该方法会被频繁调用,因此需要简短且快速地获取信息。
     *
     * @param playerUuid 目标玩家的uuid
     * @return 玩家的任务信息表
     **/
    List<IBriefTaskInfo> getBriefTaskInfoOf(UUID playerUuid);
}
  1. IBriefTaskInfo - 简短任务信息接口。

public interface IBriefTaskInfo {
    /**
     * 获得任务名字
     * */
    String getTaskName();

    /***
     * 获得目标信息与状态,其中Key为目标信息,Value为目标状态。
     * 
     * 注意!Key中需包含任务进度信息,例如: 击杀玩家(2/10)
     *      Value中为目标的进度枚举,枚举中包括 NOT_STARTED(未开始)、PROCEED(进行中)、DONE(已完成)。
     * 
     * */
    Map<String, ObjectiveStatusEnum> getObjectiveInfo();
}

二,进行对接

1 创建IBriefTaskInfo

2 接口对接

3 注册接口

主动调用更新

为减少频繁调用更新造成的资源消耗,同时保证更新的实时性,该插件提供了主动调用更新。

示例代码如下

最终效果如下

Last updated

Was this helpful?