跳到主要内容

配置结构

目录结构(按地牢名分目录)

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

常见坑