Class MergedMinecraftProvider
- Direct Known Subclasses:
MergedForgeMinecraftProvider
-
Constructor Summary
ConstructorsConstructorDescriptionMergedMinecraftProvider(MinecraftMetadataProvider metadataProvider, ConfigContext configContext) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidprotected voidstatic voidprotected void子类在此生产自己的产物(合并/拆分/env-only 透传).voidprovide()内存配置段:与产物是否已落位无关的那部分.protected void注册合并任务:产物生产交给执行期任务,产物路径与配置期一致.Methods inherited from class net.fabricmc.loom.configuration.providers.minecraft.MinecraftProvider
addProducerDependency, cacheKey, dependOn, dir, earlyProjectionBlocker, extractBundledServerJar, file, getExtension, getJarPrefix, getMinecraftClientJar, getMinecraftExtractedServerJar, getMinecraftServerJar, getProject, getServerBundleMetadata, getVersionInfo, isFinalProductKnown, isLegacySplitOfficialNamespaceVersion, isLegacyVersion, isTaskProduction, minecraftVersion, minecraftWorkingDirectory, normalize, outputForTasks, path, producerOf, productionTaskPath, projectionBlocker, provideClient, provideMinecraftJars, provideServer, refreshDeps, registerTaskProducedArtifact, setJarPrefix, workingDir
-
Constructor Details
-
MergedMinecraftProvider
public MergedMinecraftProvider(MinecraftMetadataProvider metadataProvider, ConfigContext configContext)
-
-
Method Details
-
initFiles
protected void initFiles()- Overrides:
initFilesin classMinecraftProvider
-
getMinecraftJars
- Specified by:
getMinecraftJarsin classMinecraftProvider
-
getOfficialNamespace
- Specified by:
getOfficialNamespacein classMinecraftProvider
-
provide
Description copied from class:MinecraftProvider内存配置段:与产物是否已落位无关的那部分.产物生产(下载/抽取,子类再含合并/拆分/env-only 透传)**不在这里**,由
MinecraftProvider.provideMinecraftJars()承担。拆开的理由是判据的求值时机:MinecraftProvider.projectionBlocker()里那条 Forge 系判据要读isLegacyForge(),而它依赖已解析的 userdev 配置——依赖 provider 只能在库处理器把仓库定稿之后建立 (见CompileConfiguration.setupDependencyProviders的注释),因此生产整体推迟到那之后。库注入(
MinecraftLibraryProvider)仍留在本段:它必须在依赖 provider 之前完成, 且服务端库列表取自 bundle 元数据。推迟路径下元数据由MinecraftProvider.earlyProjectionBlocker()的末条保证命中 L2 规格缓存,读它不会打开 server jar。- Overrides:
providein classMinecraftProvider- Throws:
Exception
-
produceOwnJars
Description copied from class:MinecraftProvider子类在此生产自己的产物(合并/拆分/env-only 透传).由
MinecraftProvider.provide()与MinecraftProvider.provideMinecraftJars()在基类产物之后调用,因此 「我的输入就是基类产物」这条关系由调用点保证。投影时不会调用本方法:那时产物由MinecraftProvider.registerProviderTasks(java.util.Map<java.nio.file.Path, net.fabricmc.loom.pipeline.RemapMinecraftTaskRegistry.Producer>)登记的执行期任务承担(子类在那里决定自己怎么接线)。- Overrides:
produceOwnJarsin classMinecraftProvider- Throws:
Exception
-
registerProviderTasks
注册合并任务:产物生产交给执行期任务,产物路径与配置期一致.server 侧输入按配置期同一判据选好:该版本使用 bootstrap jar 时取抽取产物,否则取下载下来的 server jar。判据来自 L2 规格缓存(不打开 jar),因此这一步不需要产物已存在。
- Overrides:
registerProviderTasksin classMinecraftProvider- Parameters:
producers- 本次已登记的产物(可写):键是产物的绝对规范化路径
-
mergeJars
- Throws:
IOException
-
mergeJars
- Throws:
IOException
-
getMergedJar
-