buildscript { repositories { gradlePluginPortal() } dependencies { classpath "gradle.plugin.com.github.johnrengelman:shadow:7.1.2" } } apply plugin: com.github.jengelman.gradle.plugins.shadow.ShadowPlugin import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar configurations { shadowModImplementation modImplementation.extendsFrom shadowModImplementation } dependencies { shadowModImplementation("dev.itsmeow.imdlib:imdlib-fabric:${rootProject.imdlib_version}") { transitive = false } } shadowJar { configurations = [project.configurations.shadowCommon, project.configurations.shadowModImplementation] relocate 'dev.itsmeow.imdlib', "${rootProject.maven_group}.imdlib" archiveClassifier.set("dev-shadow") } task shadowFixJar(type: ShadowJar) { dependsOn shadowJar from shadowJar.archiveFile.map { zipTree(it) } manifest { from { zipTree(shadowJar.archiveFile).find { it.name == "MANIFEST.MF" } } } filesMatching("architectury_inject_IMDLib**/*") { relocate it.path.split("/")[0], "${rootProject.maven_group}.imdlib.architectury_inject_IMDLib" } } remapJar { dependsOn shadowFixJar input.set shadowFixJar.archiveFile archiveClassifier.set("remap") } task fixJar(type: Jar) { dependsOn remapJar from remapJar.archiveFile.map { zipTree(it) } manifest { from { zipTree(remapJar.archiveFile).find { it.name == "MANIFEST.MF" } } } filesMatching("**/FabricMixinPlugin.java") { filter { line -> { line.replaceAll("dev.itsmeow.imdlib.mixin", "${rootProject.maven_group}.imdlib.mixin") } } } filesMatching("**/fabric.mod.json") { filter { line -> { line = line.replaceAll("dev.itsmeow.imdlib", "${rootProject.maven_group}.imdlib") line = line.replaceAll('mixin.imdlib.json', "mixin.imdlib-${rootProject.mod_id}.json\",\"mixin.imdlib-${rootProject.mod_id}-fabric.json") } } } rename("mixin.imdlib.json", "mixin.imdlib-${rootProject.mod_id}.json") rename("imdlib-common-refmap.json", "imdlib-${rootProject.mod_id}-common-refmap.json") filesMatching("mixin.imdlib.json") { filter { line -> { line = line.replaceAll('dev.itsmeow.imdlib', "${rootProject.maven_group}.imdlib") line.replaceAll('imdlib-common-refmap.json', "imdlib-${rootProject.mod_id}-common-refmap.json") } } } rename("mixin.imdlib-fabric.json", "mixin.imdlib-${rootProject.mod_id}-fabric.json") rename("imdlib-fabric-refmap.json", "imdlib-${rootProject.mod_id}-fabric-refmap.json") filesMatching("mixin.imdlib-fabric.json") { filter { line -> { line = line.replaceAll('dev.itsmeow.imdlib.mixin', "${rootProject.maven_group}.imdlib.mixin") line = line.replaceAll('dev.itsmeow.imdlib.FabricMixinPlugin', "${rootProject.maven_group}.imdlib.FabricMixinPlugin") line.replaceAll('imdlib-fabric-refmap.json', "imdlib-${rootProject.mod_id}-fabric-refmap.json") } } } filesMatching("imdlib-common-refmap.json") { filter { line -> line.replaceAll('dev/itsmeow/imdlib/mixin/', "dev/itsmeow/${rootProject.mod_id}/imdlib/mixin/") } } filesMatching("imdlib-fabric-refmap.json") { filter { line -> line.replaceAll('dev/itsmeow/imdlib/mixin/', "dev/itsmeow/${rootProject.mod_id}/imdlib/mixin/") } } archiveClassifier.set("fabric") } sourcesJar.dependsOn fixJar