词条方法
词条方法位于插件资源的 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(百分比) | 按指定百分比进行概率判断,返回 true 或 false。 |
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 变量时,需要传入完整的变量文本。- 方法的具体参数数量和返回类型应以项目实际实现为准,不要将未确认的参数写入配置。