一本只查 CraftEngine 自定义物品配方的查询书。首次进服自动发放,右键打开按 CE 附属内容包分类的界面;也支持用指令直接查配方。附带完整的自制资源包(书本外观 + 查询界面图标,16×16 像素风)。
- 只收录 CE 配方:数据来自 CraftEngine 自己的
BukkitRecipeManager,既不混入原版工作台配方,也不会漏掉 CE 自定义配方。 - 开局自动发书:首次进服发放一本,UUID 记录在
plugins/RecipeQuery/received.txt;背包满时掉落在脚边。 - 三级导航界面:
选择附属包 → 分类内物品 → 配方详情,展示 3×3 有序合成摆位、产物数量、多配方翻页、铁砧搜索(跨全部分类)。 - 自动适配 CE 附属包:分类不写死包名,扫描
plugins/CraftEngine/resources/*/pack.yml发现内容包。以后新增任何 CE 附属包,只要它有配方产物,执行/recipequery就会自动成为新分类,无需改代码、无需重启。 - 中文名自动提取:兼容 4 种 CE 语言键格式,自动取简中名;常见原版原料也有中文映射。
- 指令查询:不打开界面也能在聊天栏直接看配方。
| 组件 | 版本(开发与验证环境) |
|---|---|
| 服务端 | Paper 26.1.2 build 74 |
| Java | 25(class file version 69) |
| CraftEngine | 26.9.2,load: STARTUP |
插件通过反射调用 CE API,编译期不需要 CE 源码,但运行时必须装有 CraftEngine。CE 大版本升级若改了内部类名,可能需要调整 CraftEngineBridge 的反射路径。
-
把
dist/RecipeQuery.jar放到服务端plugins/(或从源码编译,见「从源码编译」)。 -
把
resourcepack/recipequery/整个目录复制到plugins/CraftEngine/resources/recipequery/。 -
让 CraftEngine 重新生成资源包并发布:
ce workflow default如果你有自定义资源包合并流程,把
assets/recipequery/合并进最终 zip 即可。 -
确认
server.properties的resource-pack指向新 zip,并同步更新resource-pack-sha1,然后重启服务器。 -
进服应自动获得一本「配方查询书」,右键即可打开。
⚠️ 最终资源包里必须同时包含 CE 自动生成的assets/recipequery/items/*.json(item 定义)和本仓库的models/+textures/。缺了前者书本会显示成原版纸,缺了后者界面图标会变成默认材质。
| 命令 | 说明 | 权限 | 默认授予 |
|---|---|---|---|
/recipebook |
领取一本查询书(背包已有则提示,不会重复刷) | recipequery.book |
所有人 |
/recipebook <玩家> |
给指定在线玩家发一本 | recipequery.book.others |
OP |
/recipelookup <名称或ID> |
聊天栏直接输出匹配物品的配方 | recipequery.lookup |
所有人 |
/recipequery |
重建配方数据库并输出自检 | recipequery.reload |
OP |
别名:/getrecipebook、/rqbook、/celookup、/rqfind。
/recipelookup 支持中文物品名或 namespace:id 模糊匹配:
/recipelookup 炼金催化器
/recipelookup botania:alchemy_catalyst
输出示例:
◆ 炼金催化器 [botania:alchemy_catalyst] 有序合成 x1
原料:活石 x4 / 金锭 x2 / 酿造台 x2 / 魔力珍珠 x1
最多展示前 5 个结果(命中上限 40 个),想完整浏览请用界面或更精确的关键词。
- 右键查询书 → 分类页(全部物品 / 各 CE 附属包)
- 点击分类 → 物品列表 → 点击物品查看配方详情
- 底部工具栏:上一页 / 搜索 / 下一页 / 返回上一层
- 搜索使用铁砧输入名称,跨全部分类查找
- 同一物品有多种配方时,点「下一个配方」翻页
首次运行会在 plugins/RecipeQuery/categories.yml 自动生成(示例见 config/categories.example.yml)。通常不需要改,只有「改名」或「合并分类」才需要编辑;改完执行 /recipequery 即生效,无需重启服务器。
names: # 分类显示名,key 可以是 namespace 或分组名
senluo: 森罗物语
botania: 植物魔法
groups: # 把多个 namespace 合并成一类
senluo:
- kaleidoscopecookery
- default
exclude: # 不纳入查询书的 namespace
- minecraft
- recipequery显示名优先级:names 配置 > 内容包里的 category.<ns>.catalog 中文名 > pack.yml 的 description > namespace 原名。
Pylon / Rebar / Slimefun / Steamwork 等是独立 Bukkit 插件,不是 CE 内容包,既不在
resources/下也没有 CE 配方产物,因此不会出现在这里,也不要给它们写分类名。
build.sh 需要本机 JDK 25,以及一台装有 CraftEngine 的 Paper 服务端目录(用来提供编译期 API jar):
SERVER_DIR=/path/to/paper-server JDK=/opt/jdk/jdk-25 ./build.sh
# 产物:build/RecipeQuery.jar脚本会自动从 SERVER_DIR/libraries 收集 paper-api、adventure-api/key、jetbrains annotations、guava、jspecify、bungeecord-chat 等 jar,并加上 plugins/craft-engine-*.jar。运行时只依赖服务端 + CraftEngine,不需要把这些 jar 打包进插件。
src/com/recipequery/ Java 源码与 plugin.yml
├── CraftEngineBridge.java CE API 反射桥接(物品 + 配方管理器)
├── RecipeDatabase.java 配方数据库、中文名提取、分类构建
├── CategoryResolver.java 自动发现 CE 内容包、分类名/归并/排除
├── RecipeInfo.java 单条配方展示信息
└── RecipeQueryPlugin.java 发书、GUI、搜索、指令
resourcepack/recipequery/ 自制 CE 内容包(书本与界面物品)
├── pack.yml
├── configuration/item/items.yml
├── configuration/lang/zh_cn.yml
└── resourcepack/assets/recipequery/{models,textures}/item/
tools/gen_textures.py 重新生成 8 张 16×16 贴图与模型 JSON
config/categories.example.yml 分类配置示例
docs/ 界面与贴图预览图
dist/RecipeQuery.jar 可直接使用的成品
8 个自定义物品:recipe_book(书本外观)、ui_filler、ui_arrow、ui_prev、ui_next、ui_back、ui_search、ui_title(界面图标)。全部为 16×16 像素画,深蓝石板 + 金色镶边风格,模型使用 minecraft:item/generated。
重新生成(需要 Pillow):
pip install pillow
python3 tools/gen_textures.py # 默认写回仓库自带资源包目录,并更新 docs/textures-preview.png
python3 tools/gen_textures.py /path/to/assets/recipequery # 或指定别的输出目录也可用环境变量 ASSETS_DIR / PREVIEW_OUT 分别指定贴图目录与预览图输出位置。
- 目前只在 Paper 26.1.2 / CraftEngine 26.9.2 上验证;其它版本的 CE 内部类名可能变化。
- 服务端 0 人在线时无法实测「真人进服发书 + 右键打开界面」;命令、数据层、物品识别、资源包内容均已通过 RCON 自检。
- 仓库不包含任何第三方作者的资源包内容,只包含本自制内容包;服务器合并后的完整资源包请自行通过 CraftEngine 工作流生成。
MIT。自制贴图、模型与代码同样适用。

