Skip to content

EmakiCodex

EmakiCodex 是 Emaki 系列的原版成就图鉴模块。它通过 advancements/*.yml 定义成就页与节点,把节点注册为原版 Advancement,并支持命令、CoreLib Action、公开 API 与事件触发器授予或撤销节点。

安装 PacketEvents 时,EmakiCodex 会额外启用客户端成就树坐标注入与在线玩家重推能力;未安装 PacketEvents 时,成就仍会注册为原版 Advancement,但节点位置由客户端按 parent 树自动排布,在线玩家可能需要重新登录才能看到刚重载后的成就树变化。

基本信息

项目
模块版本1.0.0
API Jaremaki-codex-api-1.0.0.jar
主类emaki.jiuwu.craft.codex.EmakiCodexPlugin
主命令/codex
别名/ecodex
硬依赖EmakiCoreLib
软依赖PlaceholderAPI、PacketEvents、MythicMobs
最低服务端Paper 1.21.8+(api-version: 1.21.8folia-supported: true
JavaJava 25
主要权限emakicodex.use(默认 true)、emakicodex.reload(op)、emakicodex.debug(op)、emakicodex.admin(op)

功能页面

页面内容
命令与权限/codex/ecodex 的可用子命令、权限和示例。
配置详解config.yml 的全局开关与 lang/*.yml 语言文件。
成就页定义advancements/*.yml 的页面与节点字段、节点 key 规则、坐标规则与完成动作。
事件触发器triggers.entries 的写法、可用触发器变量与条件组示例。
CoreLib 动作EmakiCodex 注册到 CoreLib ActionRegistry 的动作。
API 与集成第三方插件通过 emaki-codex-api 调用 Codex 的方式。

核心能力

  • 原版 Advancement 图鉴:一个 advancements/*.yml 文件就是一个原版成就标签页,节点 key 形如 emakicodex:<page>/<node>
  • 手动授予/撤销:管理员可用 /codex grant/codex revoke 管理在线玩家节点进度。
  • 动作链授予:其他插件可在 CoreLib Action 中调用 codex_grant_advancementcodex_revoke_advancementcodex_reset_page 等 Codex 动作。
  • 事件触发器:节点可配置 triggers.entries,监听击杀、合成、熔炉取出、钓鱼、酿造、驯服、破坏方块、收割成熟作物等 CoreLib 共享 gameplay 事件。
  • 完成动作:节点完成后执行 actions.complete 中的 CoreLib Action,例如发送消息、发放奖励或触发其他模块逻辑。
  • PacketEvents 坐标通道:安装 PacketEvents 且开启 advancement.packet-coordinates 时,节点 x / y 会写入客户端成就界面位置。

文件结构

服务器运行后,EmakiCodex 主要使用以下文件:

text
plugins/EmakiCodex/
├─ config.yml
├─ advancements/
│  └─ example_page.yml
└─ lang/
   ├─ zh_CN.yml
   └─ en_US.yml
路径说明
config.yml主配置,控制默认资源释放、Advancement 注册、PacketEvents 坐标注入和触发器总开关。
advancements/*.yml成就页配置。每个文件定义一个页面、一个根节点和任意数量子节点。
lang/*.yml命令、重载和控制台提示文本。

快速开始

  1. EmakiCoreLib-*.jarEmakiCodex-*.jar 放入服务器 plugins/
  2. 不要把 emaki-codex-api-*.jar 放进服务器 plugins/;API Jar 只给开发者作为编译依赖使用。
  3. 首次启动后查看 plugins/EmakiCodex/advancements/example_page.yml
  4. 修改或新增成就页后执行:
text
/codex reload
  1. 测试授予示例节点:
text
/codex grant Steve example/first_step

完整 key 也可写成:

text
/codex grant Steve emakicodex:example/first_step

成就页配置速览

一个 advancements/*.yml 定义一个成就页:

  • 页面级:page_id(key 路径前缀)、titlebackgroundroot
  • 节点级:icontitledescriptionframeparentx / ytoastannouncehidden
  • 节点完成动作写在 actions.complete,事件触发器写在 triggers.entries。触发条件使用 CoreLib 标准条件组:condition.type + condition.entries

节点会注册为 emakicodex:<page_id>/<node_id>。完整字段表、key 规则与坐标规则见成就页定义,触发器变量与条件组示例见事件触发器

使用提示

  • EmakiCodex 当前聚焦原版成就图鉴,不再提供配方/JEI 传递功能。
  • 节点完成条件统一由 Codex 授予:命令、Action、公开 API 或触发器会奖励内部 codex criterion。
  • actions.complete 只会在节点首次完成时触发;重复授予已完成节点不会重复执行完成动作。
  • 如果开启坐标,建议同一成就页全部节点都配置 x / y,避免“部分显式坐标 + 部分自动排布”导致重叠。