@@ -87,7 +87,7 @@ neoForge {
8787
8888 // JetBrains Runtime Hotswap
8989 if (! System .getenv().containsKey(" CI" )) {
90- jvmArgument(" -XX:+AllowEnhancedClassRedefinition" )
90+ jvmArgument(" -XX:+AllowEnhancedClassRedefinition" )
9191 }
9292
9393 systemProperties.put(" terminal.ansi" , " true" )
@@ -96,7 +96,7 @@ neoForge {
9696 additional.dependencies.add(compactmods.feather.get())
9797 additional.dependencies.add(libs.jnanoid.get())
9898 }
99-
99+
100100 create(" client" ) {
101101 client()
102102 gameDirectory.set(file(" runs/client" ))
@@ -249,6 +249,48 @@ dependencies {
249249 compileOnly(mods.jade)
250250}
251251
252+ var additionalAccessTransformerFiles = mutableListOf<File >()
253+ fun additionalAccessTransformersToModsToml (): String {
254+ val sb = StringBuilder ()
255+ additionalAccessTransformerFiles.forEach {
256+ sb.appendLine(" [[accessTransformers]]" );
257+ sb.appendLine(" file = \" META-INF/additional-ats/${it.name} \" " )
258+ sb.appendLine()
259+ }
260+
261+ var t = sb.toString();
262+ return t.substring(0 , t.lastIndexOf(" \n " ));
263+ }
264+
265+ var calculateAdditionalAccessTransformerFiles = tasks.create<Task >(" calculateAdditionalAccessTransformerFiles" ) {
266+ var included = listOf (compactmods.ganderRendering.get())
267+ .map { it.group + " :" + it.name }
268+
269+ val t1 = configurations.accessTransformers.get()
270+ var t2 = t1.resolvedConfiguration.resolvedArtifacts
271+ .filter { f -> included.contains(f.moduleVersion.id.module.toString()) }
272+
273+ t2.forEach {
274+ println (" Including: ${it.moduleVersion.id.module} (version: ${it.moduleVersion.id.version} )" )
275+ println (it.file.absoluteFile)
276+ additionalAccessTransformerFiles.add(it.file.absoluteFile)
277+ }
278+ }
279+
280+ val copyAdditionalAccessTransformers = tasks.create<Copy >(" copyAdditionalAccessTransformers" ) {
281+ dependsOn(calculateAdditionalAccessTransformerFiles)
282+
283+ val targetDir = layout.buildDirectory.get().dir(" resources/main/META-INF/additional-ats" )
284+
285+ doLast { println (" Copying additional AT files to: $targetDir " ) }
286+ from(additionalAccessTransformerFiles.map { it.absoluteFile })
287+ into(targetDir)
288+ }
289+
290+ tasks.build {
291+ finalizedBy(copyAdditionalAccessTransformers)
292+ }
293+
252294tasks.withType<Test > {
253295 useJUnitPlatform()
254296}
@@ -285,14 +327,18 @@ tasks.withType<Jar> {
285327}
286328
287329tasks.withType<ProcessResources >().configureEach {
330+ dependsOn(calculateAdditionalAccessTransformerFiles)
331+
332+ val additionalATs = additionalAccessTransformersToModsToml()
288333 val replaceProperties: Map <String , Any > = mapOf (
289334 " minecraft_version" to mojang.versions.minecraft.get(),
290335 " neo_version" to neoforged.versions.neoforge.get(),
291336 " minecraft_version_range" to mojang.versions.minecraftRange.get(),
292337 " neo_version_range" to neoforged.versions.neoforgeRange.get(),
293338 " loader_version_range" to " [1,)" ,
294339 " mod_id" to modId,
295- " mod_version" to envVersion
340+ " mod_version" to envVersion,
341+ " additional_access_transformers" to additionalATs
296342 )
297343
298344 inputs.properties(replaceProperties)
0 commit comments