# 更新记录

## 3.3.2.8 \~ 3.3.3.0 - 2024/11/12

可能有部分小变动未记录，但最主要的新增、修复、优化记录都在下方

* **修复** **伤害反弹类** 属性可能会导致双方相互无限反弹的情况
* **修复 移速加成** 属性因负值属性导致报错问题
* **优化** 玩家物品描述属性标签读取处理，优化相关处理
* **优化 AttributeManager** 属性管理器中各类型属性的管理集合
* **新增** **AttributeAPI** 实体攻击方法
  * `attackTo(entity, attacker, damage)` 造成固定伤害方法：
  * 该方法 `entity.damage(damage)` 相比，该方法直接击杀目标击杀者会为 **\[attacker]**
  * 建议各类真伤处理调用该方法，该方法造成的时候不会触发二次属性处理
* &#x20;**新增** **实体单体冷却中控器(针对非玩家实体)** 实体死亡时将自动清除相关的冷却数据
  * 在 `AttrScriptUtils.kt` 类中新增相关调用方法，可在属性脚本中调用
  * `Utils.hasEntityCooling(name, entity) 目标是否冷却中`
  * `Utils.hasEntityCooling(name, entity, time) 目标是否冷却中,未冷却则进入冷却`
  * `Utils.resetEntityCooling(name, entity) 重置目标冷却`
* **新增 CUSTOM** 自定义触发器属性类型
  * 支持通过自定义 **JavaScript** 属性脚本编写该类型，脚本配置编写下面方法即可：
  * `function runCustom(attr, caster, target, params, source, handle)`
  * `caster 触发者`
  * `target 触发目标(可为空)`
  * `params 触发器事件传入的参数`
  * `source 触发器此次事件对象`<br>
  * 新版自带 **3** 种触发器，需要 **SkillAPI** 插件支持：
  * `SKILL CAST(技能释放)`&#x20;
  * `SKILL DAMAGE ENTITY(技能攻击非玩家实体)`&#x20;
  * `SKILL DAMAGE PLAYER(技能攻击玩家实体)`<br>
  * <mark style="background-color:red;">**注意**</mark> 该类型属性需在 `onLoad()` 方法内调用 `setCustomTrigger(name: String)` 方法
  * 设置该属性脚本的触发器名称，例如 `setCustomTrigger("SKILL CAST")`
  * JavaScript 用法示例：[**传送门**](https://ersha.gitbook.io/attributeplus-pro/shu-xing-jiao-ben/shou-ba-shou-jiao-ni-xie-shu-xing-jiao-ben/update-lei-xing-1)<br>
* **新增 CUSTOM** 自定义触发器注册
  * 附属开发者可通过 `CustomTriggerComponent` 类，自定义注册更多不同的触发器
  * 下面附带 `SKILL CAST` 属性触发器代码示例
  * ```kotlin
    interface CustomTriggerComponent<E: Event> {

        //触发器名称
        val name: String
        
        //触发器事件
        val event: Class<E>
        
        //触发器事件优先级
        val priority: EventPriority
        
        //触发器事件是否忽略取消
        val ignoreCancelled: Boolean

        /**
         * 触发器触发条件,条件不满足时将不触发处理
         * [event] 触发器此次事件
         */
        fun condition(event: E): Boolean {
            return true
        }

        /**
         * 触发者对象传入
         * [event] 触发器此次事件
         */
        fun caster(event: E): LivingEntity

        /**
         * 目标对象传入
         * [event] 触发器此次事件
         */
        fun target(event: E): LivingEntity? {
            return null
        }

        /**
         * 触发事件相关参数传入，可在 runCustom 属性处理方法获取
         * [event] 触发器此次事件
         */
        fun params(event: E): Array<Any> {
            return emptyArray()
        }

        /* 注册触发器 */
        fun register() {
            attributeManager.registerTrigger(this)
        }
        
    }
    ```
  * ```kotlin
    class SkillCastAttributeTrigger : CustomTriggerComponent<PlayerCastSkillEvent> {

        override val name: String = "SKILL CAST"

        override val event: Class<PlayerCastSkillEvent> = PlayerCastSkillEvent::class.java

        override val priority: EventPriority = EventPriority.NORMAL

        override val ignoreCancelled: Boolean = false

        override fun caster(event: PlayerCastSkillEvent): LivingEntity {
            return event.player
        }

        override fun params(event: PlayerCastSkillEvent): Array<Any> {
            val skillName = event.skill.data.name
            return arrayOf(skillName)
        }

    }
    ```

## 3.3.2.7 - 2024/08/29

可能有部分小变动未记录，但最主要的新增、修复、优化记录都在下方

* **新增 AttrAttributeSourceAddEvent** 玩家属性源新增事件
* **新增 AttrAttributeSourceRemoveEvent** 玩家属性源移除事件
* **新增** **%apcentral\_base\_\<min/max>%** 变量
  * 获取某个属性值白值 (该数值不包含百分比加成属性源所加成的属性值)
* **新增** **KILLER** 属性处理类型，击杀目标时触发相关处理
  * 支持通过自定义 **JavaScript** 属性脚本编写该类型，脚本配置编写下面方法即可：
  * function runKiller(attr, killer, entity, handle)
  * JavaScript 用法示例：[**传送门**](https://ersha.gitbook.io/attributeplus-pro/kai-fa-wen-dang/api-1#javascript-zhong-shi-yong-ji-shu-qi-shi-li)
* **新增** 属性自定义计数器工具
  * 可用于在属性处理中对某些数据进行计数
  * **AttributeData.getCounter()** 获取 **counter** 主控对象
  * 相关方法：[**传送门**](https://ersha.gitbook.io/attributeplus-pro/kai-fa-wen-dang/api-1)
  * **counter**.getCounter(name, type)
  * **counter**.getCounter(name, type).resetValue()
  * **counter**.getCounter(name, type).getValue(def)
  * **counter**.getCounter(name, type).setValue(value)
  * **counter**.getCounter(name, type).updateValue(value, def)
  * **counter**.getCounter(name, type).getContent(def)
  * **counter**.getCounter(name, type).updateContent(text)
* **修复** 清除属性源时，属性源内的生命属性值扣除不会实时作用到玩家生命值上的问题

## 3.3.2.0 - 2023/12/10

可能有部分小变动未记录，但最主要的新增、修复、优化记录都在下方

* **新增** 对最新服务器版本兼容

* **新增** 玩家属性异步更新队列

* **新增** **MythicMobs** 怪物属性加载器，计算公式运算功能
  * 即怪物生成时自动根据怪物等级自适应属性列表中的计算公式
  * 更新记录尾部附件：**图1**

* **新增** **MythicMobs** **onSignal** 技能触发器信号
  * 格式为 `~onSignal:AttributePlus` 当玩家对实体造成伤害时触发
  * 配合 `attributes.yml` 中 `mythic-signal` 配置项，可在技能处理通过占位符获取属性触发值
  * 更新记录尾部附件：**图2**

* **新增 PersistentCommand** 持久化属性源命令 `save` 参数

  * 当该参数传入为 `false` 时，此次增加的数据将不储存至数据 (即重启/退出服务器后消失)
  * 新增 **AttributeAPI** 方法 `addPersistentSourceAttribute` 新增 `save` 参数

* **优化** 移除 **JavaScript** 公式计算，采用全新公式计算处理器

* **优化** 属性处理效率 (**Plugin、属性脚本**)，降低消耗一定程度提高处理效率

* **新增 AttrEntityDamageEvent** 事件 (该事件可获取变动此次攻击处理最总伤害值)

* **新增** 属性注册类、脚本属性各项方法新增 `handle(AttributeHandle)` 对象参数
  * 该项调整将影响到此版本前通过 **插件、自定义属性脚本** 所注册的属性失效，需进行修改
  * 该版本起，你可以通过 **handle** 对象参数调用所有 **AttributeHandle** 对象内的方法
  * **各类型主逻辑处理构造方法：**
  * run(attr, entity) -> run(attr, entity, **handle**)
  * runAttack(attr, attacker, entity) -> runAttack(attr, attacker, entity, **handle**)
  * runDefense(attr, entity, killer) -> runDefense(attr, entity, killer, **handle**)
  * **attr 对象 90% 方法调用最尾参数加上 handle 参数，例如：**
  * attr.getDamage(attacker) -> attr.getDamage(attacker, **handle**)
  * attr.getRandomValue(attacker, "属性名") -> attr.getRandomValue(attacker, "属性名", **handle**)<br>

* **新增** 实体上一次攻击、被攻击时的时间戳记录，可通过实体 **AttributeData** 对象进行调用
  * data.getLastAttack() 上次攻击时的时间戳
  * data.getLastDefense() 上次被攻击时的时间戳
  * data.getCurrentTime() 当前时间戳 (current - time / 1000 = 间隔时间)<br>

* **新增** **AttributeCalculatorSource** 自动运算属性源工具类
  * packet: org.serverct.ersha.attribute.data.AttributeCalculatorSource&#x20;
  * 可根据传入的占位符参数数据自动运算列表内属性公式，并生成 **AttributeSource** 对象
  * 更新记录尾部附件：**图3**<br>

* **修复** 3.3.1.2 版本可能出现的登录假死问题

* **修复** 可能被挂端利用异常发包导致线程数溢出问题

* **修复** **添加/清除** 玩家属性源时 **属性加成值(百分比格式)** 不更新问题
  * 该版本起，增加玩家身上存在加成值的属性时将触发属性加成更新
  * 在某种特殊的情况下，可能造成玩家属性值异常的情况 (异常调用API可能造成)

<figure><img src="https://1999935025-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MSI3dcJ6z5A8zyVhqo9%2Fuploads%2FJu1X9QiwCsAqkwcZQjiA%2Fimage.png?alt=media&#x26;token=9d3eb97d-8c83-4e47-a9ba-708f9f4940be" alt="" width="563"><figcaption><p>图1</p></figcaption></figure>

<figure><img src="https://1999935025-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MSI3dcJ6z5A8zyVhqo9%2Fuploads%2FVqKWRbhpueHLNgPVfYmT%2Fimage.png?alt=media&#x26;token=0cda0e17-385b-4384-ad42-686fd93fd8ef" alt="" width="563"><figcaption><p>图2 (attributes.yml)</p></figcaption></figure>

<div align="center" data-full-width="false"><figure><img src="https://1999935025-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MSI3dcJ6z5A8zyVhqo9%2Fuploads%2FLSlNYipMrzBPk3BgZU5w%2F%E5%9B%BE%E7%89%87.png?alt=media&#x26;token=8f86cec5-a086-4fee-a46a-47c4920441b7" alt="" width="563"><figcaption><p>图3</p></figcaption></figure></div>

## 3.3.1.2 - 2023/06/23

* **新增** 对 **1.20** 服务器版本兼容
* **新增** 吸血属性触发时是否额外造成吸血伤害 (`attribute.yml` -> `options.vampireDamage`)
* **重写** 玩家登陆初始化属性逻辑，玩家属性初始化完成时将触发 **AttrPlayerInitializeEvent** 事件
* **重写** 生命力机制处理方式，可兼容其他插件、模组所增加的生命值
* **修复** 部分服务器可能会出现生命力突然被重置的问题、生命小概率乱跳问题

## 3.3.1.0 \~ 3.3.1.1 - 2023/04/24

* **新增** 对 1.19.4 服务器版本兼容
* **修复** 全息显示不自动清除问题
* **修复** 属性脚本可能触发死锁问题 (极小概率)
* **调整** 属性脚本编写格式 **(3.3.1.1)**
  * 不再使用 **Attr** 占位符作为属性对象，改用方法内参数，旧版配置均需要修改
  * onLoad() -> onLoad(**attr/Attr**)
  * run(entity) -> run(**attr/Attr**, entity)
  * runAttack(attacker, entity) -> runAttack(**attr/Attr**, attacker, entity)&#x20;
  * runDefense(entity, killer) -> runDefense(**attr/Attr**, entity, killer)
  * 上面的参数名你可以写为 **Attr** 那样子你就无需修改方法内代码逻辑

**旧版脚本内容 -> 新版脚本内容**

<figure><img src="https://1999935025-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MSI3dcJ6z5A8zyVhqo9%2Fuploads%2FV6UJyqWtFT0chorEiQQ1%2F%E6%97%A7.png?alt=media&#x26;token=8e51d49e-1023-4c0c-948a-ff644a6dd2fc" alt=""><figcaption><p>旧版本格式</p></figcaption></figure>

<figure><img src="https://1999935025-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MSI3dcJ6z5A8zyVhqo9%2Fuploads%2FbrGiycSKBnhiG9GM7s4G%2F%E6%96%B0.png?alt=media&#x26;token=92e8bb64-e6a2-4a7c-ae8c-45c91a8bd793" alt=""><figcaption><p>新版本格式</p></figcaption></figure>

## 3.3.0.9 - 2023-02-25

* **新增** 玩家属性变量数据缓存功能
  * 防止 **3.3.0.8** 版本的 `自定义条件规则标签` 功能在玩家首次登录服务器
  * 时，无法正常获取到玩家属性变量值，导致标签判断不通过
* **新增** 玩家数据包异常检测功能
  * 该版本在接收到大量异常操作时会将玩家踢出服务器
  * 防止玩家利用作弊客户端发送大量异常数据包 (切换、关闭界面)
  * 旧版本用户可将服务器核心更新至 **Paper** 核心，或使用新版插件<br>
* **修复** 属性范围值格式带空格时不读取问题,例如 **"XXX - XXX"** (正则毛病)
* **修复** 属性值加成数值异常，使用 **(%)** 百分比加成格式时 *(3.3.0.8.1)*
* **修复** 属性变量在某种情况下无法读取问题 (包括战斗力变量异常问题) *(3.3.0.8.2)*
* **优化** 实时同步类与加成类属性的处理任务 *(3.3.0.8.1)*

## 3.3.0.8 - 2023-02-16

* **修复** 某种情况下出现的玩家血量蹦迪问题
* **修复** 旧版本使用 **(%)百分比属性加成** 时加成功能失效问题
* **修复** 职业条件规则标签配置无法修改问题
* **修复** 自定义读取格式内 **@value** 正则处理问题
  * 该问题导致当标签属性值 **< 10** 时无法正常读取<br>
* **新增** 持久化属性源(属性数据)功能
  * 该功能可以将玩家每个属性源转存持久化并可设置 **失效时间或永久**
  * 该功能提供相关命令，储存方式为本地储存、数据库储存
  * 命令 `ap persistent [player] [source] [attributes] [time]`<br>
* **新增** 开发者玩家属性操作方法 (持久化属性源)
  * `AttributeAPI.addPersistentSourceAttribute(data,source,attributes,time)`
  * 为指定 **AttributeData** 玩家属性数据增加一个持久化属性源数据
  * `AttributeAPI.takePersistentSourceAttribute(data,source)`
  * 为指定 AttributeData 玩家属性数据清除一个持久化属性源数据<br>
* **新增** 自定义条件规则标签
  * 该功能支持 **Kether** 语法判断，自定义标签、读取格式
  * 让普通用户也能通过配置自定义新的规则标签，不再需要写附属
  * 如 **"战力要求"、**~~**"氪金要求"**~~**、"XXXXX"** 等条件规则标签
  * 更多详细内容，请查看相关页面 [自定义条件标签](https://ersha.gitbook.io/attributeplus-pro/du-qu-xiang-guan/zi-ding-yi-tiao-jian-biao-qian)

```yaml
custom-condition-component:
  example:
    #添加至物品的标签
    key: "战力要求"
    #读取格式
    formats:
      - "{key}.*?@value"
    #{value_0-N} 代表获取到的值(未处理过的数据)
    #{value_min_0-N} 表示获取到的最小值
    #{value_max_0-N} 表示获取到的最大值,如果非范围值格式则返回 none
    #{..._0-N} 0-N 每个对应上方 formats 配置的 @value 或者 (.*?)
    conditions:
      - check '%ap_combatPower%' >= {value_min_0}
      - any [ check '{value_max_0}' == 'none' check '%ap_combatPower%' <= {value_max_0} ]
    #不满足时的提示
    message: "&f你不满足 &6{item_name} &f物品的使用战力要求"

#该例子可在物品上添加 "战斗力: 100" 当玩家战斗力大于等于100时可使用该物品
#同时该例子也支持 "战斗力: 100-1000" 范围限制,当玩家战斗力在范围内是可使用该物品
```

## 3.3.0.7 - 2023-02-13

* **兼容 1.19.3** 服务器版本核心 (修复可能出现的异常)
* **新增** 世界切换时属性玩家属性
* **新增** 更好的属性读取逻辑及处理
  * 新版可以更快速高效的读取物品上的属性数据
  * 保留旧版本读取逻辑及处理方式 (配置置设有开关项,默认使用新版)
  * **format.yml** -> **original-logic-format**
* **新增** 自定义属性读取格式 (正则匹配)
  * 该版本起支持用户通过正则自定义不同的读取格式
  * 默认已配置的格式有，容错极高
  * `属性标签 属性值 (属性值)` 即 `物理伤害: 10-100 (+10)`
  * `属性标签 属性值` 即 物理伤害: 10-100
  * `属性值 属性标签` 即 +100-1000 物理`伤害`
  * 详细内容请查看 [新版读取格式相关](https://ersha.gitbook.io/attributeplus-pro/du-qu-xiang-guan/xin-du-qu-ge-shi-xiang-guan-3.3.0.7) 页面
* **新增** 自定义规则标签读取格式 (正则匹配)
* **新增&优化** **`装备职业/装备类型`** 标签支持多类型限制
  * `装备职业: 剑士/法师` 玩家是否拥有任意一个职业权限
  * `装备类型: 主手/副手` 可穿戴在主手或副手
* **新增&优化 `装备等级`** 标签处理方式
  * 自定义装备等级的 **等级数据** 来源，通过变量 (**attribute.yml -> level-placeholder**)
  * 规则标签支持范围值限制，如 `装备等级: 10-100` 限制10至100级内玩家可用<br>
* **优化** 游戏时触发玩家属性更新的处理
* **修复** MythicMobs 4.X 物品配置 **NBT属性读取功能** 不兼容问题

## 3.3.0.6 - 2023-02-04

* **新增** 自定义 **NBT** 列表属性加载功能
  * 兼容所有通过 **API** 传入的物品数据 **NBT** 标签属性加载
  * 支持自定义多 **NBT** 标签读取
* **新增** `AttributeComponent` 临时属性操作方法
  * `takeAttribute(Target, String, Double)` 扣除指定属性值
  * `addAttribute(Target, String, Double)` 新增指定属性值
  * `cancelAttribute(Target, String)` 取消某个属性此次触发
  * 注意对某个属性值、触发状态操作，你必须确保 **该属性在被操作属性之前** 触发
  * 否则此次修改将没有任何意义，这些操作仅在此次属性触发事件中存在
* **修复** `AttributeAPI.takeSourceAttribute` 减少生命力属性时不实时更新问题

## 3.3.0.5 - 2023-02-01

* **新增** 生命同步功能 (本地/数据库储存)
* **修复** 部分服务器存在的 **满血退出、残血登录** 问题

## 3.3.0.4 - 2023-01-29

* **修复** **RUNTIME / UPDATE** 类型属性处理异常
* **修复** 因异步导致的 **JavaScript** 自定义属性触发异常问题

## 3.3.0.3 - 2023-01-?

### 用户

* **修复** **AttributeAPI.addSourceAttribute** 增加生命力属性不实时生效问题

## 3.3.0.2 - 2023-01-09

### 用户

* **新增** 属性脚本编写异常分析功能
* **优化** 玩家属性更新异步操作相关内容
* **优化** 玩家 `加成类(%)` 属性值更新操作相关内容
  * 即使用 (%) 百分比加成格式的属性值
  * 可使用 `ap source 玩家名` 命令查看加成的属性值列表
  * 该版本起 `percentage-attribute(system)` 属性源用于储存加成值
* **优化** 玩家属性源查看分别显示 `固定值/加成值`
  * 让玩家属性来源更加清晰 (`ap source 玩家名`)
* **兼容** `LibsDisguises` 伪装插件 (兼容伪装玩家类实体)
* **修复** 同步触发 `UPDATE` 类型属性时可能出现的异常问题

### 开发者

* 该版本起通过 `AttributeAPI` 为玩家新增属性时不再自动触发 `玩家属性更新` 方法及事件
  * 如果需要触发一次所有 `UPDATE` 类属性，请调用 `AttributeAPI#updateAttribute` 方法
  * 此次更新调整 **不会对已开发的附属** 造成影响
* 改为同步触发 `syncUpdate` 状态为 `true` 的 `UPDATE` 类型属性，即不再触发所有 `UPDATE` 类属性
  * `syncUpdate` 状态需在注册属性时使用 `setSyncUpdateState` 方法修改，默认为 `false`&#x20;
  * 插件自带属性 `syncUpdate` 默认状态为 `true` 的有 `生命力、移速加成` 属性

{% hint style="info" %}
**什么情况下需要将 `syncUpdate` 状态设为 `true` 呢**

需要实时更新效果到玩家身上的属性，例如 `生命力、移速加成` 属性这一类
{% endhint %}

## 3.3.0.1 - 2023-01-07

### 用户

配置更新内容请查看 [attribute.yml](https://ersha.gitbook.io/attributeplus-pro/cha-jian-pei-zhi/pei-zhi/attribute.yml)

* **兼容** 对 `1.8` 版本的服务器进行兼容
  * 因低版本不存在某些条件将导致 **蓄力、盾牌、等机制** 无法使用
* **兼容** 对 `SkillAPI、Magic` 技能插件再次兼容
  * **新增** 技能伤害触发 `攻击类、防御类` 属性处理开关配置项
  * **新增** 技能伤害触发属性处理黑名单配置项 (在列表内的属性名不触发)
  * attribute.yml (`skill-options`)
* **新增** 限制配置内世界加载属性 (在列表内的世界不启动属性功能)
  * attribute.yml (`limit-attribute-worlds`)
* **新增** 限制属性加载包含配置内描述的物品属性
  * attribute.yml (`limit-attribute-descriptions`)

## 3.3.0.0 - 2023-01-04

### 用户

* **新增** `§<` 及 `§>` 过滤符用于获取描述行过滤符左边、右边的文字
* **新增** `SubAttribute` 获取此次攻击强度值方法 (注册属性时可调用)
  * 方法名 `getDamageIntensity()`
* **新增** `SkillExtensionAPI` 扩展类 (SkillAPI)
  * 内置 `setMaxMana(PlayerData, Double)` 方法 (设置玩家职业最大魔法值)
  * ~~为什么写，因为傻逼 SkillAPI 没有这个方法，妨碍我写魔法值、魔法恢复属性~~
* **新增** `SkillAPI` 扩展属性脚本配置
  * `魔法值` 额外提高玩家魔法值上限
  * `魔法恢复` 恢复玩家魔法值
  * 有需要的用户可前往 MCBBS 帖子下载扩展
* **修复** 变量出现多位小数点问题 (战斗力变量)

## 3.2.9.9 - 2022-12-17

### 用户

* **修复** 实体非死亡情况下被清除造成的内存泄露
  * 修复属性数据 **内存泄露** 问题，在实体非死亡而被清除的情况下会出现该问题
  * 例如一些服务器的 **技能的盔甲架** (释放技能时会生成盔甲架过后清除)

## 3.2.9.8 - 2022-12-17

### 用户

* **优化兼容**
  * 对 **Purpur** 核心 及 **高版本** 服务器优化兼容并对 JavaScript 部分优化处理&#x20;
  * 从该版本起高版本服务器无需额外安装 **MomoJs** 或 **MiaoNashorn** 插件

## 3.2.9.6 - 2022-09-25

### 用户

* **修复** MythicMobs 怪物属性加载异常问题
  * 服务器插件数量达到一定时将可能出现该问题 (有人在 **65** 个插件是出现该问题)
  * 可能导致 AttributePlus 插件在 MythicMobs 插件之前加载才会这样 **(玄学问题)**

## 3.2.9.5 - 2022-08-16

### 用户

* **修复** OTHER 类型属性最大生效值限制失效的问题
* **修复** OTHER 类型属性无法修改战斗力的问题
* **修复** 部分属性标签因相关标签名后失效问题 (受影响的相关属性如下)
  * 经验加成、蓄力加成、蓄力干扰
  * 箭矢速度、箭术精准、箭矢穿透
  * 破盾几率、盾牌格挡、召唤强度
* **调整** 真实伤害处理方式改为直接扣除生命力 (防止受到原版护甲值的影响)

3.2.9.4

* **新增** 攻击系数/防御系数配置项
* **修复** 生命力属性可能报错的问题

3.2.9.3

* **修复** 冰冻属性失效问题
* **修复** 盾牌机制 (盾牌格挡属性生效问题)
* **兼容 MythicMobs 5.X** 版本兼容
* **兼容** 从版本 **3.2.9.3** 起 1.18+ 服务器版本安装 MiaoNashorn 或 MomoJs 插件即可使用 自定义属性脚本、自定义公式 功能

3.2.9.2

* **新增** 新的脚本冷却机制(保留原先属性冷却功能)
  * Utils.hasCooling(String, Entity, Double)
  * 判断是否在冷却,如果不在冷却将立即冷却并返回 true 否则返回 false
  * Utils.resetCooling(String, Entity)
  * 刷新重置冷却

## 3.2.9.1 - 2022-05-24

### 用户

* **新增** 属性生效值限制功能 (超过限制部分的属性值将无效化) **(attribute.yml)**
* **修复 3.X** 版本以来存在的BUG (可能造成较高消耗 我的锅)
* **修复 MythicMobs** 怪物生命力也被生命力属性影响问题 (导致怪物锁血)

<div align="left"><img src="https://1999935025-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MSI3dcJ6z5A8zyVhqo9%2Fuploads%2FjSax3BZyo5E3gwhCns50%2FQY(~JP0%24%60S8CVU56%5D%7B7%5DS%60X.png?alt=media&#x26;token=542fefc4-f367-4513-8702-52bdde02a1cc" alt=""></div>

## 3.2.3\~3.2.8 - 2022-02-19

### 用户

* **更新** 3.2.3 \~ 3.2.7 更新内容丢失\
  \
  3.2.8
* **修复** CMI 插件前置可能造成 MythicMobs 怪物属性失效问题
* **修复** 将遗漏的插件依赖补全
* **新增** 更新玩家属性命令 (AP UPDATE 玩家)
* **新增** 查看玩家属性来源列表命令 (AP SOURCE 玩家)

## 3.2.2 - 2021-11-23

### 用户

* **兼容** Taboolib 6.0
* **兼容** Minecraft 1.17+ 版本 (不出意外的话 1.18 也没问题)

### 开发者

* 修复 通过 **API** 为玩家添加生命力属性后 **生命力** 不更新问题

{% hint style="info" %}
这么久没更新 **AttributePlus** 是因为新生儿 **DungeonPlus** 需要养,所以才那么久没更新    **AttributePlus**
{% endhint %}

## 3.2.1 - 2021-07-13

### 用户

* 新增 属性全息功能 (**Hologram**)\
  &#x20;        前置 **HolographicDisplays**<br>
* 修复 插件重载后 **JavaScript** 脚本属性不加载问题
* 修复 物品攻击检测(**attackDetection**) 提示异常问题

## 3.2.0 - 2021-07-09

### 用户

* **修复** 在调用 **API** 增加属性时可能出现卡属性的问题 (玩家所有属性都不刷新)
* **修复 PVP PVE防御** 属性在身上没有 **物理防御** 属性时失效问题
* **调整** 插件重载命令从该版本开始不会再清掉怪物身上已存在的属性<br>
* 新的插件 **DungeonPlus** 已正式发布至 **MCBBS** 欢迎下载使用

## 3.1.9 - 2021-05-16

### 用户

* 修复 部分小问题
* 更新 内嵌式条件读取格式 [说明](https://ersha.gitbook.io/attributeplus-pro/shu-xing-xiang-guan/du-qu-xiang-guan/shu-xing-du-qu-tiao-jian)\
  &#x20;        从现在开始内嵌式条件格式为 **"<属性内容> / <条件>"**\
  &#x20;        即 **"物理伤害: 100 / Lv.100"** 满足条件才会读取该行描述上的 100 物理伤害\
  &#x20;        旧版本的 **\[Lv.] \[Gm.]** 考虑到部分服务器已在所以将会保留不会移除<br>
* 预告 **DungeonPlus** 地牢插件进度 ≈ 70% (不出意外六月中旬发布)

### 开发者

* 新增[ EmbeddedCondition](https://ersha.gitbook.io/attributeplus-pro/kai-fa-wen-dang/descriptionlinecondition) 内嵌读取条件组件
* 说明 该版本修改了 **DescriptionRead** 组件内的 **condition** 方法参数,**可能会对你的插件造成影响请自行兼容更新**

## 3.1.8 - 2021-05-03

### 用户 & 开发者

* 修复 自定义提示消息内 **{属性变量}** 有时显示为 **0** 的问题
* 修复 自定义公式的触发数据储存问题 (就是导致上面显示 **0** 的问题)\
  &#x20;        该问题影响调用了 **getFormulaValue** 自定义公式方法的属性 (JS/JAVA/KOTLIN)
* 修复 自定义公式内 **{entity:属性名}** 可能出现的报错问题

## 3.1.7 - 2021-04-23

### 用户

* 修复 **defaultArmor** 设为 **true** 后护甲值还是被清除问题
* 修复 **怪物属性** 无法刷新问题 (我的锅)

## 3.1.6 - 2021-04-17

### 用户

* 修复 可能攻击时可能出现的未初始化报错问题
* 修复 **装备等级** 标签加 1.0 小数点时会报错问题\ <br>
* 预告 **DungeonPlus** 地牢插件将于放暑假前发布,目前进度≈ **50%**\
  **AttributePlus** 基本稳定,如果没有严重问题将停更几个星期,因为要加快 **DungeonPlus** 的进度\
  基本上 AttributePlus 的新功能都可以通过 API 进行开发附属,所以也没什么需要我更新的了<br>

## 3.1.5 - 2021-04-03

### 用户

* 新增 原版护甲清除开关

  > 以上配置会在 attribute.yml 配置自动生成 defaultArmor 配置项\
  > 原版护甲为百分比抵消伤害，会影响插件伤害的准确性，默认清除(**false**)
* 修复 1.16.5+ 版本玩家退出重新登录属性无法刷新并失效问题 (知道吗，就很玄
* 修复 高版本RGB颜色代码导致属性值读取异常问题

## 3.1.4 - 2021-03-20

### 用户

* 新增 装备等级限制新增对SKILLAPI职业等级的兼容

  > 以上配置会在 attribute.yml 配置自动生成 skillLevel 配置项,默认 **false**
* 修复 多个条件判断 **组件** 造成的冲突问题&#x20;
* 修复 重载插件无法修改战斗力配置问题
* 调整 玩家退出服务器时 **不再触发属性更新等事件** (触不触发都那样)
* 调整 可以通过 **"ap.权限名"/"权限名"** 方式通过职业限制判断

## 3.1.3 - 2021-03-13

### 用户

* 新增 禁止物品远程攻击功能 (物品攻击检测功能)
* 新增 禁止物品左键攻击功能 (物品攻击检测功能)

  > 以上配置会在 attribute.yml 配置自动生成对应配置项
* 修复 装备等级无法以 **"装备等级 10 级"** 格式生效&#x20;
* 修复 SkillAPI 技能伤害 **兼容失效** 问题&#x20;
* 修复 修复 **"§|"** 过滤符无法对装备等级等规则标签失效&#x20;
* 修复 重载属性后导致 **PlaceholderAPI** **变量失效** 问题

## 3.1.2 - 2021-03-08

### 用户

* 新增 新增几个 **脚本API** 方法
* 调整 配置注释与实际效果不符问题
* 修复 修复一个小问题

## 3.1.1 - 2021-03-07

### 用户

* 修复 **CatServer、Mohist** 属性脚本无法自定义脚本工具问题
* 修复 使用 **API** 增加的属性 **无法触发规则标签(装备等级等...)限制问题**
* 调整 从该版本起新增配置 **无需自己在配置内添加配置节点** 将自动生成
* 新增 过滤符号 **&-、&-&0** 等,具体作用请前往WIKI查看 [**过滤符相关**](https://ersha.gitbook.io/attributeplus-pro/shu-xing-xiang-guan/du-qu-xiang-guan/guo-lv-fu-xiang-guan)

### 开发者

* 修复 读取组件无法卸载问题
* 调整 读取组件的类型处理顺序

## 3.1.0 - 2021-02-22

### 用户

* 兼容 **JAVA**版本 **9** 以上版本<br>
* 新增 默认 **清除** 实体原版护甲
* 新增 AttributeSource#**merge** 属性源合并方法
* 修复 修复一些显示上的小问题（

## 3.0.9 - 2021-02-13

### 用户

* 新增 [自定义属性](https://ersha.gitbook.io/attributeplus-pro/shu-xing-jiao-ben) (通过 JavaScript 脚本编写)\
  &#x20;        可自定义调用其他插件的类方法,详细请查看 [script.yml](https://ersha.gitbook.io/attributeplus-pro/cha-jian-pei-zhi/pei-zhi/script.yml) 配置
* 新增 [script.yml](https://ersha.gitbook.io/attributeplus-pro/cha-jian-pei-zhi/pei-zhi/script.yml) 脚本配置
* 修复 修复末影球会对自己造成属性伤害的问题

## 3.0.8 - 2021-02-10

### 用户

* 修复 修复装备类型 裤子 跟 鞋子顺序相反的问题
* 修复 修复非 **Kotlin** 编写的附属使用 **@AutoRegister** 注释无效问题 (感谢鹦鹉~~小老婆~~)

## 3.0.7 - 2021-02-09

### 用户

* 调整 修改属性默认读取方式
* 修复 修复 **无法读取负数属性值** 的问题
* 修复 **Mohist** 核心无法使用自定义公式问题
* 新增 配置 **attribute.yml** 新增 **healthScale** 开关,关闭后将不会将生命爱心显示压缩为两排

## 3.0.6 - 2021-02-06

### 用户

* 调整 将 **stats.yml** 内默认物品类型调整为 **1.12及以下版本** 可使用的类型 (太多人不看WIKI就来反馈)
* 其他 防止生命爱心数量(**healthScale**)被其他插件修改后导致一大堆爱心刷屏 (例如 **SkillAPI**)

## 3.0.5 - 2021-02-05

### 用户

* 新增 新增插件更新提醒功能
* 兼容 **2.X** 调用 **AttributeAPI.class** 内方法给玩家增加属性的附属\
  &#x20;        旧版本注册新属性的附属无法兼容,需重新开发

## 3.0.4 - 2021-02-04

### 用户

* 修复 攻击处理事件,攻击者实体可能出现的 "ClassCastException" 问题 (不小心的)

## 3.0.3 - 2021-02-03

### 用户

* 修复 原版伤害值不显示问题

## 3.0.2 - 2021-02-02

### 用户

* 修复 1.16.5 读取事件报错问题
* 修复 1.13.X+ GUI模式下的属性统计面板无法使用问题
* 注意 目前 **1.16.5** 属性统计面板无法使用 **BOOK** 模式 **1.16.4 及以下可正常使用**

## 3.0.1 - 2021-02-02

### 用户

* 修复不兼容 CatServer 与 Mohist 核心的问题

## 3.0.0 - 2021-02-02

### 用户&开发者

* 插件基于 **Kotlin** 完全重写 **旧版本附属部分可能无法兼容新版插件** 如果是 **属性类附属** 这边建议重写\
  如果只是简单的调用API对玩家属性的操作，那么依旧可以 **继续使用**<br>
* 请查看文档其他页面内容，因为是完全重写就不一一列举了
