buildscript { dependencies { classpath 'org.kohsuke:github-api:1.135' } } plugins { id 'fabric-loom' version '1.0-SNAPSHOT' id 'maven-publish' } def ENV = System.getenv() sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 archivesBaseName = project.archives_base_name version = project.mod_version group = project.maven_group repositories { // Add repositories to retrieve artifacts from in here. // You should only use this when depending on other mods because // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. // See https://docs.gradle.org/current/userguide/declaring_repositories.html // for more information about repositories. } dependencies { // To change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" // net.wurstclient.ai.PathPos extends net.minecraft.util.math.BlockPos, // which uses javax.annotation.concurrent.Immutable, which is part of // the JSR305 library. // // In other words, Wurst won't compile without this library, // even though it's Minecraft that actually uses it. modImplementation 'com.google.code.findbugs:jsr305:3.0.2' } loom { accessWidenerPath = file("src/main/resources/wurst.accesswidener") } processResources { inputs.property "version", project.version filesMatching("fabric.mod.json") { expand "version": project.version } } tasks.withType(JavaCompile).configureEach { // Minecraft 1.18 (1.18-pre2) upwards uses Java 17. it.options.release = 17 } java { // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task // if it is present. // If you remove this line, sources will not be generated. withSourcesJar() } jar { from("LICENSE") { rename { "${it}_${project.archivesBaseName}"} } } // configure the maven publication publishing { publications { mavenJava(MavenPublication) { from components.java } } // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. repositories { // Add repositories to publish to here. // Notice: This block does NOT have the same function as the block in the top level. // The repositories here will be used for publishing your artifact, not for // retrieving dependencies. } } task moveDevLibs(dependsOn: [remapJar, remapSourcesJar]) { doLast { ant.move(file:"${project.buildDir}/devlibs/${archivesBaseName}-${version}-dev.jar", tofile:"${project.buildDir}/libs/${archivesBaseName}-${version}-dev.jar") ant.move(file:"${project.buildDir}/devlibs/${archivesBaseName}-${version}-sources.jar", tofile:"${project.buildDir}/libs/${archivesBaseName}-${version}-sources-dev.jar") } } import org.kohsuke.github.GHReleaseBuilder import org.kohsuke.github.GitHub task github(dependsOn: moveDevLibs) { onlyIf { ENV.GITHUB_TOKEN } doLast { def github = GitHub.connectUsingOAuth(ENV.GITHUB_TOKEN as String) def repository = github.getRepository("Wurst-Imperium/Wurst-MCX2") def ghVersion = version.substring(0, version.indexOf("-")) def ghRelease = repository.getReleaseByTagName(ghVersion as String) if(ghRelease == null) { def releaseBuilder = new GHReleaseBuilder(repository, ghVersion as String) ghRelease = releaseBuilder.create() } ghRelease.uploadAsset(remapJar.archiveFile.get().getAsFile(), "application/java-archive") ghRelease.uploadAsset(remapSourcesJar.archiveFile.get().getAsFile(), "application/java-archive") ghRelease.uploadAsset(new File("${project.buildDir}/libs/${archivesBaseName}-${version}-dev.jar"), "application/java-archive") ghRelease.uploadAsset(new File("${project.buildDir}/libs/${archivesBaseName}-${version}-sources-dev.jar"), "application/java-archive") } }