Class SingleJarMinecraftProvider
- Direct Known Subclasses:
SingleJarForgeMinecraftProvider,SingleJarMinecraftProvider.Client,SingleJarMinecraftProvider.Server
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classstatic final class -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedSingleJarMinecraftProvider(MinecraftMetadataProvider metadataProvider, ConfigContext configContext, MappingsNamespace officialNamespace) -
Method Summary
Modifier and TypeMethodDescriptionprotected StringcacheKey()client(MinecraftMetadataProvider metadataProvider, ConfigContext configContext) protected @Nullable Stringenv-only jar 的生产留在配置期,因此 vanilla 链也必须留在配置期.protected abstract PathgetInputJar(SingleJarMinecraftProvider provider) protected voidprotected voidprotected void子类在此生产自己的产物(合并/拆分/env-only 透传).voidprovide()内存配置段:与产物是否已落位无关的那部分.server(MinecraftMetadataProvider metadataProvider, ConfigContext configContext) protected abstract SingleJarEnvTypetype()Methods inherited from class net.fabricmc.loom.configuration.providers.minecraft.MinecraftProvider
addProducerDependency, dependOn, dir, 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, registerProviderTasks, registerTaskProducedArtifact, setJarPrefix, workingDir
-
Constructor Details
-
SingleJarMinecraftProvider
protected SingleJarMinecraftProvider(MinecraftMetadataProvider metadataProvider, ConfigContext configContext, MappingsNamespace officialNamespace)
-
-
Method Details
-
server
public static SingleJarMinecraftProvider.Server server(MinecraftMetadataProvider metadataProvider, ConfigContext configContext) -
client
public static SingleJarMinecraftProvider.Client client(MinecraftMetadataProvider metadataProvider, ConfigContext configContext) -
initFiles
protected void initFiles()- Overrides:
initFilesin classMinecraftProvider
-
getMinecraftJars
- Specified by:
getMinecraftJarsin classMinecraftProvider
-
earlyProjectionBlocker
env-only jar 的生产留在配置期,因此 vanilla 链也必须留在配置期.processJar()在配置期把 vanilla jar 过一遍 TinyRemapper(readInputs会读它的 全部类),产物才是本 provider 的 jar。若把下载/抽取搬到执行期,配置期就没有可读的输入。 「env-only 生产任务化」不在本次范围内(它是一次独立的重映射型任务,和 mapped 阶段同批更合适)。legacy merged(MC 1.3 之前)经两个本类实例委托生产,因此同样被这条判据覆盖。
- Overrides:
earlyProjectionBlockerin classMinecraftProvider- Returns:
- 与依赖 provider 无关的那部分判据;子类覆写点
-
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
-
processJar
- Throws:
Exception
-
cacheKey
- Overrides:
cacheKeyin classMinecraftProvider
-
getMinecraftEnvOnlyJar
-
getOfficialNamespace
- Specified by:
getOfficialNamespacein classMinecraftProvider
-
type
-
getInputJar
- Throws:
Exception
-