Class ForgeMigratedMappingConfiguration
-
Field Summary
Fields inherited from class net.fabricmc.loom.configuration.providers.mappings.MappingConfiguration
LEGACY_INHERITED_TASK_NAME, mappingsIdentifier, mixinTinyMappings, srgToNamedSrg, tinyMappings, tinyMappingsJar, tinyMappingsWithMojang, tinyMappingsWithSrg, tinyMappingsWithSrgInherited -
Constructor Summary
ConstructorsConstructorDescriptionForgeMigratedMappingConfiguration(String mappingsIdentifier, Path mappingsWorkingDir) -
Method Summary
Modifier and TypeMethodDescription@Nullable StringReturns 迁移产物的产出任务路径;未投影时为null.protected booleanisTaskProducedMappings(MappingOption mappingOption) Returns 该映射选项指向的迁移产物是否由执行期任务产出.static voidmanipulate(MappingsMigrator.Inputs inputs, Path rawTinyMappings, Path tinyMappings, Path tinyMappingsWithNs, Path hashPath, String platformId, Consumer<String> info) 执行期任务的入口:跑迁移器准备中间数据,再产出迁移后的 mappings.protected voidmanipulateMappings(org.gradle.api.Project project, Path mappingsJar) static @Nullable StringReturns 不能把 mappings 迁移投影成执行期任务的原因;可以投影时为null.@Nullable StringReturns 迁移产物的产出任务路径;未投影时为null.Methods inherited from class net.fabricmc.loom.configuration.providers.mappings.MappingConfiguration
addMappingsProducerDependency, applyToProject, create, createForgeMappingsIdentifier, createMappingsIdentifier, ensureMappingOptionsReady, extractMappings, extractMappings, getAnnotationsData, getMappingsPath, getMappingsService, getMappingsService, getMappingsServiceOptions, getMappingsServiceOptions, getMojmapSrgFileIfPossible, getPlatformMappingFile, getRawSrgFile, getReplacedTarget, getSignatureFixes, getSrgNamedTaskPath, getUnpickDefinitionsFile, getUnpickMetadata, hasMappingOption, hasUnpickDefinitions, isReusableMappingsText, mappingsIdentifier, mappingsWorkingDir, setupPost, writeSrgNamedMappings, writeSrgNamedMappings
-
Constructor Details
-
ForgeMigratedMappingConfiguration
-
-
Method Details
-
mappingsMigrationProjectionBlocker
Returns 不能把 mappings 迁移投影成执行期任务的原因;可以投影时为null..与
MinecraftPatchedProvider.provideProjectionBlocker()同一风格:每一条都是一个 「配置期有确定的读者会真读迁移产物」的形态,命中即整段退回配置期路径(那条路径与改造前逐字一致), 并留下 lifecycle 留痕。判据必须是
LoomGradleExtension的纯函数:同一个判据还要在MinecraftProvider.projectionBlocker()里使用,而后者执行得比 mappings 阶段早得多 (那时MappingConfiguration还不存在)。两处一旦不一致,就会出现「vanilla jar 投影了、 迁移却留在配置期」这类组合——配置期读者随后会按路径读到执行期才落位的文件。- legacy mixin AP:
AnnotationProcessorInvoker.passMixinArguments在配置期调用MappingConfiguration.getReplacedTarget,它按内容判据校验平台映射文件 (Forge 下即mappings-srg-migrated.tiny)并读它派生出mappings-mixin-<ns>.tiny——那个文件在配置期就要交给注解处理器的编译参数。投影后平台映射文件只在执行期落位, 该读者会直接以IllegalStateException中断构建(本仓库实测:forge/simpleMixinAp的mappings-mixin-srg.tiny正是配置期写出来的)。
- Returns:
- 不能把 mappings 迁移投影成执行期任务的原因;可以投影时为
null
- legacy mixin AP:
-
getManipulateMappingsTaskPath
Returns 迁移产物的产出任务路径;未投影时为null..供消费方把「我的输入就是你的产出」表达成任务依赖。返回任务**路径**而不是任务实例: 产出方可能由另一份 Loom classloader 配置(约定插件/included build 各自带一份 Loom), 把对方的任务实例交过来会在使用处抛
ClassCastException。- Returns:
- 迁移产物的产出任务路径;未投影时为
null
-
mappingsProducerTaskPath
Returns 迁移产物的产出任务路径;未投影时为null..三个映射选项(
DEFAULT/WITH_SRG/WITH_MOJANG)在本配置下都指向 迁移产物,故它们共用同一个产出任务。- Overrides:
mappingsProducerTaskPathin classMappingConfiguration- Returns:
- 迁移产物的产出任务路径;未投影时为
null
-
isTaskProducedMappings
Returns 该映射选项指向的迁移产物是否由执行期任务产出..未投影时(legacy Forge 与 legacy mixin AP)产物在配置期已落位,
MappingConfiguration.getMappingsPath(dev.architectury.loom.mappings.MappingOption)的存在性校验照旧生效。super必须保留:基类已经覆盖了 legacy Forge 的继承补全映射 (WITH_SRG指向generateLegacyInheritedMappings的产物), 本方法只管「迁移产物」这一族,二者是并列关系。- Overrides:
isTaskProducedMappingsin classMappingConfiguration- Returns:
- 该映射选项指向的迁移产物是否由执行期任务产出
-
manipulateMappings
protected void manipulateMappings(org.gradle.api.Project project, Path mappingsJar) throws IOException - Overrides:
manipulateMappingsin classMappingConfiguration- Throws:
IOException
-
manipulate
public static void manipulate(MappingsMigrator.Inputs inputs, Path rawTinyMappings, Path tinyMappings, Path tinyMappingsWithNs, Path hashPath, String platformId, Consumer<String> info) throws IOException 执行期任务的入口:跑迁移器准备中间数据,再产出迁移后的 mappings.与配置期路径的差别只有「谁触发、谁保证并发」:这里由 Gradle 的任务图保证顺序、 由 up-to-date 判定与构建缓存保证就绪,故不再取跨进程锁、也不再看就绪标记。 产物的字节与配置期路径逐字一致(同一份
produceMigratedMappings(java.util.List<dev.architectury.loom.forge.MappingsMigrator>, java.nio.file.Path, java.nio.file.Path, java.nio.file.Path, java.nio.file.Path, java.nio.file.Path, long, java.lang.String, java.util.function.Consumer<java.lang.String>)实现)。迁移器的中间缓存仍落在共享的 forge 缓存目录:它们只是「由输入决定的中间数据」的记忆化, 不参与本任务的 up-to-date 判定(判定只看真实输入与输出),因此无需声明成任务输出。
- Throws:
IOException
-