EmakiCodex
EmakiCodex 是 Emaki 系列的原版成就图鉴模块。它通过 advancements/*.yml 定义成就页与节点,把节点注册为原版 Advancement,并支持命令、CoreLib Action、公开 API 与事件触发器授予或撤销节点。
安装 PacketEvents 时,EmakiCodex 会额外启用客户端成就树坐标注入与在线玩家重推能力;未安装 PacketEvents 时,成就仍会注册为原版 Advancement,但节点位置由客户端按 parent 树自动排布,在线玩家可能需要重新登录才能看到刚重载后的成就树变化。
基本信息
| 项目 | 值 |
|---|---|
| 模块版本 | 1.0.0 |
| API Jar | emaki-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.8,folia-supported: true) |
| Java | Java 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_advancement、codex_revoke_advancement、codex_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 | 命令、重载和控制台提示文本。 |
快速开始
- 把
EmakiCoreLib-*.jar与EmakiCodex-*.jar放入服务器plugins/。 - 不要把
emaki-codex-api-*.jar放进服务器plugins/;API Jar 只给开发者作为编译依赖使用。 - 首次启动后查看
plugins/EmakiCodex/advancements/example_page.yml。 - 修改或新增成就页后执行:
text
/codex reload- 测试授予示例节点:
text
/codex grant Steve example/first_step完整 key 也可写成:
text
/codex grant Steve emakicodex:example/first_step成就页配置速览
一个 advancements/*.yml 定义一个成就页:
- 页面级:
page_id(key 路径前缀)、title、background、root。 - 节点级:
icon、title、description、frame、parent、x/y、toast、announce、hidden。 - 节点完成动作写在
actions.complete,事件触发器写在triggers.entries。触发条件使用 CoreLib 标准条件组:condition.type+condition.entries。
节点会注册为 emakicodex:<page_id>/<node_id>。完整字段表、key 规则与坐标规则见成就页定义,触发器变量与条件组示例见事件触发器。
使用提示
- EmakiCodex 当前聚焦原版成就图鉴,不再提供配方/JEI 传递功能。
- 节点完成条件统一由 Codex 授予:命令、Action、公开 API 或触发器会奖励内部
codexcriterion。 actions.complete只会在节点首次完成时触发;重复授予已完成节点不会重复执行完成动作。- 如果开启坐标,建议同一成就页全部节点都配置
x/y,避免“部分显式坐标 + 部分自动排布”导致重叠。