import com.dfsek.terra.configureCommon import net.minecraftforge.gradle.common.util.RunConfig import net.minecraftforge.gradle.mcp.task.GenerateSRG import net.minecraftforge.gradle.userdev.UserDevExtension import net.minecraftforge.gradle.userdev.tasks.RenameJarInPlace buildscript { repositories { maven { url = uri("https://files.minecraftforge.net/maven") } jcenter() mavenCentral() maven { url = uri("https://repo.spongepowered.org/repository/maven-public/") } } dependencies { classpath(group = "net.minecraftforge.gradle", name = "ForgeGradle", version = "4.1.+") classpath("org.spongepowered:mixingradle:0.7-SNAPSHOT") } } apply(plugin = "net.minecraftforge.gradle") apply(plugin = "org.spongepowered.mixin") configure { add(sourceSets.main.get(), "terra.refmap.json") } plugins { java id("com.modrinth.minotaur").version("1.1.0") } configureCommon() group = "com.dfsek.terra.forge" repositories { maven { url = uri("https://files.minecraftforge.net/maven") } jcenter() mavenCentral() maven { url = uri("https://repo.spongepowered.org/repository/maven-public/") } } val forgeVersion = "36.1.13" val mcVersion = "1.16.5" dependencies { "shadedApi"(project(":common")) "minecraft"("net.minecraftforge:forge:$mcVersion-$forgeVersion") "annotationProcessor"("org.spongepowered:mixin:0.8.2:processor") } if ("true" == System.getProperty("idea.sync.active")) { afterEvaluate { tasks.withType().all { options.annotationProcessorPath = files() } } } afterEvaluate { val reobf = extensions.getByName>("reobf") reobf.maybeCreate("shadowJar").run { group = "forge" mappings = tasks.getByName("createMcpToSrg").output } } configure { mappings(mapOf( "channel" to "official", "version" to mcVersion )) runs { val runConfig = Action { properties(mapOf( "forge.logging.markers" to "SCAN,REGISTRIES,REGISTRYDUMP", "forge.logging.console.level" to "debug" )) arg("-mixin.config=terra.mixins.json") workingDirectory = project.file("run").canonicalPath source(sourceSets["main"]) } create("client", runConfig) create("server", runConfig) } } tasks.register("deobfJar") { from(sourceSets["main"].output) archiveClassifier.set("dev") group = "forge" } val deobfElements = configurations.register("deobfElements") { isVisible = false description = "De-obfuscated elements for libs" isCanBeResolved = false isCanBeConsumed = true attributes { attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(Usage.JAVA_API)) attribute(Category.CATEGORY_ATTRIBUTE, project.objects.named(Category.LIBRARY)) attribute(Bundling.BUNDLING_ATTRIBUTE, project.objects.named(Bundling.EXTERNAL)) attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, project.objects.named(LibraryElements.JAR)) attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 8) } outgoing.artifact(tasks.named("deobfJar")) } val javaComponent = components["java"] as AdhocComponentWithVariants javaComponent.addVariantsFromConfiguration(deobfElements.get()) { mapToMavenScope("runtime") } tasks.jar { manifest { attributes(mapOf( "Specification-Title" to "terra", "Specification-Vendor" to "Terra", "Specification-Version" to "1.0", "Implementation-Title" to "Terra", "Implementation-Version" to project.version, "Implementation-Vendor" to "terra", "MixinConfigs" to "terra.mixins.json" )) } } tasks.named("shadowJar") { }