Skip to content

效果配置

药水效果配置在药水节点的 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,否则不会创建该效果。

支持的效果类型

类型必要参数功能对应前置
lycoret、属性参数通过 LyCore 添加临时属性LyCore
apt、属性参数通过 AttributeAPI 添加临时属性对应的属性插件
healica按次数回复固定生命值无额外效果前置
healpercenticma按最大生命值比例回复生命值无额外效果前置
foodica按次数回复饥饿值无额外效果前置
commandiccmd按次数执行指令指令中的变量可能需要 PlaceholderAPI
skillapi-manaica回复 SkillAPI 蓝量SkillAPI
skillapi-cdica减少玩家全部 SkillAPI 技能的冷却SkillAPI
mmskillica以玩家为施法者释放 MythicMobs 技能MythicMobs

缺少对应前置时,不要配置相关效果。lycoreap 在前置类缺失时会跳过并输出控制台提示;其他直接调用第三方 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}'

aplycore 使用相同的参数写法,但属性名称和最终文本必须符合目标属性插件的格式要求。

属性值写法

属性参数支持三种写法:

写法示例说明
等号赋值攻击力=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}'

同时填写 ma 时,优先使用 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>}'

需要注意,commandcmd 会进行 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-effectskillapi-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

插件会持久化仍未结束的以下效果:

  • lycore
  • ap
  • 旧版 as
  • heal
  • healpercent
  • food
  • command
  • skillapi-mana
  • skillapi-cd
  • mmskill

属性效果在暂停时会先移除属性,上线恢复后重新添加。循环效果会记录已执行次数、剩余时间和下一次触发延迟。

本地模式会将效果快照保存到玩家数据 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{...} 的参数格式,但当前分支没有创建图标、动作条或持续任务。以下参数即使被读取,也不会产生实际显示效果:

  • ttime
  • id
  • name
  • lore

因此不要在正式药水配置中使用 icon,直到插件后续版本完成对应实现。

旧版 effect 兼容配置

插件仍会读取并执行旧版 effect,但新配置应优先使用 stronger-effect。如果同一个药水同时配置 effectstronger-effect,两组效果都会执行,不会自动忽略旧配置。

类型旧版格式说明
asas#属性内容#持续秒数通过 AttrAPI 添加属性
apap#属性内容#持续秒数通过 AttributeAPI 添加属性
lycorelycore#属性内容#持续秒数通过 LyCore 添加属性
as-evalas-eval#属性名~表达式#持续秒数计算属性数值后通过 AttrAPI 添加
ap-evalap-eval#属性名~表达式#持续秒数计算属性数值后通过 AttributeAPI 添加
healheal#每次数值#执行次数每 20 tick 回复固定生命值
proportion-healproportion-heal#百分数#执行次数每 20 tick 按最大生命值百分比回复
foodfood#每次数值#执行次数每 20 tick 回复饥饿值
commandcommand#指令#执行次数每 20 tick 执行一次指令
skillapi-manaskillapi-mana#每次数值#执行次数每 20 tick 回复 SkillAPI Mana
skillapi-cdskillapi-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 的类型名称不区分大小写,但建议统一使用文档中的小写名称。
  • 时间参数 it 的单位均为 tick,通常 20 tick 约为 1 秒。
  • 属性效果使用 t 作为持续时间,当前实现不会读取属性效果中的 time
  • healpercent 的比例不会自动除以 100,10 会按最大生命值的 10 倍计算并最终受最大生命值限制。
  • fooda 会转换为整数,小数部分会被舍去。
  • 新版 skillapi-cd 会影响玩家全部已学习技能,不支持填写单个技能 ID。
  • mmskill 直接调用 MythicMobs API,不会通过控制台执行 mm 指令。
  • 同一个药水中不要重复配置相同的 stronger-effect 类型。
  • 不要同时保留作用相同的 effectstronger-effect,否则效果会重复触发。
  • 大量循环效果会分别创建定时任务,应合理设置 ic,避免同时产生过多高频任务。