Skip to content

词条方法

词条方法位于插件资源的 entry/ 目录,用于在图纸产物、可选材料、额外条件和指令发放物品中处理数值、文本、玩家数据与条件判断。

调用方式

词条方法使用方法名和参数调用。常见写法如下:

yaml
强度初始化: "setvar('强度', round(random(1, 100)))"
品质初始化: "setvar('品质', weight('传说=50', '史诗=200', '极品=350', '优秀=200', '普通=200'))"

在图纸中调用已定义的词条内容:

yaml
entry:
  - "{强度初始化}"
  - "{品质初始化}"

方法返回值可以继续作为其他方法的参数,也可以放入表达式中参与计算。

数值方法

方法说明
random()返回 0-1 范围内的随机数。
random(最大)返回 0-最大 范围内的随机数。
random(最小, 最大)返回指定范围内的随机数。
int(数值)去除小数部分并取整。
ceil(数值)向上取整。
floor(数值)向下取整。
round(数值)四舍五入。
double(位数, 数值)按指定小数位处理数值。
max(数值...)处理多个数值并进行上限比较。
min(数值...)处理多个数值并进行下限比较。
avg(数值...)计算多个数值的平均值。
chance(百分比)按指定百分比进行概率判断,返回 truefalse
weight(权重...)按权重从多个选项中进行选择。选项可使用 值=权重 格式传入。

权重方法示例:

yaml
品质初始化: "setvar('品质', weight('传说=50', '史诗=200', '极品=350', '优秀=200', '普通=200'))"

玩家与变量方法

方法说明
papi('%变量%')读取 PlaceholderAPI 变量。
permission('权限')判断玩家是否拥有指定权限。
forgeCount('图纸ID')读取玩家指定图纸的已锻造次数。
setvar('变量', '值')设置当前锻造过程中的变量。
getvar('变量', '默认值')获取当前锻造过程中的变量;变量不存在时返回默认值。

变量通常用于保存随机结果、品质结果或中间计算结果,再在后续词条中读取。

yaml
entry:
  - "setvar('强度', round(random(1, 100)))"
  - "setvar('品质', weight('传说=50', '史诗=200', '极品=350', '优秀=200', '普通=200'))"
  - "getvar('强度', 0)"
  - "getvar('品质', '普通')"

字符串方法

方法说明
replace(文本, 映射...)按传入的映射关系替换文本内容。
array(文本...)将文本处理为可自动换行的内容。
repeat(文本, 次数)重复指定文本。
splice(文本...)拼接多个文本或参数。
split(文本, 分隔符)按分隔符分割文本。
sel(位置, 参数...)按位置选择参数。
size(参数...)统计参数数量。
trim(文本)去除文本首尾空格。
contains(文本, 内容)判断文本是否包含指定内容。
equals(文本, 内容)判断两个文本是否完全相等。
startsWith(文本, 内容)判断文本是否以指定内容开头。
endsWith(文本, 内容)判断文本是否以指定内容结尾。
length(文本)获取文本长度。
index(文本, 内容)获取指定内容在文本中的位置。

条件与日期方法

项目中提供条件判断和日期相关的词条方法实现:

方法说明
if(...)根据条件选择或返回对应结果。具体参数形式以项目中的词条配置为准。
date(...)处理日期相关内容。具体参数形式以项目中的词条配置为准。

条件方法可以与 chance()permission()contains()equals() 等方法组合使用。

表达式

表达式使用 ${...} 包裹,可以进行加法、减法、乘法、除法、次方、取余和条件判断。

yaml
数值计算: "${max(1, 1.314)+min(2, 1.314)}"

表达式也可以读取已经保存的词条变量:

yaml
品质系数: "replace(getvar('品质'), '普通=1.0', '优秀=1.2', '极品=1.5', '史诗=1.9', '传说=2.4')"
强度系数: "${(100+getvar('强度'))*0.01}"
数值计算: "${{{品质系数}*{强度系数}}"

在装备 Lore 中,可以继续引用计算结果:

text
攻击力+${{{数值计算}*100}

方法组合

词条方法可以嵌套调用。例如,先使用 random() 生成随机强度,再使用 round() 取整,最后通过 setvar() 保存结果:

yaml
强度初始化: "setvar('强度', round(random(1, 100)))"

读取变量并参与表达式计算:

yaml
强度系数: "${(100+getvar('强度'))*0.01}"

自定义词条方法

项目中包含词条方法注册、方法上下文和方法注册表示例,支持在词条方法体系中扩展自定义方法。现有示例涉及以下类型:

类型说明
数值处理自定义整数、双精度数值和计算方法。
条件判断自定义条件检查和权限判断方法。
字符串处理自定义文本格式化、替换和字符串处理方法。
列表处理自定义列表或多参数处理方法。
权重选择自定义权重选项处理方法。
变量读写自定义标记或变量的读取与设置方法。
占位符处理自定义 PlaceholderAPI 相关处理方法。
控制台命令自定义控制台命令执行方法。
汇报与检查自定义结果汇报和条件检查方法。

自定义方法需要按照项目中的词条方法接口、上下文和注册表结构实现。具体类结构可参考项目中的 词条代码示例/entry/ 目录。

注意事项

  • setvar() 设置的变量应在当前词条计算流程中使用,并通过 getvar() 读取。
  • 使用 getvar() 时建议提供默认值,避免变量未设置时无法得到预期结果。
  • 使用 ${...} 进行计算时,变量引用和内层词条占位符需要保持原样。
  • 包含双花括号的配置示例需要放在 v-pre 容器中,避免文档系统解析配置占位符。
  • papi() 读取 PlaceholderAPI 变量时,需要传入完整的变量文本。
  • 方法的具体参数数量和返回类型应以项目实际实现为准,不要将未确认的参数写入配置。