国产最强免费属性插件AttributePlus

插件 国产最强免费属性插件AttributePlus 3.3.3.3

这是一款可扩展性很强的属性插件,插件拥有 40+ 种属性,多种条件判断等
修复1.21及以上版本生命值属性增加、清除错误问题
可能有部分小变动未记录,但最主要的新增、修复、优化记录都在下方


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

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

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

  • 优化 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.2~3.3.2.5 版本中概率增大,且可频繁稳定复现(所以我才能修复,所以以后有BUG先找复现方法再跟我反馈)
顶部