Interface LoomGradleExtension
- All Superinterfaces:
LoomGradleExtensionAPI
- All Known Implementing Classes:
LoomGradleExtensionImpl
-
Method Summary
Modifier and TypeMethodDescriptiondefault voidaddPlatformMappingsDependency(org.gradle.api.Task task) 把「本任务以平台映射文件为输入」表达成任务依赖.voidaddTransitiveAccessWideners(List<AccessWidenerFile> accessWidenerFiles) booleanWhen enabled disable all forms of remapping.booleanWhen enabled do not remap the output jars.@Nullable MappingConfigurationReturns 已建立的映射配置;本工程不使用映射(disableObfuscation/ unobfuscated Forge) 或尚未 setup 时为null.static LoomGradleExtensionget(org.gradle.api.Project project) 取项目上的 Loom 扩展.org.gradle.api.provider.Provider<ArtifactMetadata.MixinRemapType> getFiles()default ForgeProviderdefault ForgeUniversalProviderdefault ForgeUserdevProviderorg.gradle.api.provider.ListProperty<LibraryProcessorManager.LibraryProcessorFactory> default McpConfigProvidergetMinecraftJars(MappingsNamespace mappingsNamespace) org.gradle.api.file.FileCollectiongetMinecraftJarsCollection(MappingsNamespace mappingsNamespace) 取某个命名空间下的 Minecraft jar 集合.getMixin()default PatchProviderdefault PathThe mapping file that is specific to the platform settings.org.gradle.api.provider.Provider<MappingsNamespace> org.gradle.api.provider.ListProperty<RemapperExtensionHolder> default SrgProviderorg.gradle.api.file.ConfigurableFileCollectionbooleanbooleandefault booleandefault booleandefault booleandefault boolean是否为 legacy Forge(1.8-1.16,ForgeGradle 2 时代).default boolean是否为 Forge 系(含 NeoForge)中的现代版本,即非 legacy Forge.booleandefault booleanbooleanbooleanvoidsetDependencyProviders(DependencyProviders dependencyProviders) voidsetForgeRunsProvider(ForgeRunsProvider forgeRunsProvider) voidvoidsetIntermediaryMinecraftProvider(IntermediaryMinecraftProvider<?> intermediaryMinecraftProvider) voidsetMappingConfiguration(MappingConfiguration mappingConfiguration) voidsetMetadataProvider(MinecraftMetadataProvider metadataProvider) voidsetMinecraftJarsTaskOutputs(MappingsNamespace mappingsNamespace, org.gradle.api.file.FileCollection taskOutputs) 登记某个命名空间下、由任务产出的 Minecraft jar 集合.voidsetMinecraftProvider(MinecraftProvider minecraftProvider) voidsetMojangMappedMinecraftProvider(MojangMappedMinecraftProvider<?> srgMinecraftProvider) voidsetNamedMinecraftProvider(NamedMinecraftProvider<?> namedMinecraftProvider) voidsetRefreshDeps(boolean refreshDeps) voidsetSrgMinecraftProvider(SrgMinecraftProvider<?> srgMinecraftProvider) Methods inherited from interface net.fabricmc.loom.api.LoomGradleExtensionAPI
addJarProcessor, addMinecraftJarProcessor, addRemapConfiguration, addRemapperExtension, addTaskBeforeRun, areEnvironmentSourceSetsSplit, clientOnlyMinecraftJar, createRemapConfigurations, decompilers, disableDeprecatedPomGeneration, forge, getAccessWidenerPath, getCompileRemapConfigurations, getCustomMinecraftManifest, getCustomMinecraftMetadata, getDecompilerOptions, getDecompileTask, getDefaultMixinRemapType, getDeprecationHelper, getEnableModProvidedJavadoc, getEnableTransitiveAccessWideners, getFabricModJsonPath, getForge, getGameJarProcessors, getInterfaceInjection, getIntermediaryUrl, getIntermediateMappingsProvider, getKnownIndyBsms, getLog4jConfigs, getMappingsFile, getMinecraftJarConfiguration, getMinecraftJarProcessors, getMinecraftVersion, getMods, getModVersion, getNamedMinecraftJars, getNeoForge, getPlatform, getProductionNamespace, getRemapConfigurations, getRemapJsrAnnotationsToJetBrains, getRunConfigs, getRuns, getRuntimeOnlyLog4j, getRuntimeOnlyLwjglGraphics, getRuntimeRemapConfigurations, getSettingsPostEdit, getSplitModDependencies, getTasksBeforeRun, getUncompressNestedJars, getUseIntermediateMappings, getVersionsManifests, injectAccessWidener, injectAccessWidener, interfaceInjection, isForge, isForgeLike, isNeoForge, isQuilt, isSilentMojangMappingsLicenseEnabled, layered, mixin, mods, neoForge, nestJars, nestJars, nestJars, noIntermediateMappings, officialMojangMappings, runs, serverOnlyMinecraftJar, setGenerateSrgTiny, setIntermediateMappingsProvider, setIntermediateMappingsProvider, shouldGenerateSrgTiny, silentMojangMappingsLicense, splitEnvironmentSourceSets, splitMinecraftJar, versionsManifests
-
Method Details
-
get
取项目上的 Loom 扩展.判据只做
instanceof而不直接强转:当 Loom 被两个 classloader 各加载一份时(settings 与 project classpath 各一份、buildSrc/约定插件与 plugins 块各一份、复合构建),「loom」这个名字查得到, 但对象是由另一份 Loom 创建的,裸强转会抛不带任何业务信息的 ClassCastException。 跨 classloader 复用对方实例在语言层面不可能(同名类不是同一个 Class),因此退化为可诊断的失败, 明确指出占用者实际类型与其 classloader,并给出可能成因。- Parameters:
project- 目标项目- Returns:
- 该项目上的 Loom 扩展
- Throws:
org.gradle.api.UnknownDomainObjectException- 项目上没有名为「loom」的扩展(项目未应用 Loom)org.gradle.api.GradleException- 扩展存在但由另一份 classloader 的 Loom 创建
-
getFiles
LoomFiles getFiles() -
getUnmappedModCollection
org.gradle.api.file.ConfigurableFileCollection getUnmappedModCollection() -
setInstallerData
-
getInstallerData
InstallerData getInstallerData() -
getMetadataProvider
MinecraftMetadataProvider getMetadataProvider() -
setMetadataProvider
-
getMinecraftProvider
MinecraftProvider getMinecraftProvider() -
setMinecraftProvider
-
getMappingConfiguration
MappingConfiguration getMappingConfiguration() -
findMappingConfiguration
@Nullable MappingConfiguration findMappingConfiguration()Returns 已建立的映射配置;本工程不使用映射(disableObfuscation/ unobfuscated Forge) 或尚未 setup 时为null..与
getMappingConfiguration()的差别只有一个:不抛异常。任务侧需要「有就接线、没有就跳过」 的语义(见addPlatformMappingsDependency(Task)),在那里抛异常会把一个可选的接线点变成崩溃点。- Returns:
- 已建立的映射配置;本工程不使用映射(
disableObfuscation/ unobfuscated Forge) 或尚未 setup 时为null
-
setMappingConfiguration
-
addPlatformMappingsDependency
default void addPlatformMappingsDependency(org.gradle.api.Task task) 把「本任务以平台映射文件为输入」表达成任务依赖.平台映射文件(Forge 下是迁移产物
mappings-srg-migrated.tiny/mappings-mojang-migrated.tiny) 在投影后只在执行期落位。它的消费者散布在各个任务里(remapJar、remapSourcesJar、genSources、genForgePatchedSources、generateDLIConfig……), 而它作为@InputFile只按路径声明、不带任务依赖,因此每一处都必须显式接线: 漏接一处 = 任务在产物落位前开跑,随后以「输入文件不存在」失败。映射由配置期产出、或本工程根本不使用映射时,本方法什么也不做。
-
getNamedMinecraftProvider
NamedMinecraftProvider<?> getNamedMinecraftProvider() -
getIntermediaryMinecraftProvider
IntermediaryMinecraftProvider<?> getIntermediaryMinecraftProvider() -
setNamedMinecraftProvider
-
setIntermediaryMinecraftProvider
void setIntermediaryMinecraftProvider(IntermediaryMinecraftProvider<?> intermediaryMinecraftProvider) -
getProductionNamespaceEnum
org.gradle.api.provider.Provider<MappingsNamespace> getProductionNamespaceEnum() -
getDefaultMixinRemapTypeEnum
org.gradle.api.provider.Provider<ArtifactMetadata.MixinRemapType> getDefaultMixinRemapTypeEnum() -
getSrgMinecraftProvider
SrgMinecraftProvider<?> getSrgMinecraftProvider() -
setSrgMinecraftProvider
-
getMojangMappedMinecraftProvider
MojangMappedMinecraftProvider<?> getMojangMappedMinecraftProvider() -
setMojangMappedMinecraftProvider
-
getMinecraftJars
-
getMinecraftJarsCollection
取某个命名空间下的 Minecraft jar 集合.已登记任务产出(见
setMinecraftJarsTaskOutputs(net.fabricmc.loom.api.mappings.layered.MappingsNamespace, org.gradle.api.file.FileCollection))时,返回的集合派生自产出任务, 携带任务依赖;未登记时回退到配置期已经落盘的文件,此时集合里是裸File, 不携带任何任务依赖。同一命名空间返回的是同一份集合实例
消费方通常在**自己的任务注册期**就调用本方法,而产出方的登记发生在更晚(afterEvaluate里的provide)。因此登记不是「换一份新集合」,而是把任务产出并进已发出的那一份 (见setMinecraftJarsTaskOutputs(net.fabricmc.loom.api.mappings.layered.MappingsNamespace, org.gradle.api.file.FileCollection));否则先取走引用的消费方手里永远是未登记时的快照, 任务依赖会静默丢失,冷缓存下消费方就会读到一个还不存在的 jar。- Parameters:
mappingsNamespace- 目标命名空间- Returns:
- 该命名空间下的 Minecraft jar 集合
-
setMinecraftJarsTaskOutputs
void setMinecraftJarsTaskOutputs(MappingsNamespace mappingsNamespace, org.gradle.api.file.FileCollection taskOutputs) 登记某个命名空间下、由任务产出的 Minecraft jar 集合.为什么必须由产出方登记
消费方(ValidateAccessWidenerTask、ValidateModProvidedJavadocTask等) 在注册自己的任务时看不到产出 MC jar 的那个TaskProvider,无法自行接上依赖; 产出方在注册任务之后调用本方法,是唯一能把这份依赖传播给全部消费方的位置。对入参的要求
taskOutputs必须派生自TaskProvider,例如project.files(remapTask.flatMap(t -> t.getOutputJar()))。 携带任务依赖的是Provider本身,裸File/Path不会携带—— 传入裸文件等价于没有登记。登记是「并进」而不是「替换引用」
本方法把taskOutputs并进getMinecraftJarsCollection(net.fabricmc.loom.api.mappings.layered.MappingsNamespace)为该命名空间返回的 那一份集合实例(尚未取过则现建一份),因此已经持有引用的消费方同样能拿到任务依赖。 同一命名空间重复登记时内容以最后一次为准——后一次会整体替换前一次的内容, 而不是把两份 jar 都留在集合里(例如 processed provider 覆盖未处理的 provider)。- Parameters:
mappingsNamespace- 该集合所属的命名空间taskOutputs- 由任务产出的 jar 集合
-
getMixin
MixinExtension getMixin()- Specified by:
getMixinin interfaceLoomGradleExtensionAPI
-
getTransitiveAccessWideners
List<AccessWidenerFile> getTransitiveAccessWideners() -
addTransitiveAccessWideners
-
download
-
refreshDeps
boolean refreshDeps() -
setRefreshDeps
void setRefreshDeps(boolean refreshDeps) -
getLibraryProcessors
org.gradle.api.provider.ListProperty<LibraryProcessorManager.LibraryProcessorFactory> getLibraryProcessors() -
getRemapperExtensions
org.gradle.api.provider.ListProperty<RemapperExtensionHolder> getRemapperExtensions() -
getLayeredMappingFactories
Collection<LayeredMappingsFactory> getLayeredMappingFactories() -
isConfigurationCacheActive
boolean isConfigurationCacheActive() -
isProjectIsolationActive
boolean isProjectIsolationActive() -
isCollectingDependencyVerificationMetadata
boolean isCollectingDependencyVerificationMetadata()- Returns:
- true when '--write-verification-metadata` is set
-
dontRemapOutputs
boolean dontRemapOutputs()When enabled do not remap the output jars. -
disableObfuscation
boolean disableObfuscation()When enabled disable all forms of remapping. -
getPatchProvider
-
getMcpConfigProvider
-
isDataGenEnabled
default boolean isDataGenEnabled() -
isForgeLikeAndOfficial
default boolean isForgeLikeAndOfficial() -
isForgeLikeAndNotOfficial
default boolean isForgeLikeAndNotOfficial() -
isUnobfuscatedForge
default boolean isUnobfuscatedForge() -
getDependencyProviders
DependencyProviders getDependencyProviders() -
setDependencyProviders
-
getSrgProvider
-
getForgeUniversalProvider
-
getForgeUserdevProvider
-
isLegacyForge
default boolean isLegacyForge()是否为 legacy Forge(1.8-1.16,ForgeGradle 2 时代).判定依据是 userdev 配置的形态(FG2 与 userdev3 都算 legacy), 因此必须在 userdev 解析完成后调用;未解析时
ForgeUserdevProvider.isLegacyForge()会抛异常。 -
isModernForgeLike
default boolean isModernForgeLike()是否为 Forge 系(含 NeoForge)中的现代版本,即非 legacy Forge. -
getForgeProvider
-
getForgeRunsProvider
ForgeRunsProvider getForgeRunsProvider() -
setForgeRunsProvider
-
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
-
manualRefreshDeps
boolean manualRefreshDeps()
-