更新记录

3.3.2.8 ~ 3.3.3.0 - 2024/11/12

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

  • 修复 伤害反弹类 属性可能会导致双方相互无限反弹的情况

  • 修复 移速加成 属性因负值属性导致报错问题

  • 优化 玩家物品描述属性标签读取处理,优化相关处理

  • 优化 AttributeManager 属性管理器中各类型属性的管理集合

  • 新增 AttributeAPI 实体攻击方法

    • attackTo(entity, attacker, damage) 造成固定伤害方法:

    • 该方法 entity.damage(damage) 相比,该方法直接击杀目标击杀者会为 [attacker]

    • 建议各类真伤处理调用该方法,该方法造成的时候不会触发二次属性处理

  • 新增 实体单体冷却中控器(针对非玩家实体) 实体死亡时将自动清除相关的冷却数据

    • 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 触发器此次事件对象

    • 新版自带 3 种触发器,需要 SkillAPI 插件支持:

    • SKILL CAST(技能释放)

    • SKILL DAMAGE ENTITY(技能攻击非玩家实体)

    • SKILL DAMAGE PLAYER(技能攻击玩家实体)

    • 注意 该类型属性需在 onLoad() 方法内调用 setCustomTrigger(name: String) 方法

    • 设置该属性脚本的触发器名称,例如 setCustomTrigger("SKILL CAST")

    • JavaScript 用法示例:传送门

  • 新增 CUSTOM 自定义触发器注册

    • 附属开发者可通过 CustomTriggerComponent 类,自定义注册更多不同的触发器

    • 下面附带 SKILL CAST 属性触发器代码示例

    • 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)
          }
          
      }
    • 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 用法示例:传送门

  • 新增 属性自定义计数器工具

    • 可用于在属性处理中对某些数据进行计数

    • AttributeData.getCounter() 获取 counter 主控对象

    • 相关方法:传送门

    • 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.ymlmythic-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)

  • 新增 实体上一次攻击、被攻击时的时间戳记录,可通过实体 AttributeData 对象进行调用

    • data.getLastAttack() 上次攻击时的时间戳

    • data.getLastDefense() 上次被攻击时的时间戳

    • data.getCurrentTime() 当前时间戳 (current - time / 1000 = 间隔时间)

  • 新增 AttributeCalculatorSource 自动运算属性源工具类

    • packet: org.serverct.ersha.attribute.data.AttributeCalculatorSource

    • 可根据传入的占位符参数数据自动运算列表内属性公式,并生成 AttributeSource 对象

    • 更新记录尾部附件:图3

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

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

  • 修复 添加/清除 玩家属性源时 属性加成值(百分比格式) 不更新问题

    • 该版本起,增加玩家身上存在加成值的属性时将触发属性加成更新

    • 在某种特殊的情况下,可能造成玩家属性值异常的情况 (异常调用API可能造成)

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)

    • runDefense(entity, killer) -> runDefense(attr/Attr, entity, killer)

    • 上面的参数名你可以写为 Attr 那样子你就无需修改方法内代码逻辑

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

3.3.0.9 - 2023-02-25

  • 新增 玩家属性变量数据缓存功能

    • 防止 3.3.0.8 版本的 自定义条件规则标签 功能在玩家首次登录服务器

    • 时,无法正常获取到玩家属性变量值,导致标签判断不通过

  • 新增 玩家数据包异常检测功能

    • 该版本在接收到大量异常操作时会将玩家踢出服务器

    • 防止玩家利用作弊客户端发送大量异常数据包 (切换、关闭界面)

    • 旧版本用户可将服务器核心更新至 Paper 核心,或使用新版插件

  • 修复 属性范围值格式带空格时不读取问题,例如 "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 时无法正常读取

  • 新增 持久化属性源(属性数据)功能

    • 该功能可以将玩家每个属性源转存持久化并可设置 失效时间或永久

    • 该功能提供相关命令,储存方式为本地储存、数据库储存

    • 命令 ap persistent [player] [source] [attributes] [time]

  • 新增 开发者玩家属性操作方法 (持久化属性源)

    • AttributeAPI.addPersistentSourceAttribute(data,source,attributes,time)

    • 为指定 AttributeData 玩家属性数据增加一个持久化属性源数据

    • AttributeAPI.takePersistentSourceAttribute(data,source)

    • 为指定 AttributeData 玩家属性数据清除一个持久化属性源数据

  • 新增 自定义条件规则标签

    • 该功能支持 Kether 语法判断,自定义标签、读取格式

    • 让普通用户也能通过配置自定义新的规则标签,不再需要写附属

    • "战力要求"、"氪金要求"、"XXXXX" 等条件规则标签

    • 更多详细内容,请查看相关页面 自定义条件标签

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 物理伤害

    • 详细内容请查看 新版读取格式相关 页面

  • 新增 自定义规则标签读取格式 (正则匹配)

  • 新增&优化 装备职业/装备类型 标签支持多类型限制

    • 装备职业: 剑士/法师 玩家是否拥有任意一个职业权限

    • 装备类型: 主手/副手 可穿戴在主手或副手

  • 新增&优化 装备等级 标签处理方式

    • 自定义装备等级的 等级数据 来源,通过变量 (attribute.yml -> level-placeholder)

    • 规则标签支持范围值限制,如 装备等级: 10-100 限制10至100级内玩家可用

  • 优化 游戏时触发玩家属性更新的处理

  • 修复 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 状态为 trueUPDATE 类型属性,即不再触发所有 UPDATE 类属性

    • syncUpdate 状态需在注册属性时使用 setSyncUpdateState 方法修改,默认为 false

    • 插件自带属性 syncUpdate 默认状态为 true 的有 生命力、移速加成 属性

什么情况下需要将 syncUpdate 状态设为 true

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

3.3.0.1 - 2023-01-07

用户

配置更新内容请查看 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 部分优化处理

    • 从该版本起高版本服务器无需额外安装 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 怪物生命力也被生命力属性影响问题 (导致怪物锁血)

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 为玩家添加生命力属性后 生命力 不更新问题

这么久没更新 AttributePlus 是因为新生儿 DungeonPlus 需要养,所以才那么久没更新 AttributePlus

3.2.1 - 2021-07-13

用户

  • 新增 属性全息功能 (Hologram) 前置 HolographicDisplays

  • 修复 插件重载后 JavaScript 脚本属性不加载问题

  • 修复 物品攻击检测(attackDetection) 提示异常问题

3.2.0 - 2021-07-09

用户

  • 修复 在调用 API 增加属性时可能出现卡属性的问题 (玩家所有属性都不刷新)

  • 修复 PVP PVE防御 属性在身上没有 物理防御 属性时失效问题

  • 调整 插件重载命令从该版本开始不会再清掉怪物身上已存在的属性

  • 新的插件 DungeonPlus 已正式发布至 MCBBS 欢迎下载使用

3.1.9 - 2021-05-16

用户

  • 修复 部分小问题

  • 更新 内嵌式条件读取格式 说明 从现在开始内嵌式条件格式为 "<属性内容> / <条件>""物理伤害: 100 / Lv.100" 满足条件才会读取该行描述上的 100 物理伤害 旧版本的 [Lv.] [Gm.] 考虑到部分服务器已在所以将会保留不会移除

  • 预告 DungeonPlus 地牢插件进度 ≈ 70% (不出意外六月中旬发布)

开发者

  • 新增 EmbeddedCondition 内嵌读取条件组件

  • 说明 该版本修改了 DescriptionRead 组件内的 condition 方法参数,可能会对你的插件造成影响请自行兼容更新

3.1.8 - 2021-05-03

用户 & 开发者

  • 修复 自定义提示消息内 {属性变量} 有时显示为 0 的问题

  • 修复 自定义公式的触发数据储存问题 (就是导致上面显示 0 的问题) 该问题影响调用了 getFormulaValue 自定义公式方法的属性 (JS/JAVA/KOTLIN)

  • 修复 自定义公式内 {entity:属性名} 可能出现的报错问题

3.1.7 - 2021-04-23

用户

  • 修复 defaultArmor 设为 true 后护甲值还是被清除问题

  • 修复 怪物属性 无法刷新问题 (我的锅)

3.1.6 - 2021-04-17

用户

  • 修复 可能攻击时可能出现的未初始化报错问题

  • 修复 装备等级 标签加 1.0 小数点时会报错问题

  • 预告 DungeonPlus 地牢插件将于放暑假前发布,目前进度≈ 50% AttributePlus 基本稳定,如果没有严重问题将停更几个星期,因为要加快 DungeonPlus 的进度 基本上 AttributePlus 的新功能都可以通过 API 进行开发附属,所以也没什么需要我更新的了

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

  • 修复 多个条件判断 组件 造成的冲突问题

  • 修复 重载插件无法修改战斗力配置问题

  • 调整 玩家退出服务器时 不再触发属性更新等事件 (触不触发都那样)

  • 调整 可以通过 "ap.权限名"/"权限名" 方式通过职业限制判断

3.1.3 - 2021-03-13

用户

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

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

    以上配置会在 attribute.yml 配置自动生成对应配置项

  • 修复 装备等级无法以 "装备等级 10 级" 格式生效

  • 修复 SkillAPI 技能伤害 兼容失效 问题

  • 修复 修复 "§|" 过滤符无法对装备等级等规则标签失效

  • 修复 重载属性后导致 PlaceholderAPI 变量失效 问题

3.1.2 - 2021-03-08

用户

  • 新增 新增几个 脚本API 方法

  • 调整 配置注释与实际效果不符问题

  • 修复 修复一个小问题

3.1.1 - 2021-03-07

用户

  • 修复 CatServer、Mohist 属性脚本无法自定义脚本工具问题

  • 修复 使用 API 增加的属性 无法触发规则标签(装备等级等...)限制问题

  • 调整 从该版本起新增配置 无需自己在配置内添加配置节点 将自动生成

  • 新增 过滤符号 &-、&-&0 等,具体作用请前往WIKI查看 过滤符相关

开发者

  • 修复 读取组件无法卸载问题

  • 调整 读取组件的类型处理顺序

3.1.0 - 2021-02-22

用户

  • 兼容 JAVA版本 9 以上版本

  • 新增 默认 清除 实体原版护甲

  • 新增 AttributeSource#merge 属性源合并方法

  • 修复 修复一些显示上的小问题(

3.0.9 - 2021-02-13

用户

  • 新增 自定义属性 (通过 JavaScript 脚本编写) 可自定义调用其他插件的类方法,详细请查看 script.yml 配置

  • 新增 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 内方法给玩家增加属性的附属 旧版本注册新属性的附属无法兼容,需重新开发

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对玩家属性的操作,那么依旧可以 继续使用

  • 请查看文档其他页面内容,因为是完全重写就不一一列举了

最后更新于