diff --git a/build.gradle b/build.gradle index ca8a656..f7fc347 100644 --- a/build.gradle +++ b/build.gradle @@ -76,6 +76,14 @@ sourceSets { runtimeClasspath += main.output } } + loom11 { + java { + compileClasspath += main.compileClasspath + runtimeClasspath += main.runtimeClasspath + compileClasspath += main.output + runtimeClasspath += main.output + } + } } dependencies { @@ -91,6 +99,7 @@ dependencies { loom011CompileOnly "dev.architectury:architectury-loom:$loom_version_011" loom011CompileOnly "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.10" loom011CompileOnly "org.jetbrains.kotlin:kotlin-reflect:1.5.10" + loom11CompileOnly "dev.architectury:architectury-loom:$loom_version_11" implementation "dev.architectury:tiny-remapper:1.1.0" implementation "com.google.code.gson:gson:2.8.5" } diff --git a/gradle.properties b/gradle.properties index 74a217e..5681c4c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,5 +4,6 @@ loom_version_09=0.9.0.158 loom_version_010Legacy=0.10.0.171 loom_version_010=0.10.0.188 loom_version_011=0.11.0.217 +loom_version_11=1.1.313 transformer_version=5.2.72 base_version=3.4 \ No newline at end of file diff --git a/src/loom11/kotlin/dev/architectury/plugin/loom/LoomInterface11.kt b/src/loom11/kotlin/dev/architectury/plugin/loom/LoomInterface11.kt new file mode 100644 index 0000000..97ebea4 --- /dev/null +++ b/src/loom11/kotlin/dev/architectury/plugin/loom/LoomInterface11.kt @@ -0,0 +1,83 @@ +package dev.architectury.plugin.loom + +import net.fabricmc.loom.LoomGradleExtension +import net.fabricmc.loom.build.mixin.AnnotationProcessorInvoker +import net.fabricmc.loom.configuration.ide.RunConfig +import net.fabricmc.loom.task.RemapJarTask +import net.fabricmc.loom.util.gradle.GradleUtils +import net.fabricmc.loom.util.gradle.SourceSetHelper +import org.gradle.api.Project +import org.gradle.api.file.RegularFile +import org.gradle.api.provider.Provider +import org.gradle.jvm.tasks.Jar +import java.io.File +import java.nio.file.Path +import java.util.function.Consumer + +class LoomInterface11(private val project: Project) : LoomInterface { + private val extension: LoomGradleExtension + get() = LoomGradleExtension.get(project) + + override val allMixinMappings: Collection + get() { + val files = mutableListOf() + GradleUtils.allLoomProjects(project.gradle) { project: Project -> + val extension = LoomGradleExtension.get(project) + if (!this.extension.mappingConfiguration.mappingsIdentifier.equals(extension.mappingConfiguration.mappingsIdentifier)) { + // Only find mixin mappings that are from other projects with the same mapping id. + return@allLoomProjects + } + for (sourceSet in SourceSetHelper.getSourceSets(project)) { + val mixinMappings: File = AnnotationProcessorInvoker.getMixinMappingsForSourceSet(project, sourceSet) + if (!mixinMappings.exists()) { + continue + } + files.add(mixinMappings) + } + } + return files + } + + override val tinyMappingsWithSrg: Path + get() = extension.mappingConfiguration.tinyMappingsWithSrg + + override val refmapName: String + get() = extension.mixin.defaultRefmapName.get() + + override var generateSrgTiny: Boolean + get() = extension.shouldGenerateSrgTiny() + set(value) { + extension.setGenerateSrgTiny(value) + } + + override val generateTransformerPropertiesInTask = true + + override fun settingsPostEdit(action: (config: LoomInterface.LoomRunConfig) -> Unit) { + extension.settingsPostEdit.add(Consumer { c -> action(LoomRunConfigImpl(c)) }) + } + + override fun setIdeConfigGenerated() { + extension.runConfigs.forEach { it.isIdeConfigGenerated = true } + extension.runConfigs.whenObjectAdded { it.isIdeConfigGenerated = true } + extension.addTaskBeforeRun("\$PROJECT_DIR\$/${project.name}:classes") + } + + override fun setRemapJarInput(task: Jar, archiveFile: Provider) { + task as RemapJarTask + task.input.set(archiveFile) + } + + class LoomRunConfigImpl(private val config: RunConfig) : LoomInterface.LoomRunConfig { + override var mainClass: String + get() = config.mainClass + set(value) { + config.mainClass = value + } + + override fun addVmArg(vmArg: String) { + config.vmArgs.add(vmArg) + } + + override fun escape(arg: String): String = arg + } +} \ No newline at end of file diff --git a/src/main/kotlin/dev/architectury/plugin/loom/LoomInterface.kt b/src/main/kotlin/dev/architectury/plugin/loom/LoomInterface.kt index 293a2ec..ae35d04 100644 --- a/src/main/kotlin/dev/architectury/plugin/loom/LoomInterface.kt +++ b/src/main/kotlin/dev/architectury/plugin/loom/LoomInterface.kt @@ -26,6 +26,9 @@ interface LoomInterface { } return useIfFound( + "net.fabricmc.loom.util.service.ScopedSharedServiceManager", + "dev.architectury.plugin.loom.LoomInterface11" // 1.1 + ) ?: useIfFound( "net.fabricmc.loom.util.service.SharedServiceManager", "dev.architectury.plugin.loom.LoomInterface011" // 0.11.0 ) ?: useIfFound(