💥能力配置
一个附魔的能力配置用于定义:
是否启用运行时能力;
各触发器共用的激活限制;
能力在什么情况下触发;
每个触发器需要执行哪些条件、修改器和能力。
与 EnchantedMobs 不同,EnchantmentReform 不会将每个能力单独保存为一个文件。能力配置就是附魔文件中的 powers 部分,附魔文件位于:
plugins/EnchantmentReform/enchantments/附魔文件的其他部分负责定义支持物品、等级、稀有度、有效槽位等注册表信息。本页面只说明运行时使用的 variables 和 powers 部分。
快速开始
powers:
on-melee-attack:
abilities:
ignite-target:
type: fire
target: TARGET
fire-ticks: 100当附魔物品处于激活状态,且物品所有者直接攻击某个实体时,目标会燃烧 100 Tick。
能力结构
variables
定义附魔可重复使用、按等级变化或经过计算的值。此部分位于 powers 外部。
powers.enabled
启用或禁用附魔的运行时能力,但不会修改其注册表条目。
powers.limit
控制整个能力共用的触发概率、冷却和使用次数。
powers.on-...
定义一个触发器对应的条件、修改器和能力。
powers.activation-abilities
定义判断附魔是否激活时执行的特殊能力。
powers 下的键通常是内置触发器,例如 on-attack、on-damage、on-block-break 或 on-fish。例外是上方列出的通用选项,以及特殊的 activation-abilities 部分。
执行流程
当匹配的事件发生时,EnchantmentReform 会按照以下顺序处理一个激活附魔:
同一级别中的所有条件都必须通过。
修改器按照 YAML 中的顺序执行,并更新触发器支持修改的事件结果数据。
能力会在修改器之后按照 YAML 中的顺序执行。
如果某个触发器或子项所需的上下文不可用,该项会被跳过。
对于已追踪的弹射物后续触发,插件可能会复用发射时捕获的能力状态,而不是重新判定能力整体限制。
powers.limit 会在触发器条件之前检查。因此,即使后续条件导致该触发器被跳过,已配置的冷却或使用次数仍可能被消耗。
有关各触发器提供的上下文,以及 SOURCE、SKILL 和 TARGET 的含义,请参阅能力触发器。
变量和动态值
变量可以避免在同一个附魔中重复编写相同公式:
根据字段的实现,数值可能支持:
{level}或level;{damage-multiplier}等附魔变量;4 + {level} * 0.5等公式;1~3或0.5~1.5等范围;等级选择器映射;
{source_health}、{target_health_percent}和{distance}等运行时占位符;在存在玩家上下文时使用 PlaceholderAPI。
并非每个触发器或能力都能提供所有运行时占位符。有关表达式语法,请参阅数学计算格式。
能力整体限制
random
1
激活概率,1 表示 100%。
cooldown
0
整个能力共用的冷却时间,单位为秒。
times
0
此能力最多成功通过顶层限制检查的次数,0 表示无限。
这些选项必须写在 powers.limit 下,而不是某个单独的 on-... 触发器部分中。
支持数值表达式的字段可以使用公式、变量、范围或等级选择器映射。
触发器部分
所有普通触发器都使用相同的基本结构:
fire-damage、reduce-fire-damage 和 smoke 等名称都是用户自定义的条目 ID,只需在各自所在部分中保持唯一。type 的值用于选择已注册的条件、修改器或能力实现。
conditions
条件用于决定触发器是否继续执行。同一部分中的条目默认使用逻辑 AND,即全部条件都必须满足。
以上两个条件必须同时通过。如果多个分支中只需要任意一个通过,请使用 any 条件。
请参阅能力条件参考。
modifiers
修改器会在能力执行前,修改当前触发器提供的可变数据。
示例包括:
在攻击或受伤触发器中使用
damage;在饥饿值变化时使用
food;在物品耐久损耗时使用
item_damage;在兼容的
on-fish状态中使用钓鱼修改器;在商人交易触发器中使用交易修改器;
在监守者愤怒值变化时使用
warden_anger。
如果将一个有效修改器用于不相关的触发器,当前上下文中将没有可供它修改的兼容结果。配置键必须使用复数形式 modifiers。
请参阅能力修改器参考。
abilities
能力会按照 YAML 中的顺序执行。能力可以使用触发器提供的实体、物品、方块、位置、弹射物或其他数据。
只有在所选触发器提供了方块时,EVENT_BLOCK 才能使用。根据具体能力的文档,单个能力还可能支持自己的条件、概率、冷却、使用次数限制或子能力。
请参阅能力参考。
触发器专属选项
某些触发器除了 conditions、modifiers 和 abilities 外,还支持专属选项。例如,Tick 触发器支持 interval:
触发器专属选项记录在能力触发器页面中。
激活能力
activation-abilities 不是事件触发器。EnchantmentReform 扫描物品并判断哪些附魔处于激活状态时,会执行此部分。
内置的 disable_enchantments 能力可以禁用同一物品上匹配的附魔:
声明此规则的附魔不会禁用自身。普通触发器中的条件、修改器和 powers.limit 不适用于这个特殊部分。
多个触发器
一个附魔可以定义多个触发器部分:
发射触发器会捕获弹射物后续触发所需的能力状态,Tick 触发器生成轨迹,命中触发器处理最终撞击。
完整示例
当目标生命值低于 30% 时,该附魔会增加伤害,然后播放音效和粒子反馈。
相关参考
最后更新于