From 5c190d4d1224bbf2112718d1c5024b3fe96e5715 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Thu, 28 Oct 2021 14:14:33 +0800 Subject: [PATCH] Fix support for Loom 0.10.0.188 Signed-off-by: shedaniel --- build.gradle | 11 +++- gradle.properties | 3 +- .../plugin/loom/LoomInterface010.kt | 8 +-- .../plugin/loom/LoomInterface010Legacy.kt | 59 +++++++++++++++++++ .../plugin/loom/LoomInterface06.kt | 8 +-- .../plugin/loom/LoomInterface09.kt | 8 +-- .../plugin/ArchitecturyPluginExtension.kt | 23 +++++--- .../architectury/plugin/loom/LoomInterface.kt | 3 +- 8 files changed, 97 insertions(+), 26 deletions(-) create mode 100644 src/loom010Legacy/kotlin/dev/architectury/plugin/loom/LoomInterface010Legacy.kt diff --git a/build.gradle b/build.gradle index be6b593..4c09496 100644 --- a/build.gradle +++ b/build.gradle @@ -52,6 +52,14 @@ sourceSets { runtimeClasspath += main.output } } + loom010Legacy { + java { + compileClasspath += main.compileClasspath + runtimeClasspath += main.runtimeClasspath + compileClasspath += main.output + runtimeClasspath += main.output + } + } loom010 { java { compileClasspath += main.compileClasspath @@ -70,6 +78,7 @@ dependencies { implementation "dev.architectury:architectury-transformer:$transformer_version" loom06CompileOnly "me.shedaniel:forgified-fabric-loom:$loom_version_06" loom09CompileOnly "dev.architectury:architectury-loom:$loom_version_09" + loom010LegacyCompileOnly "dev.architectury:architectury-loom:$loom_version_010Legacy" loom010CompileOnly "dev.architectury:architectury-loom:$loom_version_010" implementation "dev.architectury:tiny-remapper:1.1.0" implementation "com.google.code.gson:gson:2.8.5" @@ -87,7 +96,7 @@ jar { attributes 'Implementation-Version': project.version } - from sourceSets.loom06.output + sourceSets.loom09.output + sourceSets.loom010.output + from sourceSets.loom06.output + sourceSets.loom09.output + sourceSets.loom010Legacy.output + sourceSets.loom010.output } gradlePlugin { diff --git a/gradle.properties b/gradle.properties index 5f0cd20..d0a2080 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,7 @@ kotlin.code.style=official loom_version_06=0.6.96 loom_version_09=0.9.0.158 -loom_version_010=0.10.0.171 +loom_version_010Legacy=0.10.0.171 +loom_version_010=0.10.0.188 transformer_version=5.1.58 base_version=3.4 \ No newline at end of file diff --git a/src/loom010/kotlin/dev/architectury/plugin/loom/LoomInterface010.kt b/src/loom010/kotlin/dev/architectury/plugin/loom/LoomInterface010.kt index 1abf243..1cbee13 100644 --- a/src/loom010/kotlin/dev/architectury/plugin/loom/LoomInterface010.kt +++ b/src/loom010/kotlin/dev/architectury/plugin/loom/LoomInterface010.kt @@ -52,10 +52,8 @@ class LoomInterface010(private val project: Project) : LoomInterface { config.mainClass = value } - override var vmArgs: String - get() = config.vmArgs - set(value) { - config.vmArgs = value - } + override fun addVmArg(vmArg: String) { + config.vmArgs.add(vmArg) + } } } \ No newline at end of file diff --git a/src/loom010Legacy/kotlin/dev/architectury/plugin/loom/LoomInterface010Legacy.kt b/src/loom010Legacy/kotlin/dev/architectury/plugin/loom/LoomInterface010Legacy.kt new file mode 100644 index 0000000..b96b927 --- /dev/null +++ b/src/loom010Legacy/kotlin/dev/architectury/plugin/loom/LoomInterface010Legacy.kt @@ -0,0 +1,59 @@ +package dev.architectury.plugin.loom + +import net.fabricmc.loom.LoomGradleExtension +import net.fabricmc.loom.configuration.ide.RunConfig +import net.fabricmc.loom.task.RemapJarTask +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 LoomInterface010Legacy(private val project: Project) : LoomInterface { + private val extension: LoomGradleExtension + get() = LoomGradleExtension.get(project) + + override val allMixinMappings: Collection + get() = extension.allMixinMappings + + override val tinyMappingsWithSrg: Path + get() = extension.mappingsProvider.tinyMappingsWithSrg + + override val refmapName: String + get() = extension.mixin.defaultRefmapName.get() + + override var generateSrgTiny: Boolean + get() = extension.shouldGenerateSrgTiny() + set(value) { + extension.setGenerateSrgTiny(value) + } + + 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 += " $vmArg" + } + } +} \ No newline at end of file diff --git a/src/loom06/kotlin/dev/architectury/plugin/loom/LoomInterface06.kt b/src/loom06/kotlin/dev/architectury/plugin/loom/LoomInterface06.kt index 8317197..c333520 100644 --- a/src/loom06/kotlin/dev/architectury/plugin/loom/LoomInterface06.kt +++ b/src/loom06/kotlin/dev/architectury/plugin/loom/LoomInterface06.kt @@ -55,10 +55,8 @@ class LoomInterface06(private val project: Project) : LoomInterface { config.mainClass = value } - override var vmArgs: String - get() = config.vmArgs - set(value) { - config.vmArgs = value - } + override fun addVmArg(vmArg: String) { + config.vmArgs += " $vmArg" + } } } \ No newline at end of file diff --git a/src/loom09/kotlin/dev/architectury/plugin/loom/LoomInterface09.kt b/src/loom09/kotlin/dev/architectury/plugin/loom/LoomInterface09.kt index 381c039..3681510 100644 --- a/src/loom09/kotlin/dev/architectury/plugin/loom/LoomInterface09.kt +++ b/src/loom09/kotlin/dev/architectury/plugin/loom/LoomInterface09.kt @@ -52,10 +52,8 @@ class LoomInterface09(private val project: Project) : LoomInterface { config.mainClass = value } - override var vmArgs: String - get() = config.vmArgs - set(value) { - config.vmArgs = value - } + override fun addVmArg(vmArg: String) { + config.vmArgs += " $vmArg" + } } } \ No newline at end of file diff --git a/src/main/kotlin/dev/architectury/plugin/ArchitecturyPluginExtension.kt b/src/main/kotlin/dev/architectury/plugin/ArchitecturyPluginExtension.kt index ee16a76..427acdb 100644 --- a/src/main/kotlin/dev/architectury/plugin/ArchitecturyPluginExtension.kt +++ b/src/main/kotlin/dev/architectury/plugin/ArchitecturyPluginExtension.kt @@ -137,12 +137,16 @@ open class ArchitectPluginExtension(val project: Project) { plsAddInjectables = true } val architecturyJavaAgents = project.configurations.create("architecturyJavaAgents") { - project.configurations.getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME).extendsFrom(it) + project.configurations.getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME) + .extendsFrom(it) } transformedLoom = true with(project.dependencies) { - add(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME, "dev.architectury:architectury-transformer:$transformerVersion:runtime") + add( + JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME, + "dev.architectury:architectury-transformer:$transformerVersion:runtime" + ) add( "architecturyJavaAgents", "dev.architectury:architectury-transformer:$transformerVersion:agent" @@ -163,15 +167,15 @@ open class ArchitectPluginExtension(val project: Project) { val s = config.mainClass config.mainClass = "dev.architectury.transformer.TransformerRuntime" mainClassTransformerFile.writeText(s) - config.vmArgs += " -Darchitectury.main.class=${mainClassTransformerFile.absolutePath.escapeSpaces()}" - config.vmArgs += " -Darchitectury.runtime.transformer=${runtimeTransformerFile.absolutePath.escapeSpaces()}" - config.vmArgs += " -Darchitectury.properties=${propertiesTransformerFile.absolutePath.escapeSpaces()}" - config.vmArgs += " -Djdk.attach.allowAttachSelf=true" + config.addVmArg("-Darchitectury.main.class=${mainClassTransformerFile.absolutePath.escapeSpaces()}") + config.addVmArg("-Darchitectury.runtime.transformer=${runtimeTransformerFile.absolutePath.escapeSpaces()}") + config.addVmArg("-Darchitectury.properties=${propertiesTransformerFile.absolutePath.escapeSpaces()}") + config.addVmArg("-Djdk.attach.allowAttachSelf=true") if (architecturyJavaAgents.toList().size == 1) { if (!agentFile.exists() || agentFile.delete()) { architecturyJavaAgents.first().copyTo(agentFile, overwrite = true) } - config.vmArgs += " -javaagent:${agentFile.absolutePath.escapeSpaces()}" + config.addVmArg("-javaagent:${agentFile.absolutePath.escapeSpaces()}") } else { throw IllegalStateException( "Illegal Count of Architectury Java Agents! " + architecturyJavaAgents.toList() @@ -242,7 +246,10 @@ open class ArchitectPluginExtension(val project: Project) { } with(project.dependencies) { - add(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME, "dev.architectury:architectury-injectables:$injectablesVersion") + add( + JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME, + "dev.architectury:architectury-injectables:$injectablesVersion" + ) if (plsAddInjectables) { add( diff --git a/src/main/kotlin/dev/architectury/plugin/loom/LoomInterface.kt b/src/main/kotlin/dev/architectury/plugin/loom/LoomInterface.kt index 979d4a0..ba1b36d 100644 --- a/src/main/kotlin/dev/architectury/plugin/loom/LoomInterface.kt +++ b/src/main/kotlin/dev/architectury/plugin/loom/LoomInterface.kt @@ -18,6 +18,7 @@ interface LoomInterface { interface LoomRunConfig { var mainClass: String - var vmArgs: String + + fun addVmArg(vmArg: String) } } \ No newline at end of file