Options Enforcer

Options Enforcer

修改options.txt及其他顶层配置文件中的值,并从子文件夹复制文件...

Options Enforcer 横幅

注意:此模组不会更新到 1.19 以上版本。

这是因为 Minecraft 那严苛且专横的举报系统,它可能被欺骗和利用,导致用户无法在自己的私人服务器上游玩。

我原则上反对这个糟糕的系统,只要我不在 1.19 以上的版本运行游戏,我就不会让我的账户沾上这个可能性。

幸运的是,Options Enforcer 的代码在 https://gitgud.io/AstroTibs/options-enforcer,你可以自行将其移植到新版本!

给您带来的不便,敬请谅解。


Options Enforcer (OE) 是一个仅客户端模组,主要面向整合包设计。它做两件事。

功能一——配置/选项强制执行(主要面向整合包作者)

注意: 此功能与 Default Options 和 More Default Options 非常相似。根据你想实现的目标,它可能是相同的——我没有详细研究过那些模组。当我发现它们存在时,这个项目已经进行得很深入了。OE 的配置方式不同,所以在其他条件相同的情况下,你可能会更喜欢 OE 的配置语法。

OE 允许你覆盖 options.txt 和其他配置文件中的值,这样你就不必在每次更新整合包时都捆绑这些文件。为什么这很重要?

问题 1.1:如果你在整合包中包含完整的 options.txt,它会覆盖用户的副本,将他们所有的值(按键绑定、声音、渲染等)重置为整合包默认值。

问题 1.2:如果你在整合包中只包含部分值的 options.txt,它会覆盖用户的副本,将所有未包含的值重置为 Minecraft 默认值。

问题 1.3:如果你不在整合包中包含 options.txt,用户的值永远不会被覆盖,但需要他们自己解决按键冲突、应用资源包和设置重要值等问题。

使用 Options Enforcer,首先,整合包作者只需将他希望强制执行的值添加到 optionsenforcer.cfg 文件中,例如:

options.txt|renderDistance:10

其次,作者只需不将 options.txt 包含在整合包中。

现在,每次用户更新或启动整合包时,值 renderDistance:10 将被插入到文件 options.txt 中,而所有其他值将保留为用户最后一次离开时的状态。

或者,从 OE 版本 1.4 开始,你可以在强制执行条目末尾附加 |default:这样做将仅在首次启动时设置该值,但如果已有值,则永远不会设置!

OE 设计用于 options.txt、optionsof.txt、smart_moving_options.txt 等位于 Minecraft 根目录中的文件,但也可以修改其他模组配置文件,例如 config/VillageNames4/general.cfg。

重要提示: 确保不要捆绑你正在强制执行值的配置文件,例如 options.txt,否则就失去了意义!

这个模组是为我的整合包 Galaxy Odyssey 的 Technic 版本 而创建的,但也可能适用于多个整合包平台。

功能二——模组结转(主要面向整合包用户)

注意: 此功能类似于 Mod Director,后者实际上做得更好,它在启动期间下载并加载模组;也类似于 MCInstance Loader。然而,这些模组依赖于启动时可访问的下载链接,如果链接不可用,它们会在启动时崩溃。

模组复制界面

也许你,作为整合包用户,想使用诸如 OptiFine、WAILA、Fullscreen Windowed、Real First Person 2 等未包含在整合包中的模组。然而,每次你更新整合包时,它都会清空并替换 mods 文件夹中的所有模组,迫使你再次下载这些辅助模组。

启动时,OE 会将 mods-carryover 文件夹(如果不存在,OE 会创建)中的所有 .jar 和 .zip 文件复制到常规的 mods 文件夹中,前提是这些文件尚未存在于那里。

通常,整合包作者不需要对这个配置值做任何处理,只需将其重命名为另一个文件夹名即可。在包更新之间,由用户自己管理想要复制过来的模组。除非整合包平台或启动器特别严格,并删除所有不认识的文件夹名,否则 mods-carryover 文件夹及其内容应该在包更新之间保留下来。

整合包作者不应将此新增文件夹名的配置值留空,因为这会阻止模组被复制,基本上使此功能失效,并导致用户在包更新后必须重新获取或复制模组。那样的话,你还不如直接使用 Default Options 或 More Default Options 来代替 OE。

备注:

  1. 这个模组的灵感来源于更新我的 Technic 整合包 Galaxy Odyssey 时解决上述两个限制。去看看吧!
  2. 你可以在整合包中使用这个模组。毕竟,这就是它的意义所在!
  3. 如果你有问题或想聊天,可以来我的 Discord 服务器。