JCRW 任务书
FABRIC · 1.17.1–1.21.1 / FORGE · 1.18.2–1.21.1

一只原版箱子
装你的分数与任务

聊天栏敲 /jcrw,直接弹出一个原版 3 行箱子:第一行是页签,一本书是个人信息,一块告示牌是任务。不是仿造的界面,贴的就是原版箱子贴图。

版本 v0.1.1Fabric / Forge 双平台Fabric 需 Fabric API客户端 + 服务端
JCRW 任务书v0.1.1

176 × 166 · 与原版箱子逐格对齐 · 点页签可切换,悬停纸张看分数

界面

三层,都在格子里

界面尺寸 176×166,容器槽位从 y=18 起、玩家背包 y=84、快捷栏 y=142,和 GenericContainerScreen 完全一致。所以边框、槽位凹槽、底部高光全部来自原版 generic_54.png,没有任何自绘的灰格子。

1.20.4 游戏内的任务书界面实拍
1.20.4 实机:/jcrw 打开后的界面,聊天栏回显分数已设置
页签行:箭 / 书 / 牌

第一行就是页签。箭是返回,书开个人信息,告示牌开任务;当前页那格有一圈白色细框,不用猜自己在哪一页。

个人信息:一张纸

中间的纸就是分数卡。鼠标停上去才显示「分数:N」,移开就收起——界面平时保持安静。

任务:一块告示牌

任务页中间是任务牌,左右两格先留空位——那是之后要做的两个对话,现在点开只会提示「待开发」。

槽位只读

所有格子都不能放东西、也不能取东西:点击不会产生任何物品移动。它不会被当仓库用,也不会变成刷物品的漏洞。

命令

三个命令,够用了

/jcrw打开任务书界面;顺手确保记分板目标 jcrw_score 存在。
/jcrw score查看自己当前分数。
/jcrw score <数字>设置自己的分数,用来验证纸张上的数字。以后接任务系统,改成任务奖励写入同一目标即可。
安装

三步进游戏

01
装好运行环境

Fabric:Loader 0.14.21 或更高 + 对应版本的 Fabric API。Forge:1.18.2 用 40.3.12、1.19.2 用 43.4.0、1.19.4 用 45.4.5、1.20.1 用 47.3.0、1.20.4 用 49.2.13,不需要额外前置。都放进 mods/。

02
放入模组

按平台和游戏版本取对应的包丢进 mods/:jcrw-<mc> 是 Fabric 版,jcrw-forge-<mc> 是 Forge 版,Fabric 的包装在 Forge 上不会加载。

03
开界面试分数

进游戏输入 /jcrw,箱子界面弹出;再输入 /jcrw score 42,回个人信息页把鼠标移到纸上。

下载

v0.1.1 · 1.17.1 – 1.21.1,双平台

Fabric 七版、Forge 六版(1.17.1 暂缺 Forge),全部共用同一个 mod 版本号与同一套界面内容,只有加载器与渲染 API 的写法不同:1.20.4 用 GuiGraphics,1.19.4 / 1.18.2 用 PoseStack(1.19.4 的 renderGuiItem 需要 PoseStack 参数,1.18.2 不需要)。版本号相同就意味着内容相同——像 MTR 那样,某个游戏版本升到 4.0.0,其它版本也得跟着到 4.0.0,不许停在 3.2.3;三个工程共用一个 version.txt,并由脚本校验内容一致。下载地址按 mod 版本号分目录(现在是 downloads/v0.1.1/,以后每个版本一个目录、旧目录不删),表内按游戏版本 1.17.1 → 1.21.1 升序排列。源码压缩包里是十三套完整的 Gradle 工程、共用源码目录和一致性检查脚本。

目标版本文件大小下载
1.17.1 · Fabricjcrw-1.17.1-0.1.1+1.17.1.jar18.7 KB模组
1.18.2 · Fabricjcrw-1.18.2-0.1.1+1.18.2.jar18.7 KB模组
1.18.2 · Forgejcrw-forge-1.18.2-0.1.1+1.18.2.jar18.9 KB模组
1.19.2 · Fabricjcrw-1.19.2-0.1.1+1.19.2.jar18.8 KB模组
1.19.2 · Forgejcrw-forge-1.19.2-0.1.1+1.19.2.jar19.0 KB模组
1.19.4 · Fabricjcrw-1.19.4-0.1.1+1.19.4.jar18.9 KB模组
1.19.4 · Forgejcrw-forge-1.19.4-0.1.1+1.19.4.jar19.1 KB模组
1.20.1 · Fabricjcrw-1.20.1-0.1.1+1.20.1.jar18.9 KB模组
1.20.1 · Forgejcrw-forge-1.20.1-0.1.1+1.20.1.jar19.2 KB模组
1.20.4 · Fabricjcrw-1.20.4-0.1.1+1.20.4.jar19.0 KB模组
1.20.4 · Forgejcrw-forge-1.20.4-0.1.1+1.20.4.jar19.3 KB模组
1.21.1 · Fabricjcrw-1.21.1-0.1.1+1.21.1.jar19.0 KB模组
1.21.1 · Forgejcrw-forge-1.21.1-0.1.1+1.21.1.jar19.3 KB模组
源码jcrw-源码-Fabric+Forge-0.1.1.zip225 KB源码

源码用 JDK 17 + Gradle 8.7 构建:python3 sync.py 分发共用源码并校验内容,./build-all.sh 一次编出三个版本,产物在各自的 build/libs/。

历史版本

按游戏版本 → 平台 → mod 版本三层进入。每个发布过的 mod 版本都单独留档、永久可下,新版本不会把旧包顶掉;旧目录不删,想回旧行为直接在这里取。

1 · 游戏版本
2 · 平台
3 · mod 版本
更新日志

改了什么

2026-11-16
0.1.1 · 加 1.17.1 与 1.21.1

Fabric 补到 1.17.1:ScreenHandlerType 构造器私有,改用 ScreenHandlerRegistry.registerSimple;getWorld() → getServerWorld();close() → onClose()。1.21.1 双平台:Identifier.of、HandledScreens.register、ResourceLocation.withDefaultNamespace,构建需 JDK 21。1.16.5、1.17.1 的 Forge、1.21.4/1.21.8 仍待补。

2026-11-15
0.1.1 · 加 1.19.2 与 1.20.1

补两个主流版本,Fabric / Forge 各五个,仍共用 0.1.1 一个版本号与同一套界面内容;sync.py 与 build-all.sh 一并扩到十个工程。1.19.2 的注册表还是 Registry.SCREEN_HANDLER(Registries 1.19.3 才有),记分板用 getPlayerScore;1.20.1 则要 renderBackground(context) 单参。

2026-11-15
0.1.1 · Forge 三版上线

新增 Forge 1.18.2 / 1.19.4 / 1.20.4:命令走 RegisterCommandsEvent,容器用 DeferredRegister 注册(1.18.2 是 CONTAINERS,1.19.4 起叫 MENU_TYPES),打开界面用 player.openMenu;记分板目标与界面内容跟 Fabric 完全一致,仍是同一版本号。

2026-11-14
0.1.1 · 新增 1.18.2,定下三版本同步规则

加入 Minecraft 1.18.2 支持;版本号改为单一来源 version.txt,界面右上角直接读模组元数据;新增 sync.py 把共用源码分发到三个工程并校验界面内容一致,三版必须同号同内容。

2026-11-14
0.1.0 · 材质换成原版箱子

界面改为直接贴 generic_54.png 两段式绘制,槽位坐标改成原版 3 行箱子;去掉自绘灰格与「物品栏」文字,悬停改为原版槽位高亮。

2026-11-14
0.1.0 · 首个版本

/jcrw 命令、页签切换、个人信息页与返回箭头、纸张悬停显示记分板分数、1.19.4 与 1.20.4 双版本。

接下来

还没做的两件事

任务页的两格还只是占位;「版本功能」(把真实版本号与更新内容做进界面里)也只有右上角一个版本标签。这两块已经预留好接口,接着加不会推翻现有结构。

01版本功能:把版本号与更新内容做成界面里可翻看的一页
02任务页的两个对话:从占位格进子页面,返回箭头自动生效