buildscript { dependencies { classpath "org.kohsuke:github-api:1.324" } } plugins { id "fabric-loom" version "1.7-SNAPSHOT" id "com.diffplug.spotless" version "6.25.0" } def ENV = System.getenv() version = project.mod_version group = project.maven_group base { archivesName = project.archives_base_name } 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}" testImplementation "net.fabricmc:fabric-loader-junit:${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.20.5 (24w14a) upwards uses Java 21. it.options.release = 21 } 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() sourceCompatibility = JavaVersion.VERSION_21 targetCompatibility = JavaVersion.VERSION_21 } jar { from("LICENSE") { rename {"${it}_${project.base.archivesName.get()}"} } } spotless { lineEndings("WINDOWS") java { removeUnusedImports() indentWithTabs() trimTrailingWhitespace() eclipse().configFile(file("codestyle/formatter.xml")) } json { target "src/**/*.json" gson().indentWithSpaces(2).version("2.10.1") } } test { useJUnitPlatform() } task moveDevLibs(dependsOn: [remapJar, remapSourcesJar]) { doLast { def archivesName = project.base.archivesName.get() as String ant.move(file:"${project.buildDir}/devlibs/${archivesName}-${version}-dev.jar", tofile:"${project.buildDir}/libs/${archivesName}-${version}-dev.jar") ant.move(file:"${project.buildDir}/devlibs/${archivesName}-${version}-sources.jar", tofile:"${project.buildDir}/libs/${archivesName}-${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 archivesName = project.base.archivesName.get() as String def ghRelease = repository.getReleaseByTagName(ghVersion as String) if(ghRelease == null) { def releaseBuilder = new GHReleaseBuilder(repository, ghVersion as String) releaseBuilder.prerelease(ghVersion.contains("pre")) 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/${archivesName}-${version}-dev.jar"), "application/java-archive") ghRelease.uploadAsset(new File("${project.buildDir}/libs/${archivesName}-${version}-sources-dev.jar"), "application/java-archive") } }