Class MappingConfiguration
- Direct Known Subclasses:
ForgeMigratedMappingConfiguration
-
Field Summary
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedMappingConfiguration(String mappingsIdentifier, Path mappingsWorkingDir) -
Method Summary
Modifier and TypeMethodDescriptionvoidapplyToProject(org.gradle.api.Project project, DependencyInfo dependency) static MappingConfigurationcreate(org.gradle.api.Project project, ServiceFactory serviceFactory, DependencyInfo dependency, MinecraftProvider minecraftProvider) protected static StringcreateForgeMappingsIdentifier(LoomGradleExtension extension, String mappingsName, String version, String classifier, String minecraftVersion) protected static StringcreateMappingsIdentifier(String mappingsName, String version, String classifier, String minecraftVersion) static voidextractMappings(FileSystem jar, Path extractTo) static voidextractMappings(Path jar, Path extractTo) getMappingsPath(MappingOption mappingOption) getMappingsService(org.gradle.api.Project project, ServiceFactory serviceFactory) getMappingsService(org.gradle.api.Project project, ServiceFactory serviceFactory, MappingOption mappingOption) org.gradle.api.provider.Provider<TinyMappingsService.Options> getMappingsServiceOptions(org.gradle.api.Project project) org.gradle.api.provider.Provider<TinyMappingsService.Options> getMappingsServiceOptions(org.gradle.api.Project project, MappingOption mappingOption) static PathgetMojmapSrgFileIfPossible(org.gradle.api.Project project) getPlatformMappingFile(LoomGradleExtension extension) The mapping file that is specific to the platform settings.static PathgetRawSrgFile(org.gradle.api.Project project) getReplacedTarget(LoomGradleExtension loom, String namespace) 取得 Mixin refmap 重映射所需的映射文件.booleanstatic booleanisReusableMappingsText(Path mappingsFile) Returns 该映射文本产物是否可作为输入复用.protected voidmanipulateMappings(org.gradle.api.Project project, Path mappingsJar) voidsetupPost(org.gradle.api.Project project)
-
Field Details
-
mappingsIdentifier
-
tinyMappings
-
tinyMappingsJar
-
tinyMappingsWithMojang
-
tinyMappingsWithSrg
-
mixinTinyMappings
-
srgToNamedSrg
-
-
Constructor Details
-
MappingConfiguration
-
-
Method Details
-
create
public static MappingConfiguration create(org.gradle.api.Project project, ServiceFactory serviceFactory, DependencyInfo dependency, MinecraftProvider minecraftProvider) -
getMappingsPath
-
getMappingsServiceOptions
public org.gradle.api.provider.Provider<TinyMappingsService.Options> getMappingsServiceOptions(org.gradle.api.Project project) -
getMappingsServiceOptions
public org.gradle.api.provider.Provider<TinyMappingsService.Options> getMappingsServiceOptions(org.gradle.api.Project project, MappingOption mappingOption) -
getMappingsService
public TinyMappingsService getMappingsService(org.gradle.api.Project project, ServiceFactory serviceFactory) -
getMappingsService
public TinyMappingsService getMappingsService(org.gradle.api.Project project, ServiceFactory serviceFactory, MappingOption mappingOption) -
setupPost
- Throws:
IOException
-
applyToProject
public void applyToProject(org.gradle.api.Project project, DependencyInfo dependency) throws IOException - Throws:
IOException
-
getRawSrgFile
- Throws:
IOException
-
getMojmapSrgFileIfPossible
-
manipulateMappings
protected void manipulateMappings(org.gradle.api.Project project, Path mappingsJar) throws IOException - Throws:
IOException
-
extractMappings
- Throws:
IOException
-
extractMappings
- Throws:
IOException
-
isReusableMappingsText
Returns 该映射文本产物是否可作为输入复用..本类的多件共享产物——
intermediary-v2.tiny、mappings-mojang.tiny、mappings-srg.tiny、mappings-srg-named.srg与 mixin 映射——都是纯文本映射,不是 jar, 故一律不适用JarReusability.isReusable(Path)的 zip 口径: 拿文本去开 zipfs 必然失败,会把正常产物永久判为不可用。它们的内容判据等价地取「存在且非空」:- 正常产物恒非空——
.tiny至少含映射头,.srg由MappingWriter经java.io.Writer逐行写出(SRG 与 tiny 同为文本格式,不是 zip 也不是压缩流), 二者都必然写出内容,故这条不会把正常产物拖进「每次构建都重建」; - 能拦下「先删后写」被中断、或旧版本 loom 就地重建时留下的 0 字节残骸。这类残骸正是本仓库
实测过的形态,而被复用后会一路传到最终产物:下游
MappingReader读到空映射, 或getReplacedTarget(net.fabricmc.loom.LoomGradleExtension, java.lang.String)在改写首行时对空行表取下标而抛异常。
刻意不做逐行解析、首尾行或末尾换行等更严的校验:该判定位于每次构建的无锁快路径上, 全量解析一份 stitch 产物是秒级开销,收益却只覆盖「截断到非 0 长度」这一小类残骸。
- Parameters:
mappingsFile- 待判定的映射文本产物路径- Returns:
- 该映射文本产物是否可作为输入复用
- 正常产物恒非空——
-
mappingsWorkingDir
-
createMappingsIdentifier
-
createForgeMappingsIdentifier
-
mappingsIdentifier
-
getUnpickDefinitionsFile
-
hasUnpickDefinitions
public boolean hasUnpickDefinitions() -
getAnnotationsData
-
getUnpickMetadata
-
getSignatureFixes
-
getReplacedTarget
取得 Mixin refmap 重映射所需的映射文件.intermediary命名空间直接返回平台映射文件(见getPlatformMappingFile(net.fabricmc.loom.LoomGradleExtension)), 其余命名空间返回一份由它派生的、改写过首行的mappings-mixin-*.tiny(见writeReplacedTarget(net.fabricmc.loom.LoomGradleExtension, java.lang.String, java.nio.file.Path))。 两条路都以平台映射文件为输入,故这里先按共享产物的文本判据(见isReusableMappingsText(Path)) 确认它可用:- 直接返回的分支原先没有任何就绪判定,0 字节残骸会被原样交给 Mixin AP, 让 refmap 静默地按空映射生成(直到运行时才以「找不到映射」的形式炸开);
- 派生分支读取该文件后立刻取首行(
lines.get(0)),空行表会抛出无从诊断的IndexOutOfBoundsException。
这里只做「不可用即报错」,不尝试就地重建:平台映射文件由 mappings 阶段 (
setup/setupPost)产出,本方法既拿不到 Project 也拿不到 ServiceFactory, 无法重跑那条流水线;而唯一的调用方(Mixin AP 的参数装配)必然在 mappings 阶段之后执行, 正常构建里该文件恒非空,故这条判定不会误报,只会在确有残骸时把静默错误换成可诊断的失败。- Parameters:
loom- 当前项目的 loom 扩展namespace- refmap 的目标命名空间
-
getPlatformMappingFile
The mapping file that is specific to the platform settings. It contains SRG (Forge/common) or Mojang mappings (NeoForge) as needed.- Returns:
- the platform mapping file path
-