ReadComponent

请继承 DescriptionRead 类注册组件

public DescriptionRead(DescriptionRead.ReadPriority priority, DescriptionRead.AttributeReadType type, Boolean filterColor)

//请继承 DescriptionRead 类注册组件
interface ReadComponent {

    //读取优先级
    val priority: DescriptionRead.ReadPriority
    //读取类型
    val type: DescriptionRead.AttributeReadType
    //是否过滤掉颜色代码
    val filterColor: Boolean

    /**
     * 属性数据读取
     * [key] 读取的标签
     * [lore] 需要读取数据的描述
     *
     * 通过自己的方式将 [key] 的内容读取为属性数据 Array<Number>
     * [lore] 一定包含 [key] 属性标签,所以不需要去 lore.contains(attributeName) 了
     */
    fun read(key: String, lore: String): Array<Number>

    /**
    * 作用与 read(key: String, lore: String) 相同
    */
    fun read(key: String, lore: String, source: AttributeSource): Array<Number>

    /**
     * 条件判断
     * [entity] 实体
     * [lore] 需要读取数据的描述
     *
     * 如果条件不满足,那么将不会执行 read 方法
     */
    fun condition(entity: LivingEntity, lore: String): Boolean

    /**
     * 作用与 condition(entity: LivingEntity, lore: String) 相同
     */
    fun condition(entity: LivingEntity, lore: String, source: AttributeSource): Boolean

    /**
     * 注册组件
     *
     * @AutoRegister 请使用自动注册注释注册
     */
    fun register()

    /**
     * 注销组件
     */
    fun unregister()
}

读取类型

/**
 * VALUE -> 该类型会执行 read 与 condition 方法
 * BOOLEAN -> 该类型只执行 condition 方法
 * RUNTIME -> 该类型与 VALUE 相同,但返回的值不会计入属性
 */
enum class AttributeReadType {
    VALUE, BOOLEAN, RUNTIME
}

读取优先级

/**
 * 优先执行 BEFORE 的读取组件
 * AFTER 所有组件是在 BEFORE 所有组件处理完后才执行
 */
enum class ReadPriority {
    BEFORE, AFTER
}

最后更新于