跳到正文

配置总览与重载

SealAttributes 只读取 plugins/SealAttributes/ 下八份业务 YAML。所有文件都使用 config-version: 1,并对代码实际读取的键进行类型、范围、枚举和跨字段校验;attributes、Profile、GUI 分组等结构还会拒绝非法键。

文件职责

文件职责通常能否 /sa reload
config.yml语言、权威模式、基础 Profile、诊断
attributes.yml22 项内置属性显示元数据、默认值、启用状态、基础 Profile
combat.yml随机、防御、格挡、攻速、rating、反伤、恢复、容量
sources.yml内置装备读取、结构化 PDC、Lore 规则是;SealItems 已绑定时不能热切换内置读取器
display.yml生命条、移速、重生、格式化、全息、原版效果
gui.yml属性 GUI、七个分类按钮和材质
messages.yml命令消息
database.yml后端、连接池、队列、超时、检查点、迁移确认部分;连接/池/worker/容量必须重启

datasource.yml 是 TabooLib 内部桥接,不属于业务配置,不要编辑。

原子重载

text
/sa reload

重载流程是:后台读取八份候选文件 → 完整校验 → 主线程准备新 Core/storage/root/listeners → 原子提交。任何一步失败都保留整套旧状态;不会出现“属性新了、战斗还是旧的”这种半重载。已有重载正在执行时返回 busy。

必须完整重启的变更

  • database.type、SQLite 文件、MySQL 端点/账户/TLS;
  • pool 全部字段;
  • queue.storage-threadsqueue.capacity
  • 安装、删除、替换 extensions/*.jar
  • SealItems provider 已绑定时切换 built-in-equipment-reader.enabled
  • 数据库 schema 迁移和 migration.mysql-backup-confirmed 的实际使用;
  • 主插件 JAR、服务端、Java 或软依赖版本。

编辑流程

  1. 复制八份 YAML 和数据库备份;
  2. 一次只改变一组相关键;
  3. 保存 UTF-8 YAML;
  4. /sa reload
  5. inspectsourcesdoctor 和实际战斗验证;
  6. 重启必需项在维护窗口完整停服后改;
  7. 保留成功前后的配置差异和日志。

严格校验示例

错误枚举:

yaml
combat-mode: VANILLA_PLUS

仅支持 AUTHORITATIVE,候选配置会被拒绝。

错误固定值:

yaml
structured:
  pdc-key: myplugin:attributes

PDC 键固定为 sealattributes:item_attributes,不能自定义。

错误跨字段:

yaml
pool:
  minimum-idle: 4
  maximum-pool-size: 2

最小空闲不能大于池上限。

不要用未知键猜功能:

yaml
diagnostics:
  enabled: true
  verbose: true # 不存在

普通区段中的额外键可能被当前加载器忽略,而不是报错或生效;结构严格的区段则会拒绝。无论哪种结果,verbose 都不是能力开关。只使用本文与当前默认资源列出的键。

YAML 注意事项

  • 布尔值用 true/false,不要用 yes/no
  • 含冒号、#、MiniMessage 标签或前导空格的消息建议加引号;
  • 属性值必须有限;
  • 配置键区分大小写;枚举按文档使用大写;
  • attributes: {} 合法,表示所有内置属性使用代码默认定义;
  • 禁止用 Bukkit /reload 代替插件自己的原子重载。

Minecraft 服务端插件使用与开发文档