Legacy OptiFabric

Legacy OptiFabric

OptiFabric 适用于 Legacy Fabric(1.3.1 至 1.13.2)和 Ornithe(b1.7.3 至 1.14.4)

关于 MCSR:使用 mods.tildejustin.dev

如果你在为 1.14 到 1.15.2 寻找适用于常规 Fabric 而非 Ornithe 的 OptiFabric,请查看 OptiFabric Origins

旧版 OptiFabric

适用于 Legacy Fabric(1.3.1-1.13.2)和 Ornithe(b1.7.3-1.14.4)的 OptiFabric

基于 RedLime 的 OptiFabric-Pre1.14 的工作成果,该模组是 hYdos 的 OptiFabric 1.8.9 的分支,而后者又是 modmuss 的原版 OptiFabric 的衍生作品

安装

此模组需要将 optifine jar 放在 mods 文件夹中,与 optifabric 一同使用。对于 1.7.2 及以上版本,可以从 OptiFine 官方网站 获取,而更早的版本则可以从 SpeedyCube64 的 Pre-1.9 Optifine 存档 或 OptiFine 历史帖 中获取。

工作原理

此模组使用 Minecraft-Java-Edition-Speedrunning/fabric-asm,这是 Cat Core 的 Fabric-ASM/no-guava 的微小衍生版本,而后者本身是 Chocohead 的 fabric-asm 的更新版本。fabric asm 允许更极端的 asm 修改,所使用的分支 不依赖 guava 或 apache commons,因为这些在较旧的 Minecraft 版本中并未提供。

步骤

  1. 模组在当前 mods 文件夹中寻找 optifine 安装器或模组 jar 或 zip
  2. 如果找到安装器 jar,则在其自己的临时类加载器中执行提取任务
  3. optifine 模组 jar 是一组需要替换 Minecraft 提供的类的类
  4. optifine 的替换类会更改某些 lambda 方法的名称,因此它会(使用原始 Minecraft jar)对旧名称进行合理猜测
  5. 将 optifine 重新映射到 intermediary
  6. 将修补后的类移出,因为它们在类路径上出现两次不会有什么好处
  7. 将 optifine 添加到类路径
  8. 为每个需要替换的类注册修补 tweaker
  9. 用提取的类替换目标类,同时对其进行更多修复,并使其公开(由于访问问题)
  10. 希望它能正常工作

注意事项

  • 此模组在开发环境或命名环境中无法真正正常运行。在 Legacy Fabric 的情况下,某些版本的 yarn 构建已损坏,因此目前无法正常工作,feather 稍好一些但仍然存在问题。
  • accessWideners 是基于 tiny remapper 的 checkPackageAccess 选项的输出创建的,但不太可能做到 100% 完整。如果你遇到与无效访问相关的崩溃,请报告,它可能能够被修复。

类排除器

这是一个隐藏功能,偶尔在重新映射 jar 时用于移除文件会很有用。为此,它读取 .minecraft/config/ 中的 optifabric-excluded-classes.json 文件 (如果存在),并期望文件包含版本(字段名称)到可移除类(或纹理或任何其他内容,它只是一个 文件名)数组的映射。 下面提供了一个示例文件内容,用于撤销 1.3.2 版本中 Profiler 的移除。如果你要为其创建排除器条目的 optifine 版本已在你的实例中加载过,请删除 .minecraft 中 .optifine 文件夹里的对应文件夹以强制重新缓存。

{
  "OptiFine_1.3.2_L_B2": [
    "ik.class"
  ]
}