跳到主要内容

资源目录

Monoceros 不是只有一个 config.yml。它的真正强项在于:把脚本、分发器、调度、数据包监听、工作流、命令定义都拆成了独立目录,方便你按模块维护。

首次启动后会生成什么

路径用途
config.yml主配置,控制调试模式、文件监听节流、Wireshark 全局开关
lang/语言文件目录,默认包含 zh_CN.ymlen_US.yml
dispatcher/事件分发器定义
schedule/调度定义
wireshark/Packet Tap 定义
workflow/action/动作工作流定义
command/YAML 命令定义
script/Fluxon 脚本目录,通常由你自己创建和维护

每个目录分别适合放什么

dispatcher/

这里放事件监听规则。你可以在这里定义:

  • 监听哪个 Bukkit 事件
  • 用哪个优先级
  • 命中后路由到哪个脚本或工作流
  • 额外注入哪些变量

如果你想做“玩家进服欢迎逻辑”“交互事件转脚本”“虚拟事件路由”,这一层就是入口。

schedule/

这里放定时或条件触发的调度定义。你可以在这里实现:

  • 固定延迟执行
  • 周期循环执行
  • Cron 表达式调度
  • 自动启动任务

wireshark/

这里放数据包监听与处理规则。适合做:

  • 调试某类发包/收包行为
  • 追踪指定数据包
  • 在确认安全的前提下做拦截或覆写

workflow/action/

这里放动作工作流。适合做:

  • 一次触发后执行多个步骤
  • 条件分支
  • 延迟继续执行
  • 在脚本、调度、分发器之间复用一段流程

command/

这里放 YAML 命令定义。适合做:

  • 自定义命令树
  • 参数限制
  • 路由到脚本、工作流或处理器
  • 按模块拆分命令入口

script/

这里是 Fluxon 脚本目录。大部分真正的业务逻辑,最终都会落在这里。

热重载是怎么工作的

Monoceros 的资源热重载基于两层机制:

  1. 文件监听器:监听目录内文件新增、修改、删除
  2. SHA-256 变更检测:即使文件时间戳变化,也会进一步通过内容哈希判断是不是实际有改动

这意味着:

  • 只改空格、注释或换行,也会被当作一次真实变更
  • 文件新增、删除也能被识别
  • 不依赖“重启服务器”才能生效

文件监听节流

默认节流时间为 500ms,配置项在:

script:
watcher-throttle-ms: 500

节流的作用是:避免你连续保存多个文件时,系统频繁触发多次重载。

如果你把这个值设为 0 或负数,文件监听会被关闭,这时你需要手动执行命令重载。

目录维护建议

  • 一个目录只负责一种资源,不要把脚本、调度、命令混在一起
  • 文件名尽量和实际功能对应,方便生成稳定的资源 ID
  • 功能复杂时,优先拆分为多个小文件,而不是把所有逻辑都塞进一个 YAML
  • 对同一条功能链,建议固定顺序:dispatcher/schedule/ 触发 → workflow/action/ 编排 → script/ 执行业务

如果你想看默认示例文件,可以继续阅读 ../resources/examples.md