# 更新记录

## 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 用法示例：[**传送门**](/attributeplus-pro/shu-xing-jiao-ben/shou-ba-shou-jiao-ni-xie-shu-xing-jiao-ben/update-lei-xing-1.md)<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 用法示例：[**传送门**](/attributeplus-pro/kai-fa-wen-dang/api-1.md#javascript-zhong-shi-yong-ji-shu-qi-shi-li)
* **新增** 属性自定义计数器工具
  * 可用于在属性处理中对某些数据进行计数
  * **AttributeData.getCounter()** 获取 **counter** 主控对象
  * 相关方法：[**传送门**](/attributeplus-pro/kai-fa-wen-dang/api-1.md)
  * **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="/files/7poCAhXQ7c9wzvx1KFIO" alt="" width="563"><figcaption><p>图1</p></figcaption></figure>

<figure><img src="/files/IB68PUocwkFZKc8P3YrO" alt="" width="563"><figcaption><p>图2 (attributes.yml)</p></figcaption></figure>

<div align="center" data-full-width="false"><figure><img src="/files/TI0yLDEuHxzdJMQB5bN5" 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="/files/CL9UBCCiCbo3ON1S0Q9u" alt=""><figcaption><p>旧版本格式</p></figcaption></figure>

<figure><img src="/files/bHpJYzm7EAIpCQAMc9kb" 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"** 等条件规则标签
  * 更多详细内容，请查看相关页面 [自定义条件标签](/attributeplus-pro/du-qu-xiang-guan/zi-ding-yi-tiao-jian-biao-qian.md)

```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 物理`伤害`
  * 详细内容请查看 [新版读取格式相关](/attributeplus-pro/du-qu-xiang-guan/xin-du-qu-ge-shi-xiang-guan-3.3.0.7.md) 页面
* **新增** 自定义规则标签读取格式 (正则匹配)
* **新增&优化** **`装备职业/装备类型`** 标签支持多类型限制
  * `装备职业: 剑士/法师` 玩家是否拥有任意一个职业权限
  * `装备类型: 主手/副手` 可穿戴在主手或副手
* **新增&优化 `装备等级`** 标签处理方式
  * 自定义装备等级的 **等级数据** 来源，通过变量 (**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](/attributeplus-pro/cha-jian-pei-zhi/pei-zhi/attribute.yml.md)

* **兼容** 对 `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="/files/1QLqymOqMrP3mMjSNqEt" 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>
* 请查看文档其他页面内容，因为是完全重写就不一一列举了


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ersha.gitbook.io/attributeplus-pro/geng-xin-ji-lu.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
