效果配置
药水效果配置在药水节点的 stronger-effect 列表中。每条配置使用以下格式:
text
类型{参数名=参数值;参数名=参数值}参数之间使用半角分号 ; 分隔。参数名与参数值使用第一个等号 = 分隔。
yaml
'示例药水':
offline-pause: true
stronger-effect:
- 'heal{i=20;c=5;a=10}'
- 'command{i=20;c=3;cmd=[console]say %player_name% 触发了药水效果}'通用参数
| 参数 | 说明 | 单位或格式 |
|---|---|---|
i | 循环效果的触发间隔 | tick,默认 20,最小按 1 处理 |
c | 循环效果的触发次数 | 默认 1,最小按 1 处理 |
t | 属性效果的持续时间 | tick |
a | 效果的主要数值或技能 ID | 由具体效果决定 |
m | 按最大生命值计算的回复比例 | 0.1 表示最大生命值的 10% |
cmd | 循环执行的指令 | 支持指令前缀和变量 |
循环类效果会在创建后立即执行第一次,后续执行按照 i 指定的间隔进行。c=1 表示只执行一次。
属性类效果会立即添加属性,并在 t tick 后移除。t 必须大于 0,否则不会创建该效果。
支持的效果类型
| 类型 | 必要参数 | 功能 | 对应前置 |
|---|---|---|---|
lycore | t、属性参数 | 通过 LyCore 添加临时属性 | LyCore |
ap | t、属性参数 | 通过 AttributeAPI 添加临时属性 | 对应的属性插件 |
heal | i、c、a | 按次数回复固定生命值 | 无额外效果前置 |
healpercent | i、c、m 或 a | 按最大生命值比例回复生命值 | 无额外效果前置 |
food | i、c、a | 按次数回复饥饿值 | 无额外效果前置 |
command | i、c、cmd | 按次数执行指令 | 指令中的变量可能需要 PlaceholderAPI |
skillapi-mana | i、c、a | 回复 SkillAPI 蓝量 | SkillAPI |
skillapi-cd | i、c、a | 减少玩家全部 SkillAPI 技能的冷却 | SkillAPI |
mmskill | i、c、a | 以玩家为施法者释放 MythicMobs 技能 | MythicMobs |
缺少对应前置时,不要配置相关效果。lycore 和 ap 在前置类缺失时会跳过并输出控制台提示;其他直接调用第三方 API 的效果也必须确保对应插件可用。
属性效果
LyCore 属性
yaml
stronger-effect:
- 'lycore{t=200;攻击力=5;生命力=<{v.力量}*1.5+%player_level%>}'t=200 表示属性持续 200 tick。除保留参数外,其余参数都会作为属性名称和属性数值处理。
上面的配置最终会生成类似以下属性内容:
text
攻击力5
生命力计算结果AttributeAPI 属性
yaml
stronger-effect:
- 'ap{t=200;攻击力=5;暴击几率=10}'ap 与 lycore 使用相同的参数写法,但属性名称和最终文本必须符合目标属性插件的格式要求。
属性值写法
属性参数支持三种写法:
| 写法 | 示例 | 说明 |
|---|---|---|
| 等号赋值 | 攻击力=5 | 最终拼接为属性名与数值 |
| 带运算符属性 | 攻击力+5 | 保留 + 或 - 运算符 |
| 完整属性文本 | 攻击力 5 | 未找到等号或正负运算符时,按完整文本传入 |
属性数值中的尖括号表达式会先进行计算:
yaml
stronger-effect:
- 'lycore{t=200;攻击力=<{v.力量}*1.5>;生命力=<100+%player_level%*5>}'尖括号只包裹需要计算的部分。计算完成后,结果会替换回原属性文本。
属性效果会使用当前药水和效果序号生成属性来源键。效果结束、暂停或运行异常时,插件会按该来源键移除属性。
生命回复效果
固定生命回复
yaml
stronger-effect:
- 'heal{i=20;c=5;a=10}'| 参数 | 说明 |
|---|---|
i=20 | 每隔 20 tick 触发一次 |
c=5 | 总共触发 5 次 |
a=10 | 每次回复 10 点生命值 |
实际回复不会超过玩家最大生命值。玩家死亡时不会执行回复。
百分比生命回复
yaml
stronger-effect:
- 'healpercent{i=20;c=5;m=0.1}'m 是最大生命值比例,而不是百分数:
m 值 | 每次回复量 |
|---|---|
0.01 | 最大生命值的 1% |
0.1 | 最大生命值的 10% |
0.5 | 最大生命值的 50% |
1 | 最大生命值的 100% |
也可以使用 a 代替 m:
yaml
stronger-effect:
- 'healpercent{i=20;c=3;a=0.2}'同时填写 m 和 a 时,优先使用 m。
饥饿值回复
yaml
stronger-effect:
- 'food{i=20;c=5;a=1}'a 会转换为整数后作为每次回复的饥饿值。回复结果不会超过原版饥饿值上限,玩家死亡时不会执行回复。
循环指令
yaml
stronger-effect:
- 'command{i=20;c=5;cmd=[console]say %player_name% 使用了药水}'| 参数 | 说明 |
|---|---|
i | 两次指令之间的间隔 tick |
c | 指令执行次数 |
cmd | 需要执行的完整指令 |
cmd 支持以下执行前缀:
| 前缀 | 执行方式 |
|---|---|
[console] | 由控制台执行 |
[op] | 临时给予玩家 OP,以玩家身份执行,完成后恢复原状态 |
[player] | 以玩家身份执行 |
指令支持 PlaceholderAPI 变量和药水 lore 变量:
yaml
stronger-effect:
- 'command{i=20;c=3;cmd=[console]give %player_name% diamond <{v.数量}+1>}'需要注意,command 的 cmd 会进行 PlaceholderAPI 和 {v.变量} 替换,但不会计算其中的尖括号公式。需要计算的数值应通过其他效果参数使用,或直接传入已可执行的指令文本。
SkillAPI 效果
回复蓝量
yaml
stronger-effect:
- 'skillapi-mana{i=20;c=5;a=10}'每次触发回复 a 指定的 SkillAPI Mana。回复结果不会超过 SkillAPI 中记录的最大 Mana。
减少技能冷却
yaml
stronger-effect:
- 'skillapi-cd{i=20;c=3;a=1.5}'每次触发会遍历玩家当前拥有的全部 SkillAPI 技能,并减少 a 秒冷却。
新版 stronger-effect 的 skillapi-cd 不提供指定技能 ID 的参数。需要指定单个技能时,只能使用旧版 effect 兼容语法。
MythicMobs 技能
yaml
stronger-effect:
- 'mmskill{i=20;c=1;a=技能ID}'a 是 MythicMobs 技能 ID。插件会直接通过 MythicMobs API,以玩家为施法者释放该技能。
技能 ID 可以使用 PlaceholderAPI 或 lore 变量替换:
yaml
stronger-effect:
- 'mmskill{i=20;c=1;a={v.技能编号}}'当前实现不会读取 level 参数。配置 level 不会改变技能等级。
效果参数中的变量
PlaceholderAPI 变量
效果参数会根据具体效果进行 PlaceholderAPI 替换,例如:
yaml
stronger-effect:
- 'heal{i=20;c=3;a=<%player_level%*2>}'
- 'command{i=20;c=1;cmd=[console]say %player_name% 使用了药水}'服务器需要安装 PlaceholderAPI,并确保使用的变量扩展可用。
Lore 取值变量
药水配置中的 lore-placeholder 可以从实际使用的物品 lore 中提取数字:
yaml
lore-placeholder:
力量: '力量+<value>'
回复量: '生命回复:<value>点'
stronger-effect:
- 'lycore{t=200;攻击力=<{v.力量}*1.5>}'
- 'heal{i=20;c=3;a={v.回复量}}'| 写法 | 说明 |
|---|---|
<value> | lore-placeholder 模板中的数字位置 |
{v.力量} | 引用从物品 lore 提取出的“力量”数值 |
{v.回复量} | 引用从物品 lore 提取出的“回复量”数值 |
提取到的 lore 数值会以小数形式替换。已定义但未在物品 lore 中匹配到的变量通常按 0 使用。
尖括号占位符必须保留在 YAML 字符串中,例如 <value> 和 <{v.力量}*1.5>。
数学表达式
数值参数可以直接填写固定数值,也可以使用尖括号包裹数学表达式:
yaml
stronger-effect:
- 'heal{i=20;c=3;a=<10+5>}'
- 'food{i=<20*2>;c=3;a=2}'
- 'lycore{t=<20*30>;攻击力=<{v.力量}*1.25>}'表达式支持:
- 加法
+ - 减法
- - 乘法
* - 除法
/ - 小括号
() - 整数和小数
- PlaceholderAPI 替换结果
{v.变量}替换结果
参数不使用尖括号时,插件仍会尝试将替换后的内容作为数值表达式计算。尖括号主要用于明确标记需要计算的内容,以及在属性文本中只计算其中一部分。
参数无法解析时,控制台会输出 stronger-effect 参数解析失败,并使用该参数的默认值。
离线暂停与恢复
药水节点的 offline-pause 控制持续效果在玩家离线时的计时方式:
yaml
'示例药水':
offline-pause: true
stronger-effect:
- 'lycore{t=1200;攻击力=10}'
- 'heal{i=20;c=60;a=1}'| 配置 | 行为 |
|---|---|
offline-pause: true | 玩家下线时暂停效果,上线后继续剩余次数或剩余持续时间 |
offline-pause: false | 玩家离线期间效果时间继续流逝,上线时只恢复尚未到期的部分 |
默认值为 true。
插件会持久化仍未结束的以下效果:
lycoreap- 旧版
as healhealpercentfoodcommandskillapi-manaskillapi-cdmmskill
属性效果在暂停时会先移除属性,上线恢复后重新添加。循环效果会记录已执行次数、剩余时间和下一次触发延迟。
本地模式会将效果快照保存到玩家数据 YAML。MySQL 模式会将冷却和效果快照一同写入数据库。启用 MySQL 时,必须安装 LyMySQLCore,并确保插件已经成功连接数据库,否则跨服冷却和持续效果恢复不会正常生效。
同类效果配置限制
当前 stronger-effect 加载逻辑会按效果类型归组。同一个药水中重复填写同一种类型时,多条参数会被合并为同一组,而不是创建多个独立效果。
不要这样配置:
yaml
stronger-effect:
- 'heal{i=20;c=3;a=10}'
- 'heal{i=40;c=5;a=5}'上面的两条 heal 参数会被合并,后出现的同名参数会覆盖前面的参数,最终只会创建一个回血效果。
每个药水内,每种 stronger-effect 类型只配置一次。需要组合多个不同效果时,可以正常同时填写不同类型:
yaml
stronger-effect:
- 'lycore{t=200;攻击力=5}'
- 'heal{i=20;c=5;a=10}'
- 'food{i=40;c=3;a=1}'
- 'mmskill{i=20;c=1;a=药水触发技能}'icon 类型状态
代码能够识别 icon{...} 的参数格式,但当前分支没有创建图标、动作条或持续任务。以下参数即使被读取,也不会产生实际显示效果:
t或timeidnamelore
因此不要在正式药水配置中使用 icon,直到插件后续版本完成对应实现。
旧版 effect 兼容配置
插件仍会读取并执行旧版 effect,但新配置应优先使用 stronger-effect。如果同一个药水同时配置 effect 和 stronger-effect,两组效果都会执行,不会自动忽略旧配置。
| 类型 | 旧版格式 | 说明 |
|---|---|---|
as | as#属性内容#持续秒数 | 通过 AttrAPI 添加属性 |
ap | ap#属性内容#持续秒数 | 通过 AttributeAPI 添加属性 |
lycore | lycore#属性内容#持续秒数 | 通过 LyCore 添加属性 |
as-eval | as-eval#属性名~表达式#持续秒数 | 计算属性数值后通过 AttrAPI 添加 |
ap-eval | ap-eval#属性名~表达式#持续秒数 | 计算属性数值后通过 AttributeAPI 添加 |
heal | heal#每次数值#执行次数 | 每 20 tick 回复固定生命值 |
proportion-heal | proportion-heal#百分数#执行次数 | 每 20 tick 按最大生命值百分比回复 |
food | food#每次数值#执行次数 | 每 20 tick 回复饥饿值 |
command | command#指令#执行次数 | 每 20 tick 执行一次指令 |
skillapi-mana | skillapi-mana#每次数值#执行次数 | 每 20 tick 回复 SkillAPI Mana |
skillapi-cd | skillapi-cd#技能ID#减少秒数#执行次数 | 每 20 tick 减少指定技能冷却 |
旧版百分比回血填写的是百分数。例如 10 表示最大生命值的 10%;新版 healpercent 填写比例,0.1 才表示 10%。迁移时需要同步换算。
yaml
# 旧版
effect:
- 'proportion-heal#10#5'
# 新版
stronger-effect:
- 'healpercent{i=20;c=5;m=0.1}'不要在实际 YAML 中保留上方示例里 effect 前多余的空格。完整迁移后的正确结构如下:
yaml
'示例药水':
stronger-effect:
- 'healpercent{i=20;c=5;m=0.1}'配置注意事项
stronger-effect的类型名称不区分大小写,但建议统一使用文档中的小写名称。- 时间参数
i和t的单位均为 tick,通常 20 tick 约为 1 秒。 - 属性效果使用
t作为持续时间,当前实现不会读取属性效果中的time。 healpercent的比例不会自动除以 100,10会按最大生命值的 10 倍计算并最终受最大生命值限制。food的a会转换为整数,小数部分会被舍去。- 新版
skillapi-cd会影响玩家全部已学习技能,不支持填写单个技能 ID。 mmskill直接调用 MythicMobs API,不会通过控制台执行mm指令。- 同一个药水中不要重复配置相同的
stronger-effect类型。 - 不要同时保留作用相同的
effect和stronger-effect,否则效果会重复触发。 - 大量循环效果会分别创建定时任务,应合理设置
i和c,避免同时产生过多高频任务。