From: shedaniel Date: Sat, 3 Oct 2020 19:03:13 +0000 (+0800) Subject: Migrate to using the architect plugin X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=4b1456909e08605317c8f29994b35495045f6c19;p=LightOverlay.git Migrate to using the architect plugin Signed-off-by: shedaniel --- diff --git a/architectPlugin/build.gradle b/architectPlugin/build.gradle deleted file mode 100644 index 7db7ebe..0000000 --- a/architectPlugin/build.gradle +++ /dev/null @@ -1,35 +0,0 @@ -plugins { - id "org.jetbrains.kotlin.jvm" version "1.3.72" -} - -repositories { - jcenter() - maven { url "https://maven.fabricmc.net/" } -} - -apply plugin: 'java-gradle-plugin' - -dependencies { - implementation gradleApi() - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72" - implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.72" - implementation "net.fabricmc:fabric-loom:0.5-SNAPSHOT" - runtime "net.fabricmc:fabric-loom:0.5-SNAPSHOT" - implementation "net.fabricmc:tiny-remapper:0.3.0.70" - implementation "net.fabricmc:tiny-mappings-parser:0.2.2.14" -} - -compileKotlin { - kotlinOptions { - jvmTarget = "1.8" - } -} - -gradlePlugin { - plugins { - architect { - id = 'me.shedaniel.plugin.architect' - implementationClass = 'me.shedaniel.plugin.architect.ArchitectPlugin' - } - } -} \ No newline at end of file diff --git a/architectPlugin/settings.gradle b/architectPlugin/settings.gradle deleted file mode 100644 index 9c68a5a..0000000 --- a/architectPlugin/settings.gradle +++ /dev/null @@ -1,6 +0,0 @@ -pluginManagement { - repositories { - jcenter() - gradlePluginPortal() - } -} diff --git a/architectPlugin/src/main/kotlin/me/shedaniel/plugin/architect/ArchitectPlugin.kt b/architectPlugin/src/main/kotlin/me/shedaniel/plugin/architect/ArchitectPlugin.kt deleted file mode 100644 index 21638f8..0000000 --- a/architectPlugin/src/main/kotlin/me/shedaniel/plugin/architect/ArchitectPlugin.kt +++ /dev/null @@ -1,28 +0,0 @@ -package me.shedaniel.plugin.architect - -import org.gradle.api.JavaVersion -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.plugins.JavaPluginExtension - -class ArchitectPlugin : Plugin { - override fun apply(project: Project) { - project.apply(mapOf( - "plugin" to "java", - "plugin" to "eclipse", - "plugin" to "idea" - )) - project.extensions.create("architect", ArchitectPluginExtension::class.java, project) - - project.afterEvaluate { - project.extensions.getByType(JavaPluginExtension::class.java).apply { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - } - - project.tasks.register("remapMcp", RemapMCPTask::class.java) { - - } - } -} \ No newline at end of file diff --git a/architectPlugin/src/main/kotlin/me/shedaniel/plugin/architect/ArchitectPluginExtension.kt b/architectPlugin/src/main/kotlin/me/shedaniel/plugin/architect/ArchitectPluginExtension.kt deleted file mode 100644 index afd5a3e..0000000 --- a/architectPlugin/src/main/kotlin/me/shedaniel/plugin/architect/ArchitectPluginExtension.kt +++ /dev/null @@ -1,28 +0,0 @@ -package me.shedaniel.plugin.architect - -import org.gradle.api.Project - -open class ArchitectPluginExtension(val project: Project) { - var minecraft = "" - - fun common() { - project.configurations.create("mcp") - - project.tasks.getByName("remapMcp") { - it as RemapMCPTask - - it.input.set(project.file("${project.buildDir}/libs/${project.properties["archivesBaseName"]}-${project.version}-dev.jar")) - it.archiveClassifier.set("mcp") - it.dependsOn(project.tasks.getByName("jar")) - project.tasks.getByName("build").dependsOn(it) - } - - project.artifacts { - it.add("mcp", mapOf( - "file" to project.file("${project.buildDir}/libs/${project.properties["archivesBaseName"]}-${project.version}-mcp.jar"), - "type" to "jar", - "builtBy" to project.tasks.getByName("remapMcp") - )) - } - } -} \ No newline at end of file diff --git a/architectPlugin/src/main/kotlin/me/shedaniel/plugin/architect/RemapMCPTask.kt b/architectPlugin/src/main/kotlin/me/shedaniel/plugin/architect/RemapMCPTask.kt deleted file mode 100644 index 9d97daf..0000000 --- a/architectPlugin/src/main/kotlin/me/shedaniel/plugin/architect/RemapMCPTask.kt +++ /dev/null @@ -1,154 +0,0 @@ -@file:Suppress("UnstableApiUsage") - -package me.shedaniel.plugin.architect - -import net.fabricmc.loom.LoomGradleExtension -import net.fabricmc.loom.util.GradleSupport -import net.fabricmc.loom.util.TinyRemapperMappingsHelper -import net.fabricmc.mapping.tree.TinyTree -import net.fabricmc.tinyremapper.IMappingProvider -import net.fabricmc.tinyremapper.NonClassCopyMode -import net.fabricmc.tinyremapper.OutputConsumerPath -import net.fabricmc.tinyremapper.TinyRemapper -import org.gradle.api.file.RegularFileProperty -import org.gradle.api.tasks.TaskAction -import org.gradle.jvm.tasks.Jar -import java.io.File -import java.io.FileNotFoundException -import java.io.InputStream -import java.net.URL -import java.nio.file.Files -import java.nio.file.Path - - -open class RemapMCPTask : Jar() { - private val fromM: String = "named" - private val toM: String = "official" - val input: RegularFileProperty = GradleSupport.getfileProperty(project) - - @TaskAction - fun doTask() { - val input: Path = this.input.asFile.get().toPath() - val output: Path = this.archiveFile.get().asFile.toPath() - - output.toFile().delete() - - if (!Files.exists(input)) { - throw FileNotFoundException(input.toString()) - } - - val remapperBuilder: TinyRemapper.Builder = TinyRemapper.newRemapper() - - val classpathFiles: Set = LinkedHashSet( - project.configurations.getByName("compileClasspath").files - ) - val classpath = classpathFiles.asSequence().map { obj: File -> obj.toPath() }.filter { p: Path -> input != p && Files.exists(p) }.toList().toTypedArray() - - val mappings = getMappings() - val mojmapToMcpClass = createMojmapToMcpClass(mappings) - remapperBuilder.withMappings(remapToMcp(TinyRemapperMappingsHelper.create(mappings, fromM, fromM, false), mojmapToMcpClass)) - remapperBuilder.ignoreFieldDesc(true) - remapperBuilder.skipLocalVariableMapping(true) - - project.logger.lifecycle(":remapping " + input.fileName) - - val architectFolder = project.rootProject.buildDir.resolve("tmp/architect") - architectFolder.deleteRecursively() - architectFolder.mkdirs() - val manifestFile = architectFolder.resolve("META-INF/MANIFEST.MF") - manifestFile.parentFile.mkdirs() - manifestFile.writeText(""" -Manifest-Version: 1.0 -FMLModType: LIBRARY - - """.trimIndent()) - - val remapper = remapperBuilder.build() - - try { - OutputConsumerPath.Builder(output).build().use { outputConsumer -> - outputConsumer.addNonClassFiles(input, NonClassCopyMode.SKIP_META_INF, null) - outputConsumer.addNonClassFiles(architectFolder.toPath(), NonClassCopyMode.UNCHANGED, null) - remapper.readClassPath(*classpath) - remapper.readInputs(input) - remapper.apply(outputConsumer) - } - } catch (e: Exception) { - remapper.finish() - throw RuntimeException("Failed to remap $input to $output", e) - } - - architectFolder.deleteRecursively() - remapper.finish() - - if (!Files.exists(output)) { - throw RuntimeException("Failed to remap $input to $output - file missing!") - } - } - - private fun remapToMcp(parent: IMappingProvider, mojmapToMcpClass: Map): IMappingProvider = IMappingProvider { - it.acceptClass("net/fabricmc/api/Environment", "net/minecraftforge/api/distmarker/OnlyIn") - it.acceptClass("net/fabricmc/api/EnvType", "net/minecraftforge/api/distmarker/Dist") - it.acceptField(IMappingProvider.Member("net/fabricmc/api/EnvType", "SERVER", "Lnet/fabricmc/api/EnvType;"), "DEDICATED_SERVER") - - parent.load(object : IMappingProvider.MappingAcceptor { - override fun acceptClass(srcName: String?, dstName: String?) { - it.acceptClass(srcName, mojmapToMcpClass[srcName] ?: srcName) - } - - override fun acceptMethod(method: IMappingProvider.Member?, dstName: String?) { - } - - override fun acceptMethodArg(method: IMappingProvider.Member?, lvIndex: Int, dstName: String?) { - } - - override fun acceptMethodVar(method: IMappingProvider.Member?, lvIndex: Int, startOpIdx: Int, asmIndex: Int, dstName: String?) { - } - - override fun acceptField(field: IMappingProvider.Member?, dstName: String?) { - } - }) - } - - private fun getMappings(): TinyTree { - val loomExtension = project.extensions.getByType(LoomGradleExtension::class.java) - return loomExtension.mappingsProvider.mappings - } - - private fun getRootExtension(): ArchitectPluginExtension = - project.rootProject.extensions.getByType(ArchitectPluginExtension::class.java) - - private fun createMojmapToMcpClass(mappings: TinyTree): Map { - val mcpMappings = readMCPMappings(getRootExtension().minecraft) - val mutableMap = mutableMapOf() - mappings.classes.forEach { clazz -> - val official = clazz.getName("official") - val named = clazz.getName("named") - val mcp = mcpMappings[official] - if (mcp != null) { - mutableMap[named] = mcp - } - } - return mutableMap - } - - private fun readMCPMappings(version: String): Map { - val file = project.rootProject.file(".gradle/mappings/mcp-$version.tsrg") - if (file.exists().not()) { - file.parentFile.mkdirs() - file.writeText(URL("https://raw.githubusercontent.com/MinecraftForge/MCPConfig/master/versions/release/$version/joined.tsrg").readText()) - } - return mutableMapOf().also { readMappings(it, file.inputStream()) } - } - - private fun readMappings(mutableMap: MutableMap, inputStream: InputStream) { - inputStream.bufferedReader().forEachLine { - if (!it.startsWith("\t")) { - val split = it.split(" ") - val obf = split[0] - val className = split[1] - mutableMap[obf] = className - } - } - } -} \ No newline at end of file diff --git a/build.gradle b/build.gradle index 228b6bd..fe4719b 100644 --- a/build.gradle +++ b/build.gradle @@ -20,7 +20,7 @@ import java.util.zip.ZipInputStream import java.util.zip.ZipOutputStream plugins { - id "me.shedaniel.plugin.architect" + id "architect-plugin" version "1.0.6" id "org.jetbrains.gradle.plugin.idea-ext" version "0.7" } @@ -30,7 +30,7 @@ architect { allprojects { apply plugin: "java" - apply plugin: "me.shedaniel.plugin.architect" + apply plugin: "architect-plugin" group "me.shedaniel" archivesBaseName = rootProject.name diff --git a/forge/build.gradle b/forge/build.gradle index 7c65caf..c8f2722 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -53,7 +53,7 @@ dependencies { minecraft("net.minecraftforge:forge:${rootProject.architect.minecraft}-${project.forge_version}") implementation(fg.deobf("me.shedaniel.cloth:cloth-config-forge:${rootProject.cloth_config_forge}")) - compile(project(path: ":common", configuration: "mcp")) { + compile(project(path: ":common", configuration: "mcpGenerateMod")) { transitive = false } shadow(project(path: ":common", configuration: "mcp")) { diff --git a/settings.gradle b/settings.gradle index 9772f17..5cfc931 100644 --- a/settings.gradle +++ b/settings.gradle @@ -5,13 +5,12 @@ pluginManagement { name = 'Fabric' url = 'https://maven.fabricmc.net/' } + maven { url "https://dl.bintray.com/shedaniel/cloth" } gradlePluginPortal() } } -includeBuild("architectPlugin") - -rootProject.name="light-overlay" +rootProject.name = "light-overlay" include("common") include("fabric")