diff --git a/gradle.properties b/gradle.properties index 95b29c4..08d13f4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,5 +5,5 @@ 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.77 +transformer_version=5.2.78 base_version=3.4 \ 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 e5bc8d0..db1bc72 100644 --- a/src/main/kotlin/dev/architectury/plugin/ArchitecturyPluginExtension.kt +++ b/src/main/kotlin/dev/architectury/plugin/ArchitecturyPluginExtension.kt @@ -30,7 +30,7 @@ import java.util.jar.JarOutputStream import java.util.jar.Manifest open class ArchitectPluginExtension(val project: Project) { - var transformerVersion = "5.2.77" + var transformerVersion = "5.2.78" var injectablesVersion = "1.0.10" var minecraft = "" private var compileOnly = false @@ -265,6 +265,7 @@ open class ArchitectPluginExtension(val project: Project) { data class CommonSettings( val loaders: MutableSet = LinkedHashSet(), + val platformPackages: MutableMap = mutableMapOf(), ) { constructor(loaders: Array) : this() { this.loaders.addAll(loaders.map { ModLoader.valueOf(it) }) @@ -308,6 +309,14 @@ open class ArchitectPluginExtension(val project: Project) { fun clear() { loaders.clear() } + + fun platformPackage(loader: String, packageName: String) { + platformPackages[ModLoader.valueOf(loader)] = packageName + } + + fun platformPackage(loader: ModLoader, packageName: String) { + platformPackages[loader] = packageName + } } fun platformSetupLoomIde() { @@ -391,7 +400,7 @@ open class ArchitectPluginExtension(val project: Project) { project.tasks.register("transformProduction${loader.titledId}", TransformingTask::class.java) { it.group = "Architectury" it.platform = loader.id - loader.transformProduction(it, loom) + loader.transformProduction(it, loom, settings) it.archiveClassifier.set("transformProduction${loader.titledId}") it.input.set(jarTask.archiveFile) @@ -439,7 +448,8 @@ data class Transform( val project: Project, val devConfigName: String, val transformers: MutableList> = mutableListOf(), - var envAnnotationProvider: String = "net.fabricmc:fabric-loader:+" + var envAnnotationProvider: String = "net.fabricmc:fabric-loader:+", + var platformPackage: String? = null, ) { operator fun plusAssign(transformer: TransformerPair) { transformers.add(Function { transformer }) diff --git a/src/main/kotlin/dev/architectury/plugin/ModLoader.kt b/src/main/kotlin/dev/architectury/plugin/ModLoader.kt index 39b9ce3..7459229 100644 --- a/src/main/kotlin/dev/architectury/plugin/ModLoader.kt +++ b/src/main/kotlin/dev/architectury/plugin/ModLoader.kt @@ -7,7 +7,7 @@ import dev.architectury.transformer.transformers.* open class ModLoader( val id: String, val transformDevelopment: Transform.() -> Unit, - val transformProduction: TransformingTask.(loom: LoomInterface) -> Unit, + val transformProduction: TransformingTask.(loom: LoomInterface, settings: ArchitectPluginExtension.CommonSettings) -> Unit, ) { init { LOADERS[id] = this @@ -23,20 +23,27 @@ open class ModLoader( val FABRIC = ModLoader( id = "fabric", transformDevelopment = { + val transform = this this += RuntimeMixinRefmapDetector::class.java this += GenerateFakeFabricMod::class.java add(TransformExpectPlatform::class.java) { file -> this[BuiltinProperties.UNIQUE_IDENTIFIER] = projectGeneratedPackage(project, file) + if (transform.platformPackage != null) { + this[BuiltinProperties.PLATFORM_PACKAGE] = transform.platformPackage!! + } } add(RemapInjectables::class.java) { file -> this[BuiltinProperties.UNIQUE_IDENTIFIER] = projectGeneratedPackage(project, file) } this += TransformPlatformOnly::class.java }, - transformProduction = { + transformProduction = { _, settings -> this += RemapMixinVariables() add(TransformExpectPlatform()) { file -> this[BuiltinProperties.UNIQUE_IDENTIFIER] = projectGeneratedPackage(project, file) + settings.platformPackages[valueOf("fabric")]?.let { platformPackage -> + this[BuiltinProperties.PLATFORM_PACKAGE] = platformPackage + } } add(RemapInjectables()) { file -> this[BuiltinProperties.UNIQUE_IDENTIFIER] = projectGeneratedPackage(project, file) @@ -49,9 +56,13 @@ open class ModLoader( val FORGE = ModLoader( id = "forge", transformDevelopment = { + val transform = this this += RuntimeMixinRefmapDetector::class.java add(TransformExpectPlatform::class.java) { file -> this[BuiltinProperties.UNIQUE_IDENTIFIER] = projectGeneratedPackage(project, file) + if (transform.platformPackage != null) { + this[BuiltinProperties.PLATFORM_PACKAGE] = transform.platformPackage!! + } } add(RemapInjectables::class.java) { file -> this[BuiltinProperties.UNIQUE_IDENTIFIER] = projectGeneratedPackage(project, file) @@ -63,9 +74,12 @@ open class ModLoader( this += GenerateFakeForgeMod::class.java this += FixForgeMixin::class.java }, - transformProduction = { loom -> + transformProduction = { loom, settings -> add(TransformExpectPlatform()) { file -> this[BuiltinProperties.UNIQUE_IDENTIFIER] = projectGeneratedPackage(project, file) + settings.platformPackages[valueOf("forge")]?.let { platformPackage -> + this[BuiltinProperties.PLATFORM_PACKAGE] = platformPackage + } } add(RemapInjectables()) { file -> this[BuiltinProperties.UNIQUE_IDENTIFIER] = projectGeneratedPackage(project, file) @@ -84,8 +98,12 @@ open class ModLoader( val NEOFORGE = object : ModLoader( id = "neoforge", transformDevelopment = { + val transform = this add(TransformExpectPlatform::class.java) { file -> this[BuiltinProperties.UNIQUE_IDENTIFIER] = projectGeneratedPackage(project, file) + if (transform.platformPackage != null) { + this[BuiltinProperties.PLATFORM_PACKAGE] = transform.platformPackage!! + } } add(RemapInjectables::class.java) { file -> this[BuiltinProperties.UNIQUE_IDENTIFIER] = projectGeneratedPackage(project, file) @@ -96,9 +114,12 @@ open class ModLoader( this += TransformNeoForgeEnvironment::class.java this += GenerateFakeNeoForgeMod::class.java }, - transformProduction = { loom -> + transformProduction = { _, settings -> add(TransformExpectPlatform()) { file -> this[BuiltinProperties.UNIQUE_IDENTIFIER] = projectGeneratedPackage(project, file) + settings.platformPackages[valueOf("neoforge")]?.let { platformPackage -> + this[BuiltinProperties.PLATFORM_PACKAGE] = platformPackage + } } add(RemapInjectables()) { file -> this[BuiltinProperties.UNIQUE_IDENTIFIER] = projectGeneratedPackage(project, file) @@ -116,10 +137,14 @@ open class ModLoader( val QUILT = ModLoader( id = "quilt", transformDevelopment = { + val transform = this this += RuntimeMixinRefmapDetector::class.java this += GenerateFakeQuiltMod::class.java add(TransformExpectPlatform::class.java) { file -> this[BuiltinProperties.UNIQUE_IDENTIFIER] = projectGeneratedPackage(project, file) + if (transform.platformPackage != null) { + this[BuiltinProperties.PLATFORM_PACKAGE] = transform.platformPackage!! + } } add(RemapInjectables::class.java) { file -> this[BuiltinProperties.UNIQUE_IDENTIFIER] = projectGeneratedPackage(project, file) @@ -127,10 +152,13 @@ open class ModLoader( this += TransformPlatformOnly::class.java envAnnotationProvider = "org.quiltmc:quilt-loader:+" }, - transformProduction = { + transformProduction = { _, settings -> this += RemapMixinVariables() add(TransformExpectPlatform()) { file -> this[BuiltinProperties.UNIQUE_IDENTIFIER] = projectGeneratedPackage(project, file) + settings.platformPackages[valueOf("quilt")]?.let { platformPackage -> + this[BuiltinProperties.PLATFORM_PACKAGE] = platformPackage + } } add(RemapInjectables()) { file -> this[BuiltinProperties.UNIQUE_IDENTIFIER] = projectGeneratedPackage(project, file)