Skip to content

App Reader

HoshinoYumeka edited this page Sep 7, 2026 · 2 revisions

📖 阅读

首页使用手册 | 下一页:✅ 任务书

把整合包里的教程手册全列在一页里。联动 PatchouliGuideME沉浸工程

整合包里的教程书通常有几十本,每一本都是一个物品:想查点什么就得先在仓库里翻出那本书,翻完还得放回去;出门在外想起要看,书多半不在身上。

列表中一行是书名,第二行是它出自哪个模组(玩家找书的思路几乎总是「某某模组那本书」,而不是书名)。行首小图即该书自身的物品图标。


书架与书城

底部两个页签:

页签 内容
书城 整合包里有的全部书,几十本
书架 玩家自己收下的那几本。打开 App 默认停在这里

收藏靠每行右端的 :点一下进书架,再点一下移出。

不用长按、也不另开菜单——长按在这种小屏上没有任何提示,等于把功能藏起来。

说明
收藏存放 config/mcphone/reader/shelf.json
作用域 全局一份,不分存档
换整合包后 当前认不出的书不显示,但不从文件中删除;换回去仍在架上
停留页签 一局之内记住——从书城点开一本书,看完回来仍在书城

按存档分的结果会是"同一个包、换个服务器书架就空了":书来自客户端装的模组,同一个整合包连到哪个服务器都是那几本。

搜索

两个页签顶部都是搜索框,进入该页时它已持有焦点,直接打字即可

可搜三个字段:书名、模组名、模组 id。

中文客户端里书名是中文、出处是英文很常见;只搜一个字段就会出现"我明明记得这个模组叫什么,却搜不到它的书"。

排序规则

结果按分数从高到低排列:

命中方式 分数
书名完全相同 100
书名前缀 80
书名包含 60
模组名前缀 45
模组名包含 35
模组 id 包含 20

书名命中一律排在模组名命中之前——搜「新生」的人要的是那本书,不是"出自某个名字里带新生的模组"的一堆书。

多个词

用空格分开,是的关系,各词可以命中不同字段(例:ars 笔记)。

任一词未命中,整本即不算命中;整本的分数取最弱那一项的分。

右上角的数字在搜索时变为「命中 / 总数」。

按键

这一页吃掉所有按键(含背包键),与记事本、设备命名几页相同:打拼音必然按到 e,不吃掉就成了开背包。ESC 照旧直接关机。

尚未实现拼音搜索(xsmy → 新生魔艺),那需要一张拼音表。

翻书仍由原模组完成

点开一本书后,接管屏幕的是它自己的界面,进度、已读标记、条目锁定全部对得上,与在背包里右键该书一致。

本模组只提供目录:Patchouli 的书界面是 272×180,手机屏幕只有 120×200,放不下;而自行重画就要把它几十种页面类型重新实现一遍,它一改版即断。

合上书后按 ESC 回到游戏;下次开机手机直接停在书架上。


三种书源

来路 收录方式 典型例子
Patchouli 扫描 绝大多数教程书
GuideME 自动发现 AE2、现代化工艺
白名单 写死一份名单 沉浸工程《工程师手册》

GuideME:一次全收

AE2 的作者把自家手册系统拆成了独立模组 GuideMEAE2现代化工艺都硬依赖它。

GuideME 自身即具备"列出全部手册"的能力,因此这一支是自动发现——不写死任何一本书的 id,将来第三、第四个模组接上它,书城里自动就有。

点开走的是它手册物品右键那条路,因此在手机里点开与在背包里右键进入的是同一个界面、同一段历史。图标是它为每本手册创建的那个物品。

白名单:非 Patchouli 的手册

有的模组自写了一整套手册系统,与 Patchouli 无关,扫描扫不出来——**沉浸工程的《工程师手册》**是第一个。

这类书走一份写死的白名单,每条记录它出自哪个模组、用哪个物品作图标与书名、以及如何打开。打开走的是它自己物品右键那条路ManualHelper.getManual().getGui()),连"停在上次看的那一页"都一致。书名取自该物品的名称,与背包、JEI 中显示的是同一行字。

新增一个模组:写一个 ExternalBook 实现,向 ExternalBookSource 的白名单加一行。对方未安装时自动跳过。

无对应物品的书

有些模组的书是 no_book 的,游戏内没有对应物品,只能用命令打开。它们在这里同样列出并可打开,图标使用默认的书。

书籍特例

有些模组把自己的手册整个换掉了,Patchouli 中只剩一本无人维护的旧书。这类由「书籍特例」层处理,它能做三件事:把某本书从架上移除、改写其显示、接管"点开之后打开什么"。

目前只有一条——新生魔艺(Ars Nouveau):它 5.x 起换成了自研文档系统,右键笔记本打开的是那个界面,但 jar 中仍留有一本 Patchouli 书(条目只有英文,内容停在换系统那天)。因此在手机里点它的笔记本,打开的是它自己的文档界面

新增一条:写一个 BookQuirk 实现,加入 BookQuirks 的名单。对方未安装时自动跳过。

特例与白名单的分别:特例管的是"这本书扫出来了,但要特殊对待";白名单管的是"这本书根本扫不出来,得主动报上去"。特例层刻意没有"凭空多出一本书"的能力,正是为了把这两件事分开。

这类代码一律走反射、不加编译依赖:为一个方法引入几十 MB 的前置不值,且断了要能退回默认行为(打开那本遗留的 Patchouli 书),不能变成一个点了没反应的死按钮。


首页使用手册 | 上一页:🌐 浏览器 | 下一页:✅ 任务书

Clone this wiki locally