
设置 搜索( 所有模组兼容 )
每个选项屏幕的右上角都会出现一个放大镜按钮,在每一个标签页上都有,可以从主菜单和游戏世界中访问。
查看大图现代 Minecraft 意味着原版就有十几个选项界面和上百项设置。再加上三十个模组,每个都带来自己的菜单、自己的开关,有时还藏在三级菜单之下。要找到"模拟距离"或"那个关掉某个模组粒子的选项",简直成了一场寻宝。
Settings Search(设置搜索)用输入框替代了这场寻宝。
使用方法
打开搜索
- 任意选项界面右上角的放大镜按钮。
- 在任意选项界面按 Ctrl + F。
- 专用快捷键(默认未绑定),可在控制 → 杂项中设置,从游戏中直接打开搜索。
搜索
输入文字,列表会实时过滤。每个结果都会显示设置名称及其所在界面,并带有所属模组前缀。使用 ↑ ↓ 方向键移动选择,按 Enter 确认,或者直接点击。
跳转
点击结果会打开对应的界面,将列表滚动到该设置处,并用闪烁的黄色轮廓框选几秒钟。"完成"按钮会带你回到搜索前所在的位置。
搜索本身
- 不区分大小写和重音。 "luminosite" 能匹配到 "Luminosité"。
- 模糊匹配。 "rd" 能匹配到 "Render Distance"(渲染距离),"part dens" 能匹配到 "Particle Density"(粒子密度)。
- 多词匹配,顺序不限。 "mouse sensitivity"(鼠标灵敏度)和反过来写效果一样。
- 天生支持双语。 翻译键与显示的标签同时建立索引:搜索 "gamma" 能找到 "亮度",同样地,在法语版游戏中用英文查询也能生效。
- 延伸到描述文本。 提示文本也会被搜索,但其权重较低,不会盖过名称的匹配结果。
- 包含按键绑定。 按键绑定会连同其当前分配一起被索引:搜索 "jump"(跳跃)会显示 "跳跃 – 空格"。
如何实现与其他模组的兼容性
这是实现的核心,而且其中没有任何硬编码——即便是原版选项也不例外。
1. 真实的界面探索。 首次打开搜索时,模组会在屏幕外实例化每一个选项界面并运行其初始化过程。这个初始化过程恰好会触发其他模组挂接的 Forge 事件来注入它们自己的按钮,因此它们的控件会自然地出现在被探索的控件树中。绝不会点击任何按钮,也绝不会更改任何值。
2. 未知的界面。 模组不知道从未见过的其他模组的界面是如何构建的。因此,它会根据自身能够提供的参数来选择构造函数——或静态工厂方法。这使它能够打开那些它一无所知的界面。
3. Forge 配置界面。 每个注册了配置界面(模组列表中的"配置"按钮)的模组都会被自动索引。
4. 自主学习。 有些模组有完全定制的选项菜单,任何通用发现逻辑都无法猜出。因此,模组会记住你打开过的每个选项界面,并从此将其索引。规则刻意严格:只有当界面持有指向你之前所在选项界面的引用时,该界面才会被保留——这正是区分真正的子菜单与加载界面或标题界面的方法。这个列表可以在 config/settingssearch-known-screens.txt 中查看和编辑。
控件树的遍历是通用进行的:滚动列表、行、嵌套控件。行标题和提示信息是通过类型而非字段名读取的,这是模组在开发环境之外保持正常工作的必要条件。
性能
索引只构建一次,在首次打开搜索时进行,之后会复用。纯原版环境下:12 个界面中的 150 项设置,索引耗时约五十毫秒。如果你更改了游戏语言或发现了新的选项界面,它会自动重建索引,并且有一个"重建索引"按钮可以让你手动强制重建。
配置
在 config/settingssearch-client.toml 中:
| 选项 | 默认值 | 效果 |
|---|---|---|
showSearchButton |
true |
在选项界面上显示放大镜按钮 |
maxResults |
300 |
显示的最大结果数 |
highlightSeconds |
6 |
跳转后高亮持续的时长;0 表示禁用 |
indexModConfigScreens |
true |
索引其他模组的 Forge 配置界面 |
indexKeyBinds |
true |
索引按键绑定 |
learnOpenedScreens |
true |
记住你打开过的选项界面 |
searchTooltips |
true |
也搜索描述文本,而不仅仅是名称 |
如果某个行为异常的模组在索引过程中导致问题,上述四个来源中的每一个都可以独立关闭。
已知限制
- 语言选择界面无法逐行搜索。 其条目不包含控件,只有绘制的文本,因此没有可导航的目标。但界面本身仍然可以被搜索到。
- 探索无法触达既不能从选项界面进入,也不能通过 Forge 配置到达的选项菜单,除非你至少手动打开过它一次。
正在加载版本记录…


正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。