Example
示例
属性说明
需求: 几率触发一次无法被 物理防御 护甲防御 所抵消的溟灭伤害,同时要求被攻击对象不为玩家才会触发 这样子的属性,我们至少需要注册 2 个新属性,它们分别为 溟灭几率(ATTACK) 溟灭伤害(OTHER)
属性类型列表 为什么 溟灭伤害 是 OTHER 类型呢? 因为主要触发是 溟灭几率 属性,而 溟灭伤害 只是提供伤害数值
代码
以下代码使用 Kotlin 语言,在看之前请先阅读 属性名
/* 属性默认名 */
const val TEST = "溟灭几率"
const val TEST_DAMAGE = "溟灭伤害"
const val TEST_DEFENSE = "溟灭防御"@AutoRegister
class TestAttribute : SubAttribute(12, 5.0, TEST, AttributeType.ATTACK, "test") {
override fun runAttack(attacker: LivingEntity, entity: LivingEntity): Boolean {
//获取攻击者的 溟灭几率 属性值
val chance = attacker.getRandomValue().toDouble()
return chance.chance().apply {
if (this){
//获取攻击者的 溟灭伤害 属性值
val damage = attacker.getRandomValue(TEST_DAMAGE).toDouble()
//增加此次攻击者的伤害
attacker.addDamage(damage)
}
}
}
@AutoRegister
class TestDamageAttribute : SubAttribute(-1, 1.0, TEST_DAMAGE, AttributeType.OTHER, "test_damage")
}这样子就简简单单的完成了一个属性,什么? 你想要再加个 溟灭防御 属性? 那很简单,这里 溟灭防御 也应该是个 OTHER 类属性,看下面代码
是不是很简单,什么? 你还行要给溟灭属性加个 提示消息?
什么?你想让 被攻击者 直接显示 最终所受到的溟灭伤害?
你还想要支持自定义公式?
后续
为了确保 溟灭伤害 不会被 物理防御 护甲防御 所抵消,你需要把 溟灭几率 属性的优先级调至 物理防御 护甲防御 属性 之后 这个可以由用户自行调整
写完属性后,当然就是注册属性了,这里请使用 @AutoRegister 注释进行自动注册,最后再插件是在plugin.yml 依赖上加 AttributePlus 这样子就完成了
最终代码
最后更新于
这有帮助吗?