plugins { id "com.github.johnrengelman.shadow" version "7.1.2" } architectury { platformSetupLoomIde() fabric() } configurations { common shadowCommon compileClasspath.extendsFrom common runtimeClasspath.extendsFrom common developmentFabric.extendsFrom common } dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings loom.officialMojangMappings() modImplementation "net.fabricmc:fabric-loader:${project.fabric_loader_version}" modApi "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}" modImplementation "software.bernie.geckolib:geckolib-fabric-${project.minecraft_version}:${project.geckolib_version}" compileOnly("curse.maven:intapi-${project.intapi_curseforge_id}:${project.intapi_curseforge_file_id_neoforge}") // compileOnly("curse.maven:create-${project.create_curseforge_id_neoforge}:${project.create_curseforge_file_id_neoforge}") // compileOnly("curse.maven:marvel-${project.marvel_curseforge_id}:${project.marvel_curseforge_file_id}") // compileOnly("curse.maven:stellaris-${project.stellaris_curseforge_id}:${project.stellaris_curseforge_file_id}") // compileOnly("curse.maven:aperture-${project.aperture_curseforge_id}:${project.aperture_curseforge_file_id}") // compileOnly("curse.maven:inventory_pets-${project.inventory_pets_curseforge_id}:${project.inventory_pets_curseforge_file_id}") // compileOnly("curse.maven:cataclysm-${project.cataclysm_curseforge_id}:${project.cataclysm_curseforge_file_id}") // compileOnly("curse.maven:iaf-${project.iaf_curseforge_id}:${project.iaf_curseforge_file_id}") // compileOnly("curse.maven:backpack-${project.backpack_curseforge_id}:${project.backpack_curseforge_file_id}") // compileOnly("curse.maven:regions_unexplored-${project.regions_unexplored_curseforge_id}:${project.regions_unexplored_curseforge_file_id}") compileOnly(files("$rootDir/infinite_dimensions_jars/infinity-2.7.1+1.21.1-neoforge.jar")) compileOnly(files("$rootDir/infinite_dimensions_jars/infinity-2.7.1+1.21.1-neoforge-sources.jar")) compileOnly(files("$rootDir/infinite_dimensions_jars/gravity-api-1.0.7-1.20.1.jar")) // compileOnly(files("$rootDir/infinite_dimensions_jars/Cloro's Gravity Gun Mod (Release 1.3.1).jar")) // compileOnly(files("$rootDir/infinite_dimensions_jars/VanillaBackport-neoforge-1.21.1-1.1.7.6.jar")) // compileOnly(files("$rootDir/infinite_dimensions_jars/soul-fire-d-neoforge-1.21-6.1.0.jar")) // compileOnly(files("$rootDir/infinite_dimensions_jars/prometheus-neoforge-1.21-1.2.5.jar")) compileOnly(files("$rootDir/infinite_dimensions_jars/cloth-config-15.0.140-fabric.jar")) compileOnly(files("$rootDir/infinite_dimensions_jars/sable-neoforge-1.21.1-2.0.3.jar")) annotationProcessor "org.spongepowered:mixin:0.8.7:processor" common(project(path: ':common', configuration: 'namedElements')) { transitive false } shadowCommon(project(path: ':common', configuration: 'namedElements')) { transitive false } } loom { mixin { useLegacyMixinAp = true defaultRefmapName = "antarchy.refmap.json" } mods { "${mod_id}" { sourceSet sourceSets.main sourceSet project(':common').sourceSets.main } } runs { configureEach { runDir('run') ideConfigGenerated(true) } client { client() setConfigName('Fabric Client') } server { server() setConfigName('Fabric Server') programArg('--nogui') } } } tasks.named('compileJava', JavaCompile) { source(project(':common').sourceSets.main.allJava) } tasks.named('javadoc', Javadoc).configure { source(project(':common').sourceSets.main.allJava) } tasks.named('sourcesJar', Jar) { from(project(':common').sourceSets.main.allSource) exclude "antarchy-common.mixins.json" } shadowJar { exclude 'architectury.common.json' configurations = [project.configurations.shadowCommon] archiveClassifier.set('dev-shadow') } remapJar { injectAccessWidener = true input.set shadowJar.archiveFile dependsOn shadowJar archiveClassifier.set(null) } jar { archiveClassifier.set('dev') } components.java { withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { skip() } } processResources { inputs.property "version", project.version inputs.property "minecraft_version", project.minecraft_version inputs.property "fabric_loader_version", project.fabric_loader_version inputs.property "mod_id", project.mod_id inputs.property "mod_name", project.mod_name inputs.property "mod_description", project.mod_description inputs.property "mod_author", project.mod_author inputs.property "license", project.license inputs.property "homepage_url", project.homepage_url inputs.property "issues_url", project.issues_url inputs.property "sources_url", project.sources_url inputs.property "logo_fabric", project.logo_fabric from(project(':common').sourceSets.main.resources) { exclude "antarchy-common.mixins.json" } // Fabric needs a refmap on the common mixin config, NeoForge only boots without one. // Generate a fabric-only copy with the refmap injected so the shared file stays refmap-free. def commonMixinConfig = project(':common').file('src/main/resources/antarchy-common.mixins.json') inputs.file commonMixinConfig doLast { def json = new groovy.json.JsonSlurper().parse(commonMixinConfig) json.put('refmap', 'antarchy.refmap.json') new File(destinationDir, 'antarchy-common-fabric.mixins.json').text = groovy.json.JsonOutput.prettyPrint(groovy.json.JsonOutput.toJson(json)) } filesMatching("fabric.mod.json") { expand( version: project.version, minecraft_version: project.minecraft_version, fabric_loader_version: project.fabric_loader_version, mod_id: project.mod_id, mod_name: project.mod_name, mod_description: project.mod_description, mod_author: project.mod_author, license: project.license, homepage_url: project.homepage_url, issues_url: project.issues_url, sources_url: project.sources_url, logo_fabric: project.logo_fabric ) } }