Skip to content

配置详解

EmakiCodex 的配置分为主配置、原版成就页配置、分类条目配置、GUI 模板和语言文件。本页说明 config.ymlcodex/*.ymlgui/codex_gui.ymllang/*.yml

  • config.yml:全局开关、默认资源释放、原版成就注册和 PacketEvents 坐标通道。
  • codex/*.yml:分类、条目、解锁条件和奖励;与 advancements/*.ymlpage_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

字段说明:

字段类型默认说明
versionstring1.0.5配置结构版本标记;默认资源版本由资源同步流程维护。源码内部迁移常量另为 1.0.14,不要混用。
languagestringzh_CN使用 lang/<language>.yml 语言文件。
release_default_databooleantrue缺失默认示例数据时是否释放内置 advancements/example_page.ymlcodex/example_category.yml 等资源。
op_bypassbooleanfalsetrue 时,OP 可在命令权限检查中走旁路;为 false 时仍必须拥有对应权限节点。
advancement.enabledbooleantrue是否启用原版 Advancement 注册。
advancement.announce_defaultbooleanfalse节点没有单独配置 announce 时,是否默认全服广播。
advancement.remove_on_disablebooleantrue插件禁用时是否移除已注册的动态成就。/codex reload 的重建流程始终会先清理本插件命名空间再注册,不受此开关控制。
advancement.packet_coordinatesbooleantrue安装 PacketEvents 时,是否把节点 x / y 注入客户端成就树。该开关只在插件启用时决定是否注册 PacketEvents 监听,运行中切换需重启。
advancement.triggers_enabledbooleantrue是否启用 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_idstring分类 id;为空时整份文件跳过。
titleMiniMessage string分类标题;GUI 分类标签使用。
iconItemSource string分类图标。
orderinteger分类标签排序权重,升序。
entriesmap条目定义,键名是条目 id。
entries.<id>.hiddenboolean未解锁时是否隐藏;为 false 时显示未知条目。
entries.<id>.unlock.triggerslist共享事件触发器;省略 condition 表示事件发生即命中。
entries.<id>.unlock.advancementslist原版 Advancement id 列表;任一声明命中即可解锁。
entries.<id>.rewards.attributesmap属性名到数值的映射。条目激活后实时提供,不把数值快照写入玩家文件。
entries.<id>.rewards.actionslist领取时执行一次的 CoreLib Action 行;领取状态写入玩家文件后再执行。

unlock.triggersunlock.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.ymladvancements/*.ymlcodex/*.ymlgui/codex_gui.ymllang/*.yml 后,执行 /codex reload 应用变更。玩家的 data/<uuid>.yml 不会因 reload 清空。

相关页面

  • 成就页定义advancements/*.yml 的页面与节点字段、key 规则与完成动作。
  • 分类条目 GUI:分类文件与 GUI type、四态状态和奖励操作。
  • 事件触发器:原版 triggers.entries 与分类 unlock.triggers 的写法、可用事件与条件组示例。
  • 命令与权限/codex reload、原版授予/撤销和分类条目管理。
  • CoreLib 动作:在动作链中授予、撤销或广播成就。