Skip to content

Commit

Permalink
Support Loom 1.1
Browse files Browse the repository at this point in the history
  • Loading branch information
shedaniel committed Feb 18, 2023
1 parent ae88ef5 commit 2109738
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 0 deletions.
9 changes: 9 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,14 @@ sourceSets {
runtimeClasspath += main.output
}
}
loom11 {
java {
compileClasspath += main.compileClasspath
runtimeClasspath += main.runtimeClasspath
compileClasspath += main.output
runtimeClasspath += main.output
}
}
}

dependencies {
Expand All @@ -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"
}
Expand Down
1 change: 1 addition & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
83 changes: 83 additions & 0 deletions src/loom11/kotlin/dev/architectury/plugin/loom/LoomInterface11.kt
Original file line number Diff line number Diff line change
@@ -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<File>
get() {
val files = mutableListOf<File>()
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<RegularFile>) {
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
}
}
3 changes: 3 additions & 0 deletions src/main/kotlin/dev/architectury/plugin/loom/LoomInterface.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down

0 comments on commit 2109738

Please sign in to comment.