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, extractMappings, extractMappings, getAnnotationsData, getMappingsPath, getMappingsService, getMappingsService, getMappingsServiceOptions, getMappingsServiceOptions, getMojmapSrgFileIfPossible, getPlatformMappingFile, getRawSrgFile, getReplacedTarget, getSignatureFixes, getSrgNamedTaskPath, getUnpickDefinitionsFile, getUnpickMetadata, 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
-