配置详解
EmakiCodex 的配置分为主配置、原版成就页配置、分类条目配置、GUI 模板和语言文件。本页说明 config.yml、codex/*.yml、gui/codex_gui.yml 与 lang/*.yml:
config.yml:全局开关、默认资源释放、原版成就注册和 PacketEvents 坐标通道。codex/*.yml:分类、条目、解锁条件和奖励;与advancements/*.yml的page_id是独立命名空间。gui/codex_gui.yml:分类条目 GUI 布局和占位符。lang/*.yml:命令、GUI 与控制台提示。
advancements/*.yml 的页面与节点字段见成就页定义,分类条目 GUI 见分类条目 GUI,两类自动解锁触发器见事件触发器。
config.yml
默认主配置:
yaml
version: "1.0.5"
language: "zh_CN"
release_default_data: true
op_bypass: false
advancement:
enabled: true
announce_default: false
remove_on_disable: true
packet_coordinates: true
triggers_enabled: true字段说明:
| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
version | string | 1.0.5 | 配置结构版本标记;默认资源版本由资源同步流程维护。源码内部迁移常量另为 1.0.14,不要混用。 |
language | string | zh_CN | 使用 lang/<language>.yml 语言文件。 |
release_default_data | boolean | true | 缺失默认示例数据时是否释放内置 advancements/example_page.yml 与 codex/example_category.yml 等资源。 |
op_bypass | boolean | false | 为 true 时,OP 可在命令权限检查中走旁路;为 false 时仍必须拥有对应权限节点。 |
advancement.enabled | boolean | true | 是否启用原版 Advancement 注册。 |
advancement.announce_default | boolean | false | 节点没有单独配置 announce 时,是否默认全服广播。 |
advancement.remove_on_disable | boolean | true | 插件禁用时是否移除已注册的动态成就。/codex reload 的重建流程始终会先清理本插件命名空间再注册,不受此开关控制。 |
advancement.packet_coordinates | boolean | true | 安装 PacketEvents 时,是否把节点 x / y 注入客户端成就树。该开关只在插件启用时决定是否注册 PacketEvents 监听,运行中切换需重启。 |
advancement.triggers_enabled | boolean | true | 是否启用 triggers.entries 自动授予。关闭后只能通过命令、API 或 CoreLib Action 手动授予;分类条目的 unlock.triggers 也不会自动解锁。 |
分类条目文件 codex/*.yml
每个文件定义一个 GUI 分类;文件名不参与 id 识别,分类 id 取 category_id。条目的复合 id 固定为 <category_id>/<entry_id>,例如 example/first_blood。
yaml
category_id: "example"
title: "<gold>试炼图鉴</gold>"
icon: "minecraft-book"
order: 100
entries:
first_blood:
title: "<yellow>初次讨伐</yellow>"
description: "<gray>击败任意敌对生物。</gray>"
icon: "minecraft-iron_sword"
hidden: false
unlock:
triggers:
- event: "entity_kill"
advancements: []
rewards:
attributes:
physical_attack: 2.0
actions:
- "send_message text=<green>已领取初次讨伐的奖励。</green>"| 字段 | 类型 | 说明 |
|---|---|---|
category_id | string | 分类 id;为空时整份文件跳过。 |
title | MiniMessage string | 分类标题;GUI 分类标签使用。 |
icon | ItemSource string | 分类图标。 |
order | integer | 分类标签排序权重,升序。 |
entries | map | 条目定义,键名是条目 id。 |
entries.<id>.hidden | boolean | 未解锁时是否隐藏;为 false 时显示未知条目。 |
entries.<id>.unlock.triggers | list | 共享事件触发器;省略 condition 表示事件发生即命中。 |
entries.<id>.unlock.advancements | list | 原版 Advancement id 列表;任一声明命中即可解锁。 |
entries.<id>.rewards.attributes | map | 属性名到数值的映射。条目激活后实时提供,不把数值快照写入玩家文件。 |
entries.<id>.rewards.actions | list | 领取时执行一次的 CoreLib Action 行;领取状态写入玩家文件后再执行。 |
unlock.triggers 与 unlock.advancements 是并列通路,任一通路成功即可把条目变为“已解锁”。解锁、激活、领取互相独立:解锁不会自动激活,激活不会自动执行一次性领取动作。
语言文件
语言文件位于 lang/*.yml。默认包含:
yaml
version: "1.0.5"
general:
prefix: "<gray>[ <gradient:#D946EF:#F59E0B>EmakiCodex</gradient> ]</gray>"
no_permission: "<red>你没有权限执行此操作。</red>"
command:
help:
commands:
reload: "重载配置、重注册成就并给全员重发成就"
grant: "授予玩家成就"
revoke: "撤销玩家成就"
debug: "管理 Debug 模式"语言文本支持 MiniMessage。修改后执行 /codex reload。
修改 config.yml、advancements/*.yml、codex/*.yml、gui/codex_gui.yml 与 lang/*.yml 后,执行 /codex reload 应用变更。玩家的 data/<uuid>.yml 不会因 reload 清空。
相关页面
- 成就页定义:
advancements/*.yml的页面与节点字段、key 规则与完成动作。 - 分类条目 GUI:分类文件与 GUI type、四态状态和奖励操作。
- 事件触发器:原版
triggers.entries与分类unlock.triggers的写法、可用事件与条件组示例。 - 命令与权限:
/codex reload、原版授予/撤销和分类条目管理。 - CoreLib 动作:在动作链中授予、撤销或广播成就。