Class SplitMinecraftProvider
java.lang.Object
net.fabricmc.loom.configuration.providers.minecraft.MinecraftProvider
net.fabricmc.loom.configuration.providers.minecraft.SplitMinecraftProvider
-
Constructor Summary
ConstructorsConstructorDescriptionSplitMinecraftProvider(MinecraftMetadataProvider metadataProvider, ConfigContext configContext) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidprotected void子类在此生产自己的产物(合并/拆分/env-only 透传).protected void注册拆分任务:产物生产交给执行期任务,产物路径与配置期一致.static void把 client 与 server jar 拆成 client-only 与 common 两个产物.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, provide, provideClient, provideMinecraftJars, provideServer, refreshDeps, registerTaskProducedArtifact, setJarPrefix, workingDir
-
Constructor Details
-
SplitMinecraftProvider
public SplitMinecraftProvider(MinecraftMetadataProvider metadataProvider, ConfigContext configContext)
-
-
Method Details
-
initFiles
protected void initFiles()- Overrides:
initFilesin classMinecraftProvider
-
getMinecraftJars
- Specified by:
getMinecraftJarsin classMinecraftProvider
-
getOfficialNamespace
- Specified by:
getOfficialNamespacein classMinecraftProvider
-
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
注册拆分任务:产物生产交给执行期任务,产物路径与配置期一致.「是否可以拆分」的判据与配置期逐字一致(同一份 L2 元数据),且仍在配置期给出**明确的失败**, 而不是把错误推迟到执行期:这类「版本不支持所选 jar 形态」是配置错误,越早失败越好, 判据也只依赖不打开 jar 的元数据,因此不需要先有产物。
两个产物由同一个任务产出:配置期也是「一次拆分、两半一起落位」,任何一半不可复用都要重跑整次拆分。
- Overrides:
registerProviderTasksin classMinecraftProvider- Parameters:
producers- 本次已登记的产物(可写):键是产物的绝对规范化路径
-
splitJars
public static void splitJars(Path clientJar, Path serverJar, Path clientOnlyJar, Path commonJar) throws Exception 把 client 与 server jar 拆成 client-only 与 common 两个产物.配置期路径与执行期任务(
SplitMinecraftJarsTask)共用本方法:共享条目清单、 「两个产物分别原子落位」「失败时清理临时文件」都在这里唯一持有。若任务另写一套, 两套拆分只要差一点,产物就会在同一个共享目录里互相判为不可复用。- Parameters:
clientJar- 待拆分的 client jarserverJar- 待拆分的 server jar(抽取产物)clientOnlyJar- 客户端侧产物的目标位置commonJar- 两侧共享产物的目标位置- Throws:
Exception
-
getMinecraftClientOnlyJar
-
getMinecraftCommonJar
-