Package net.fabricmc.loom.core
Class ModJarPostProcess
java.lang.Object
net.fabricmc.loom.core.ModJarPostProcess
L4 计算核心:重映射后、与项目无关的 mod jar 后处理步骤.
这些步骤原本内联在 ModProcessor.remapJars 的收尾循环里,与若干**依赖项目模型**
的步骤交错:Forge 的 AT 类名重映射、CoreMod 改写、以及把产物写入本地 maven 仓库都需要
Project。把纯步骤抽出来,是为了让「任务化」时能复用同一份实现,而不必连带搬走
那些搬不动的部分。
为什么是四个独立方法而不是一个 apply()
原本的执行顺序里夹着一处扩展钩子 (ModProcessorExtension.finalise,位于 AW 替换与去嵌套之间)。
若把它们合成一次调用,钩子就会被挤到前面或后面,改变既有行为。
拆成独立步骤后,调用方保留原有的交错顺序,抽取本身不引入时序变化。-
Method Summary
Modifier and TypeMethodDescriptionstatic voidremapNeoForgeAts(Path jar, net.fabricmc.mappingio.tree.MemoryMappingTree mappings, String productionNamespace, String targetNamespace) 全量重映射 NeoForge 的 access transformer.static voidreplaceAccessWidener(Path jar, @Nullable Pair<byte[], String> accessWidener) 单条声明的便捷形式:语义与replaceAccessWideners(java.nio.file.Path, java.util.List<net.fabricmc.loom.util.Pair<byte[], java.lang.String>>)完全相同,为既有调用方保留.static voidreplaceAccessWideners(Path jar, @Nullable List<Pair<byte[], String>> accessWideners) 把重映射后的 class tweaker 文件逐个写回 jar.static voidstripNestedJars(Path jar) 去掉嵌套 jar 的元数据.static voidwriteMappingNamespace(Path jar, String targetNamespace) 在 manifest 中记录本产物所处的映射命名空间.
-
Method Details
-
replaceAccessWideners
public static void replaceAccessWideners(Path jar, @Nullable List<Pair<byte[], String>> accessWideners) throws IOException把重映射后的 class tweaker 文件逐个写回 jar.accessWideners是「已重映射的字节 + jar 内路径」的列表;为空(含null) 表示该 mod 不含声明。一个 mod 可以声明多个文件(schema v2 的classTweakers是映射), 它们各有各的路径,所以必须一个条目写一次——把多条内容合成一份再写回,会让后写的那份盖掉 前一份,jar 里只剩一个规则文件。- Throws:
IOException
-
replaceAccessWidener
public static void replaceAccessWidener(Path jar, @Nullable Pair<byte[], String> accessWidener) throws IOException单条声明的便捷形式:语义与replaceAccessWideners(java.nio.file.Path, java.util.List<net.fabricmc.loom.util.Pair<byte[], java.lang.String>>)完全相同,为既有调用方保留.- Throws:
IOException
-
stripNestedJars
去掉嵌套 jar 的元数据.开发环境中这些嵌套 jar 不该由 loader 加载,否则会被当作重复的模组。
- Throws:
IOException
-
writeMappingNamespace
在 manifest 中记录本产物所处的映射命名空间.- Parameters:
targetNamespace- 产物落位的命名空间- Throws:
IOException
-
remapNeoForgeAts
public static void remapNeoForgeAts(Path jar, net.fabricmc.mappingio.tree.MemoryMappingTree mappings, String productionNamespace, String targetNamespace) throws IOException 全量重映射 NeoForge 的 access transformer.仅 NeoForge 需要:Forge 只在类名层面映射,其余留到运行时按 srg → named 处理。
- Throws:
IOException
-