Class ProcessedNamedMinecraftProvider<M extends MinecraftProvider,P extends NamedMinecraftProvider<M>>
java.lang.Object
net.fabricmc.loom.configuration.providers.minecraft.mapped.AbstractMappedMinecraftProvider<M>
net.fabricmc.loom.configuration.providers.minecraft.mapped.NamedMinecraftProvider<M>
net.fabricmc.loom.configuration.providers.minecraft.mapped.ProcessedNamedMinecraftProvider<M,P>
- All Implemented Interfaces:
MappedMinecraftProvider,MappedMinecraftProvider.ProviderImpl
- Direct Known Subclasses:
ProcessedNamedMinecraftProvider.LegacyMergedImpl,ProcessedNamedMinecraftProvider.MergedImpl,ProcessedNamedMinecraftProvider.SingleJarImpl,ProcessedNamedMinecraftProvider.SplitImpl
public abstract class ProcessedNamedMinecraftProvider<M extends MinecraftProvider,P extends NamedMinecraftProvider<M>>
extends NamedMinecraftProvider<M>
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classstatic final classstatic final classstatic final classNested classes/interfaces inherited from class net.fabricmc.loom.configuration.providers.minecraft.mapped.AbstractMappedMinecraftProvider
AbstractMappedMinecraftProvider.MavenScope, AbstractMappedMinecraftProvider.OutputJar, AbstractMappedMinecraftProvider.ProvideContext, AbstractMappedMinecraftProvider.RemappedJars, AbstractMappedMinecraftProvider.RemapperHookKind, AbstractMappedMinecraftProvider.SimpleOutputJarNested classes/interfaces inherited from interface net.fabricmc.loom.configuration.providers.minecraft.mapped.MappedMinecraftProvider
MappedMinecraftProvider.Merged, MappedMinecraftProvider.ProviderImpl, MappedMinecraftProvider.SingleJar, MappedMinecraftProvider.Split -
Field Summary
Fields inherited from class net.fabricmc.loom.configuration.providers.minecraft.mapped.AbstractMappedMinecraftProvider
extension, minecraftProvider -
Constructor Summary
ConstructorsConstructorDescriptionProcessedNamedMinecraftProvider(P parentMinecraftProvide, MinecraftJarProcessorManager jarProcessorManager) -
Method Summary
Modifier and TypeMethodDescriptiongetJar(MinecraftJar.Type type) protected StringgetName(MinecraftJar.Type type) List<? extends AbstractMappedMinecraftProvider.OutputJar> getProcessedJar(MinecraftJar minecraftJar) 供给「经 jar processor 链处理过」的命名 jar:**生产已改由任务承担**,本方法不再在配置期写任何产物.registerJarProcessTask(MinecraftJar parentJar, RemapMinecraftTaskRegistry.Producer inputJar, Map<String, String> identity, List<MinecraftJarProcessor<?>> processors, List<MinecraftJarProcessor.Spec> specs) 为给定的命名 jar 注册「processor 链处理」任务.Methods inherited from class net.fabricmc.loom.configuration.providers.minecraft.mapped.NamedMinecraftProvider
getTargetNamespaceMethods inherited from class net.fabricmc.loom.configuration.providers.minecraft.mapped.AbstractMappedMinecraftProvider
cacheKey, configureRemapper, configureSplitRemapper, createBackupJars, disableTaskProduction, getBackupJarPath, getDependencyNotation, getMavenHelper, getMinecraftProvider, getProject, getRemapTask, getVersion, isUpToDate, registerRemapTask, remapJar, remapperHookKind, requiresBackupJars, shouldRefreshOutputsMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface net.fabricmc.loom.configuration.providers.minecraft.mapped.MappedMinecraftProvider
getMinecraftJarPaths
-
Constructor Details
-
ProcessedNamedMinecraftProvider
public ProcessedNamedMinecraftProvider(P parentMinecraftProvide, MinecraftJarProcessorManager jarProcessorManager)
-
-
Method Details
-
provide
public List<MinecraftJar> provide(AbstractMappedMinecraftProvider.ProvideContext context) throws Exception 供给「经 jar processor 链处理过」的命名 jar:**生产已改由任务承担**,本方法不再在配置期写任何产物.链上每一步的语义与顺序都不变,变的只是执行时机与失效判定:配置期的 「存在性检查 → 取跨进程锁 → copyToMaven → 逐 processor 就地改写」整段交给
ProcessMinecraftJarTask,构件目录里的另外两个文件(pom、backup)由WriteMinecraftJarSidecarsTask在链跑完之后补出。父 provider 先供给:它的产出是本任务链的输入,两者的任务依赖由
registerJarProcessTask(net.fabricmc.loom.configuration.providers.minecraft.MinecraftJar, net.fabricmc.loom.pipeline.RemapMinecraftTaskRegistry.Producer, java.util.Map<java.lang.String, java.lang.String>, java.util.List<net.fabricmc.loom.api.processor.MinecraftJarProcessor<?>>, java.util.List<net.fabricmc.loom.api.processor.MinecraftJarProcessor.Spec>)里声明输入 jar 的那一处建立。不可投影时整批回退,且必留痕
链上只要有一环无法在执行期重建(废弃 JarProcessor API 的包装、第三方 processor 未实现descriptor()),整条链都无法任务化——跳过某一环会让任务「成功」但产物与配置期不同。 这种情况整批回退到配置期(produceInConfiguration(net.fabricmc.loom.configuration.providers.minecraft.mapped.AbstractMappedMinecraftProvider.ProvideContext, java.util.Map<net.fabricmc.loom.configuration.providers.minecraft.MinecraftJar, net.fabricmc.loom.configuration.providers.minecraft.MinecraftJar>, java.util.List<net.fabricmc.loom.configuration.providers.minecraft.MinecraftJar>)),并打出被拒的具体原因。- Overrides:
providein classAbstractMappedMinecraftProvider<M extends MinecraftProvider>- Throws:
Exception
-
getOutputJars
- Overrides:
getOutputJarsin classAbstractMappedMinecraftProvider<M extends MinecraftProvider>- Returns:
- A list of output jars that this provider generates
-
getMavenScope
- Overrides:
getMavenScopein classNamedMinecraftProvider<M extends MinecraftProvider>
-
getDependencyTypes
- Overrides:
getDependencyTypesin classAbstractMappedMinecraftProvider<M extends MinecraftProvider>
-
getName
- Overrides:
getNamein classAbstractMappedMinecraftProvider<M extends MinecraftProvider>
-
getJar
- Specified by:
getJarin interfaceMappedMinecraftProvider.ProviderImpl- Overrides:
getJarin classAbstractMappedMinecraftProvider<M extends MinecraftProvider>
-
getRemappedJars
- Specified by:
getRemappedJarsin classAbstractMappedMinecraftProvider<M extends MinecraftProvider>- Returns:
- A list of jars that should be remapped
-
getMinecraftJars
-
getParentMinecraftProvider
-
getProcessedJar
-
registerJarProcessTask
public RemapMinecraftTaskRegistry.Producer registerJarProcessTask(MinecraftJar parentJar, RemapMinecraftTaskRegistry.Producer inputJar, Map<String, String> identity, List<MinecraftJarProcessor<?>> processors, List<MinecraftJarProcessor.Spec> specs) 为给定的命名 jar 注册「processor 链处理」任务.输入怎么来
- 输入 jar ← 父 provider 的产出(
MinecraftJar.getPath());产物 ← 本 provider 的 maven 位置(getProcessedJar(MinecraftJar)),与配置期copyToMaven写入的路径逐位相同,消费侧按坐标找得到的仍是同一个文件。 - 链由
processors与specs两张有序表给出:descriptor 由每个 processor 的descriptor()取出,spec 就是它本轮的 spec,指纹取spec.hashCode()(spec 不可序列化,理由见ProcessMinecraftJarTask的类注释)。 - 执行期上下文所需的可序列化值 ← 与
ProcessorContextImpl同源:jar 配置身份取MinecraftJarConfiguration、jar 类型取父 jar 的类型、是否禁用混淆取 extension、 生产与平台命名空间取getProductionNamespaceEnum()/IntermediaryNamespaces。 - 两个服务配置 ← 映射取平台映射选项(与
ProcessorContextImpl.getMappings()同一来源); remapper 取「生产命名空间 →named」,即 processor 请求的那一对。
remapper 装配有一处待核验的差异
配置期由ContextImplHelper.createRemapper装配:映射取平台映射选项、classpath 取extension.getMinecraftJars(from)、再经TinyRemapperHelper.getTinyRemapper构造 (fixRecords=false、validateTargetNamespace=true)。这里沿用同一个 classpath 来源, 但 remapper 由TinyRemapperService构造——它没有上面两个开关,映射走MappingsService.createOptionsWithProjectMappings。两者是否逐位等价尚未验证,属于接线批次 必须核验的项(既有经验:remapper 换个装配路径就得到过与配置期不同的产物)。本任务不产出的文件
处理任务只产出 jar:<name>-<version>.pom(LocalMavenHelper.savePom)与<jar>.backup(genSources 的输入)都不在它的输出里,接线时必须由别处继续产出, 理由见ProcessMinecraftJarTask的类注释。链从哪来
本方法按「调用方给出有序的 (processor, spec) 链」设计:链的唯一权威是MinecraftJarProcessorManager.processJar处理的那个列表(它已经调过buildSpec并丢弃了 spec 为 null 的 processor),在别处重建会得到第二份语义。 接线处因此不给它立第二份来源,而是用该 manager 的只读访问器 (getProcessors()/getSpecs())取出同一张表。- Parameters:
parentJar- 待处理的命名 jar,须是父 provider 的产出之一inputJar- 该 jar 的生产位置(见parentJarInput(MinecraftJar)):只要它带产出任务, 本任务就会对该任务路径声明依赖(dependsOn)。只按路径声明输入且没有这条边时, 链可能在产物落位之前就开跑,冷缓存下直接失败,而且会撞上 Gradle 的隐式依赖校验。 父 provider 未切到任务(产物配置期已落盘)时才可以退化为裸路径。identity- 该处理构件的输入指纹(见processedArtifactIdentity(net.fabricmc.loom.configuration.providers.minecraft.MinecraftJar, net.fabricmc.loom.pipeline.RemapMinecraftTaskRegistry.Producer, java.util.List<net.fabricmc.loom.api.processor.MinecraftJarProcessor<?>>, java.util.List<net.fabricmc.loom.api.processor.MinecraftJarProcessor.Spec>)):产物路径相同但指纹不同的 登记会被拒绝,而不是让两个项目往同一个路径上写各自配置的产物processors- 有序的 processor 链;顺序即处理顺序,且须与specs一一对应specs- 与processors一一对应的 spec- Returns:
- 该 jar 的生产位置
- Throws:
UnsupportedOperationException- 链上存在无法在执行期重建的 processor
- 输入 jar ← 父 provider 的产出(
-