diff --git a/src/main/kotlin/me/shedaniel/architect/plugin/TransformingTask.kt b/src/main/kotlin/me/shedaniel/architect/plugin/TransformingTask.kt index e7259b0..db2382f 100644 --- a/src/main/kotlin/me/shedaniel/architect/plugin/TransformingTask.kt +++ b/src/main/kotlin/me/shedaniel/architect/plugin/TransformingTask.kt @@ -37,13 +37,22 @@ open class TransformingTask : Jar() { Files.deleteIfExists(o) Files.createDirectories(o.parent) runCatching { + var skipped = false measureTime { - transformer(project, i, o) + try { + transformer(project, i, o) + } catch (ignored: TransformerStepSkipped) { + skipped = true + } if (index != 0) { Files.deleteIfExists(i) } }.let { duration -> - project.logger.lifecycle(":finished transforming step ${index + 1}/${transformers.size} [${transformer::class.simpleName}] in $duration") + if (skipped) { + project.logger.lifecycle(":skipped transforming step ${index + 1}/${transformers.size} [${transformer::class.simpleName}] in $duration") + } else { + project.logger.lifecycle(":finished transforming step ${index + 1}/${transformers.size} [${transformer::class.simpleName}] in $duration") + } } }.onFailure { throw RuntimeException( @@ -94,4 +103,6 @@ fun Project.projectUniqueIdentifier(): String { return "architectury_inject_${name}_$id".filter { Character.isJavaIdentifierPart(it) } } -typealias Transformer = (project: Project, input: Path, output: Path) -> Unit \ No newline at end of file +typealias Transformer = (project: Project, input: Path, output: Path) -> Unit + +object TransformerStepSkipped : Throwable() \ No newline at end of file diff --git a/src/main/kotlin/me/shedaniel/architect/plugin/transformers/AddRefmapName.kt b/src/main/kotlin/me/shedaniel/architect/plugin/transformers/AddRefmapName.kt index 5902abf..d695c10 100644 --- a/src/main/kotlin/me/shedaniel/architect/plugin/transformers/AddRefmapName.kt +++ b/src/main/kotlin/me/shedaniel/architect/plugin/transformers/AddRefmapName.kt @@ -1,6 +1,7 @@ package me.shedaniel.architect.plugin.transformers import me.shedaniel.architect.plugin.Transformer +import me.shedaniel.architect.plugin.TransformerStepSkipped import net.fabricmc.loom.LoomGradleExtension import org.gradle.api.Project import java.nio.file.Files @@ -36,6 +37,8 @@ object AddRefmapName : Transformer { ) as Boolean ) { project.logger.debug("Transformed mixin reference maps in output JAR!") + } else { + throw TransformerStepSkipped } } } \ No newline at end of file diff --git a/src/main/kotlin/me/shedaniel/architect/plugin/transformers/FixForgeMixin.kt b/src/main/kotlin/me/shedaniel/architect/plugin/transformers/FixForgeMixin.kt index 33b98d1..954d597 100644 --- a/src/main/kotlin/me/shedaniel/architect/plugin/transformers/FixForgeMixin.kt +++ b/src/main/kotlin/me/shedaniel/architect/plugin/transformers/FixForgeMixin.kt @@ -4,6 +4,7 @@ import com.google.gson.GsonBuilder import com.google.gson.JsonObject import com.google.gson.JsonParser import me.shedaniel.architect.plugin.Transformer +import me.shedaniel.architect.plugin.TransformerStepSkipped import net.fabricmc.loom.LoomGradleExtension import org.gradle.api.Project import org.zeroturnaround.zip.ZipUtil @@ -83,6 +84,9 @@ object FixForgeMixin : Transformer { } } else { project.logger.info("Failed to locate refmap: $refmap") + if (mixinConfigs.isEmpty()) { + throw TransformerStepSkipped + } } } diff --git a/src/main/kotlin/me/shedaniel/architect/plugin/transformers/RemapMixinVariables.kt b/src/main/kotlin/me/shedaniel/architect/plugin/transformers/RemapMixinVariables.kt index 4d87eb4..b1dfea4 100644 --- a/src/main/kotlin/me/shedaniel/architect/plugin/transformers/RemapMixinVariables.kt +++ b/src/main/kotlin/me/shedaniel/architect/plugin/transformers/RemapMixinVariables.kt @@ -1,6 +1,7 @@ package me.shedaniel.architect.plugin.transformers import me.shedaniel.architect.plugin.Transformer +import me.shedaniel.architect.plugin.TransformerStepSkipped import me.shedaniel.architect.plugin.utils.validateJarFs import net.fabricmc.loom.LoomGradleExtension import net.fabricmc.loom.util.LoggerFilter @@ -34,7 +35,7 @@ object RemapMixinVariables : Transformer { if (!requiresRemap) { Files.copy(input, output) - return + throw TransformerStepSkipped } val remapper = remapperBuilder.build() diff --git a/src/main/kotlin/me/shedaniel/architect/plugin/transformers/RemoveFabricModJson.kt b/src/main/kotlin/me/shedaniel/architect/plugin/transformers/RemoveFabricModJson.kt index 27013d2..e4294d4 100644 --- a/src/main/kotlin/me/shedaniel/architect/plugin/transformers/RemoveFabricModJson.kt +++ b/src/main/kotlin/me/shedaniel/architect/plugin/transformers/RemoveFabricModJson.kt @@ -1,6 +1,7 @@ package me.shedaniel.architect.plugin.transformers import me.shedaniel.architect.plugin.Transformer +import me.shedaniel.architect.plugin.TransformerStepSkipped import org.gradle.api.Project import org.zeroturnaround.zip.ZipUtil import java.nio.file.Files @@ -11,6 +12,8 @@ object RemoveFabricModJson : Transformer { Files.copy(input, output) if (ZipUtil.containsEntry(output.toFile(), "fabric.mod.json")) { ZipUtil.removeEntry(output.toFile(), "fabric.mod.json") + } else { + throw TransformerStepSkipped } } } \ No newline at end of file diff --git a/src/main/kotlin/me/shedaniel/architect/plugin/transformers/TransformForgeEnvironment.kt b/src/main/kotlin/me/shedaniel/architect/plugin/transformers/TransformForgeEnvironment.kt index 53f386a..db44283 100644 --- a/src/main/kotlin/me/shedaniel/architect/plugin/transformers/TransformForgeEnvironment.kt +++ b/src/main/kotlin/me/shedaniel/architect/plugin/transformers/TransformForgeEnvironment.kt @@ -1,6 +1,7 @@ package me.shedaniel.architect.plugin.transformers import me.shedaniel.architect.plugin.Transformer +import me.shedaniel.architect.plugin.TransformerStepSkipped import me.shedaniel.architect.plugin.utils.validateJarFs import net.fabricmc.loom.LoomGradleExtension import net.fabricmc.loom.util.LoggerFilter @@ -53,6 +54,7 @@ object TransformForgeEnvironment : Transformer { } private fun mapMixin(project: Project, remapperBuilder: TinyRemapper.Builder) { + var remap = false val loomExtension = project.extensions.getByType(LoomGradleExtension::class.java) val srg = project.extensions.getByType(LoomGradleExtension::class.java).mappingsProvider.mappingsWithSrg for (mixinMapFile in loomExtension.allMixinMappings) { @@ -65,6 +67,7 @@ object TransformForgeEnvironment : Transformer { .firstOrNull { it.getName("intermediary") == dstName } ?.getName("srg") ?: dstName ) + remap = true } override fun acceptMethod(method: IMappingProvider.Member, dstName: String) { @@ -74,6 +77,7 @@ object TransformForgeEnvironment : Transformer { .flatMap { it.methods } .firstOrNull { it.getName("intermediary") == dstName } ?.getName("srg") ?: dstName) + remap = true } override fun acceptField(field: IMappingProvider.Member, dstName: String) { @@ -83,6 +87,7 @@ object TransformForgeEnvironment : Transformer { .flatMap { it.fields } .firstOrNull { it.getName("intermediary") == dstName } ?.getName("srg") ?: dstName) + remap = true } override fun acceptMethodArg(method: IMappingProvider.Member, lvIndex: Int, dstName: String) {} @@ -99,5 +104,8 @@ object TransformForgeEnvironment : Transformer { } } } + if (!remap) { + throw TransformerStepSkipped + } } } \ No newline at end of file diff --git a/src/main/kotlin/me/shedaniel/architect/plugin/transformers/TransformInjectables.kt b/src/main/kotlin/me/shedaniel/architect/plugin/transformers/TransformInjectables.kt index 9f06679..c36dcd9 100644 --- a/src/main/kotlin/me/shedaniel/architect/plugin/transformers/TransformInjectables.kt +++ b/src/main/kotlin/me/shedaniel/architect/plugin/transformers/TransformInjectables.kt @@ -2,6 +2,7 @@ package me.shedaniel.architect.plugin.transformers import me.shedaniel.architect.plugin.ArchitectPluginExtension import me.shedaniel.architect.plugin.Transformer +import me.shedaniel.architect.plugin.TransformerStepSkipped import me.shedaniel.architect.plugin.projectUniqueIdentifier import me.shedaniel.architect.plugin.utils.validateJarFs import net.fabricmc.loom.util.LoggerFilter @@ -23,6 +24,7 @@ object TransformInjectables : Transformer { transformArchitecturyInjectables(project, input, output) } else { Files.copy(input, output) + throw TransformerStepSkipped } }