配置结构
目录结构(按地牢名分目录)
KModule 会读取插件数据目录的 modules/。
每个子目录名应当等于 DungeonPlus 的地牢名(dungeon.dungeonName)。
示例(地牢名为 map1):
plugins/KModule/
modules/
map1/
level.yml
sub-levels.yml
...你可以继续拆更多 yml
读取规则(很关键)
- KModule 会遍历地牢目录下的所有
*.yml - 每个 yml 的顶层 key会被当作一个“模块定义”(例如
level:、第一关:) - 同一个地牢目录内,顶层 key 不能重名(跨文件也不行),否则会提示存在同名模块
level(总关卡)配置
一个地牢应只有一个 level,负责把子关卡串起来。
level:
type: level
dungeon: map1
sub-levels:
第一关:
priority: 1
第二关:
priority: 2
隐藏关卡:
priority: -1
说明:
dungeon:地牢名(目录名通常也应一致)sub-levels.<子关卡名>.priority:1..n:按数字从小到大顺序运行-1:隐藏子关卡(不会自动启动,需要脚本手动启动)
sub-level(子关卡)配置
第一关:
type: sub-level
start-kether:
- 'title color "&c&l进入第一关" by 0 20 10'
end-kether:
- 'title color "&c&l第一关结束" by 0 20 10'
modules:
gate-1:
type: one-click-executor
probability: 1.0
success-kether:
- 'tell "gate-1 started"'
failure-kether:
- 'tell "gate-1 skipped"'
params:
location: { x: 0, y: 64, z: 0 }
kether:
- 'tell "clicked"'
说明:
start-kether:子关卡启动时,对地牢在线玩家执行end-kether:子关卡结束(被 stop / stopAndNext)时,对地牢在线玩家执行modules:模块实例列表
modules 通用字段
每个模块实例都可使用以下“通用字段”:
type:模块类型(见「模块参考」)params:模块参数(各模块不同)probability(可选,默认1.0):该模块在子关卡启动时按概率是否自动启动success-kether(可选):模块按概率启动成功后执行failure-kether(可选):模块按概率未启动时执行hidden(可选,默认false):隐藏模块(不会自动启动,需要脚本kmodule start "模块名")
常见坑
- 子关卡里引用的
type没有对应激活器:通常是拼写错,或该模块依赖插件缺失 - 报“缺少参数”:模块
params下缺了必填字段,或字段类型不对 - 顶层 key 重名:同一地牢目录中,不同 yml 的顶层 key 不能重复
# TODO: 替换成真实字段
enabled: true