plugins { id 'fabric-loom' version "${loom_version}" id 'maven-publish' id 'com.matthewprenger.cursegradle' version "${cursegradle_version}" } boolean dev = System.getenv('RELEASE') == null || System.getenv('RELEASE').equalsIgnoreCase('false'); ext.buildnumber = 0 project.buildnumber = System.getenv('BUILD_NUMBER') != null ? System.getenv('BUILD_NUMBER') : 'custom' version = "${mc_update_version}-${mod_version}" + (dev ? ".${buildnumber}" : '') group = 'com.jozufozu.flywheel' archivesBaseName = 'flywheel-fabric' sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 java.toolchain.languageVersion = JavaLanguageVersion.of(17) println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) repositories { maven { url 'https://www.cursemaven.com' content { includeGroup "curse.maven" } } maven { name 'tterrag maven' url 'https://maven.tterrag.com/' } maven { url 'https://maven.parchmentmc.org/' } maven { name 'Modrinth' url 'https://api.modrinth.com/maven' } maven { url 'https://maven.vram.io' } } dependencies { // To change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${minecraft_version}" mappings loom.layered() { officialMojangMappings() parchment("org.parchmentmc.data:parchment-${minecraft_version}:${parchment_version}@zip") } modImplementation "net.fabricmc:fabric-loader:${loader_version}" // Fabric API modImplementation "net.fabricmc.fabric-api:fabric-api:${fabric_version}" modCompileOnly 'curse.maven:starlight-521783:3554912' modCompileOnly 'maven.modrinth:iris:1.18.x-v1.1.4' implementation 'com.google.code.findbugs:jsr305:3.0.2' modCompileOnly 'maven.modrinth:indium:1.0.2-alpha1+mc1.18' modCompileOnly 'io.vram:frex-fabric-mc118:6.0.229' } 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}_${archivesBaseName}" } } } // Example for how to get properties into the manifest for reading by the runtime.. jar { manifest { attributes([ 'Specification-Title' : 'flywheel', //'Specification-Vendor': 'flywheel authors', 'Specification-Version' : '1', // We are version 1 of ourselves 'Implementation-Title' : project.name, 'Implementation-Version' : project.version, //'Implementation-Vendor': 'flywheel authors', 'MixinConfigs' : 'flywheel.mixins.json', 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") ]) } } javadoc { source = [sourceSets.main.allJava] // prevent java 8's strict doclint for javadocs from failing builds options.addStringOption('Xdoclint:none', '-quiet') } task javadocJar(type: Jar, dependsOn: javadoc) { from javadoc.destinationDir archiveClassifier.set('javadoc') } artifacts { archives remapJar, sourcesJar, javadocJar } publishing { tasks.publish.dependsOn 'build' publications { mavenJava(MavenPublication) { artifact remapJar artifact(sourcesJar) { builtBy remapSourcesJar } artifact javadocJar } } repositories { if (project.hasProperty('mavendir')) { maven { url mavendir } } } } tasks.curseforge.enabled = !dev && project.hasProperty('jozu_curseforge_key') curseforge { if (project.hasProperty('jozu_curseforge_key')) { apiKey = project.jozu_curseforge_key } project { id = project.projectId changelog = file('changelog.txt') releaseType = project.curse_type mainArtifact jar addGameVersion '1.18.1' } }