模块.yml
模块.yml 是副本的扩展页。
这一页不只放“玩法模块”,还同时承载下面四块内容:
玩法模块保护BossBar复活系统
源码当前加载顺序是这样的:
- 目录里有
模块.yml,就优先从这里读 - 没拆这个文件,也可以把同名区块继续写回
main.yml
正式副本建议单独拆出来。后面调玩法、调保护、调复活,不会把 main.yml 挤得很乱。
一份常用示例
yaml
玩法模块:
计时竞速:
启用: true
自动分段: true
排行榜容量: 50
保护:
命令保护:
模式: 白名单
列表:
- /dm
- /msg
- /r
拒绝提示: '&c副本中不可使用这个命令'
掉线保护:
启用: true
重连超时: 300
BossBar:
启用: true
标题: '&6{dungeon_name} &7| &e{stage_name} &7| &c剩余 {remaining_time}'
颜色: RED
样式: SOLID
进度: '1.0'
刷新间隔: 20
复活系统:
启用: true
次数模式: 共享
总次数: 3
自动复活:
启用: true
延迟: 5
位置: 出生点玩法模块
玩法模块 下面每个子项的名字,就是模块 ID。
只有写了 启用: true 的模块才会真正加载。
yaml
玩法模块:
奖励加成:
启用: true
层进系统:
启用: true当前源码内置的玩法模块
| 模块 ID | 用途 | 常见字段 |
|---|---|---|
奖励加成 | 按条件给结算奖励加倍率 | 叠加模式、规则 |
冷却递增 | 处理重进冷却和副本内自定义冷却 | 重进冷却、副本冷却、连败脚本、连胜脚本 |
死亡抉择 | 玩家死亡后弹出聊天抉择 | 超时、标题、底部文字、抉择 |
掉落组背包 | 掉落先进入临时背包,通关后并入保险箱 | 容量、失败策略、提前存入 |
层进系统 | 做爬塔、多层推进、随机层、无尽轮次 | 模式、层、层池、难度递增 |
中途结算 | 做检查点、投票继续、途中带奖离场 | 投票模式、失败惩罚、检查点 |
计时竞速 | 竞速计时、分段、排行榜 | 自动分段、排行榜容量、分段点 |
玩法模块配置示例
奖励加成 适合做周常本、挑战本、隐藏条件奖励。
yaml
玩法模块:
奖励加成:
启用: true
叠加模式: 乘法
规则:
无死亡:
显示名称: '全队无死亡'
条件: '@dungeon.alive == @dungeon.player_count'
倍率: 1.5
限时通关:
显示名称: '限时通关'
条件: '@dungeon.elapsed <= 600'
倍率: 1.2计时竞速 适合做冲榜、速通、公会竞赛。
yaml
玩法模块:
计时竞速:
启用: true
自动分段: true
排行榜容量: 100
分段点:
一号Boss:
显示名称: '一王'
二号Boss:
显示名称: '二王'层进系统 适合做塔、防线、无尽轮次。
yaml
玩法模块:
层进系统:
启用: true
模式: 固定
层:
第一层:
显示名称: '开场层'
第二层:
显示名称: 'Boss 层'保护
保护 当前源码里实际有三块:
命令保护GUI保护掉线保护
命令保护
| 字段 | 说明 |
|---|---|
模式 | 白名单 或 黑名单 |
列表 | 命令列表,支持前缀匹配 |
拒绝提示 | 玩家被拦下时看到的消息 |
最稳的做法通常是白名单,只放聊天回复和管理所需命令。
GUI保护
| 字段 | 说明 |
|---|---|
模式 | 黑名单 或 白名单 |
列表 | GUI 匹配规则 |
拒绝提示 | 被拦下时的提示 |
拒绝脚本 | 拦截时执行一次的公共脚本 |
拒绝玩家脚本 | 拦截时对该玩家执行的脚本 |
列表 当前支持三种写法:
- 直接写文字,按 GUI 标题包含判断
regex:表达式,按正则匹配标题type:CHEST这种写法,按 Bukkit 容器类型匹配
掉线保护
| 字段 | 说明 |
|---|---|
启用 | 是否开启掉线保护 |
重连超时 | 等待玩家回来的秒数 |
重连脚本 | 玩家回到副本后执行的脚本 |
开了掉线保护后,副本不会因为临时掉线马上把人清出去。对正式服多人本很重要。
这里不包含什么
物品限制 虽然也属于保护思路,但它不是 模块.yml 的内容,还是在 main.yml 里单独配置。
BossBar
BossBar 也接受别名 Boss血条。
| 字段 | 说明 |
|---|---|
启用 | 是否启用 |
标题 | BossBar 标题文本 |
颜色 | 条颜色,直接用 Bukkit 颜色名 |
样式 | 条样式,直接用 Bukkit 样式名 |
进度 | 进度表达式 |
刷新间隔 | 刷新频率,单位 tick |
标题里当前常用占位有这些:
{dungeon_name}{dungeon_id}{stage_name}{elapsed_time}{remaining_time}{player_count}{alive_count}{total_count}{floor_current}{floor_total}{floor_name}{floor_cycle}
进度 使用表达式,不走文字占位。最简单可以先写成 1.0,确认样式稳定后再慢慢做动态进度。
复活系统
复活系统 负责副本内死亡后的整套恢复流程。
顶层字段
| 字段 | 说明 |
|---|---|
启用 | 是否启用复活系统 |
次数模式 | 共享 或 独立 |
总次数 | 复活次数。小于 0 时等于无限次 |
复活脚本 | 玩家成功复活后执行 |
死亡脚本 | 玩家死亡后执行 |
次数耗尽脚本 | 次数打空后执行 |
灵魂自由移动 | 死亡后是否允许自由飘动 |
灵魂活动范围 | 不允许自由移动时的活动半径 |
自动复活
| 字段 | 说明 |
|---|---|
启用 | 是否开启 |
延迟 | 延迟多少秒复活 |
位置 | 出生点、原地、脚本 |
道具复活
| 字段 | 说明 |
|---|---|
启用 | 是否开启 |
物品ID | 复活道具 ID |
消耗数量 | 每次消耗多少 |
不扣次数 | 使用道具时是否不占复活次数 |
位置 | 出生点、原地、脚本 |
队友复活
| 字段 | 说明 |
|---|---|
启用 | 是否开启 |
读条时间 | 队友复活读条秒数 |
距离 | 允许的复活距离 |
不扣次数 | 队友救起时是否不占复活次数 |
位置 | 出生点、原地、脚本 |
如果你把位置写成 脚本,源码当前不会主动传送复活玩家,位置处理要靠 复活脚本 自己完成。
配置建议
- 第一个正式本先开最少的模块,跑稳以后再继续叠玩法。
保护和复活系统优先配,尤其是多人本。- 竞速、层进、中途结算这类模块会明显改变副本节奏,别一次全开。
- 有多个玩法模块时,命名和变量要收敛,不然后面排错很容易串。