For the complete documentation index, see llms.txt. This page is also available as Markdown.

数学计算格式

config.yml -> math.enabled 设置为 true 时,受支持的数值字段可以使用表达式代替固定数字。

amount: '2 + level * 0.5'
random: '0.1 + level * 0.02'

可用数值

根据接收表达式的字段不同,可以使用以下数值:

  • level / {level}

  • 根配置中的 variables 数值;

  • {distance} 等运行时上下文;

  • 来源或目标的生命值、最大生命值、生命值百分比、水平速度和坠落距离;

  • 下方列出的数值触发器上下文占位符;

  • {original}{now}{max}{air}{max-air} 等字段专用数值;

  • 存在玩家上下文时,PlaceholderAPI 返回的数值结果。

  • EnchantmentReform 提供的数学计算格式与 UltimateShop 中的格式几乎相同,因此本 Wiki 不再重复介绍所有基础语法。详细说明请参阅 UltimateShop Wiki,点击此处查看。

数值触发器上下文占位符

每个数值类型的 BuiltinContextKeys 条目都会自动使用花括号中的键名公开为占位符。只有当前触发器或父能力提供了对应上下文值时,占位符才会被替换;不可用的数值会保持未解析状态,而不会自动变为 0

占位符
数值类型
上下文数值

{original_damage}

Double

兼容伤害触发器捕获的原始伤害。

{original_amount}

Double

触发器提供的原始通用可修改数量。

{original_duration}

Float

支持持续时间的触发器提供的原始持续时间。

{original_yield}

Float

触发器提供的原始爆炸威力或掉落率。

{original_radius}

Float

触发器提供的原始半径。

{block_break_progress}

Float

当前方块破坏进度。

{original_air}

Integer

原始剩余空气值。

{previous_air}

Integer

空气变化事件发生前玩家已有的剩余空气值。

{original_food_level}

Integer

原始饥饿值。

{original_experience}

Integer

原始经验数量,或拾取的经验球中保存的经验数量。

{original_item_damage}

Integer

原始物品耐久损耗。

{state_previous}

Double

当前 state 能力执行操作前的状态值。可供其触发的子能力使用。

{state_current}

Double

分组消耗阈值前的更新后状态值。可供其触发的子能力使用。

{state_trigger_count}

Long

当前 state 能力计算出的完整阈值分组数量。可供其触发的子能力使用。

{state_remainder}

Double

消耗完整阈值分组后剩余的状态值。可供其触发的子能力使用。

{bow_force}

Float

兼容投射物触发器提供的弓蓄力强度。

{target_count}

Integer

兼容目标选择上下文提供的目标数量。

这些占位符同样可以用于带上下文的字符串字段,以及通过 getDouble(...)getInt(...) 解析的数值字段。

状态结果占位符只会添加到为 state.trigger-abilities 创建的子上下文中。可以使用完整阈值分组的数量缩放一次嵌套执行的结果:

根能力变量会优先解析。因此,变量可以安全引用数值触发器上下文:

通过内置键工厂添加新的数值 ContextKey 时,会自动添加使用相同键名的占位符,不需要另外注册解析器。

随机范围

使用该字段所采用的解析器,在两个端点之间选择一个数值。

等级选择器

条目会从上到下进行检查,并使用第一个匹配的选择器。YAML 中的选择器键必须使用引号包裹。

变量

数值使用方会计算数值变量的结果。文本使用方只会替换字符串值,不会将其作为公式计算。

函数

math.enable-function 用于启用 EnchantmentReform 注册的函数,例如当前实现支持的常见聚合函数和辅助函数。只有在排查兼容性问题,或确定不需要函数时,才建议将其禁用。

最后更新于