buildscript { repositories { maven { url = 'https://maven.minecraftforge.net' } maven { url = 'https://maven.blamejared.com' } maven { url = 'https://repo.spongepowered.org/repository/maven-public/' } mavenCentral() } dependencies { classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true classpath 'gradle.plugin.com.matthewprenger:CurseGradle:1.4.0' classpath group: 'com.blamejared', name: 'ModTemplate', version: '2.+', changing: true classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT' } } apply plugin: 'java' apply plugin: 'net.minecraftforge.gradle' apply plugin: 'com.blamejared.modtemplate' apply plugin: 'eclipse' apply plugin: 'org.spongepowered.mixin' apply plugin: 'maven-publish' apply plugin: 'com.matthewprenger.cursegradle' import com.blamejared.modtemplate.Utils archivesBaseName = "${mod_name}-forge-${minecraft_version}" version = Utils.updatingVersion(mod_version) mixin { add sourceSets.main, "controlling.refmap.json" } minecraft { mappings channel: 'official', version: minecraft_version if (project.hasProperty('forge_ats_enabled') && project.findProperty('forge_ats_enabled').toBoolean()) { // This location is hardcoded in Forge and can not be changed. // https://github.com/MinecraftForge/MinecraftForge/blob/be1698bb1554f9c8fa2f58e32b9ab70bc4385e60/fmlloader/src/main/java/net/minecraftforge/fml/loading/moddiscovery/ModFile.java#L123 accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') project.logger.debug('Forge Access Transformers are enabled for this project.') } runs { client { workingDirectory project.file('run') ideaModule "${rootProject.name}.${project.name}.main" taskName 'Client' arg "--mixin=controlling.mixins.json" mods { modClientRun { source sourceSets.main source project(":Common").sourceSets.main } } } server { workingDirectory project.file('run') ideaModule "${rootProject.name}.${project.name}.main" taskName 'Server' arg "--mixin=controlling.mixins.json" mods { modServerRun { source sourceSets.main source project(":Common").sourceSets.main } } } data { workingDirectory project.file('run') ideaModule "${rootProject.name}.${project.name}.main" args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') taskName 'Data' arg "--mixin=controlling.mixins.json" mods { modDataRun { source sourceSets.main source project(":Common").sourceSets.main } } } } } modTemplate { mcVersion minecraft_version curseHomepage curse_homepage displayName mod_name modLoader "Forge" changelog { enabled true firstCommit git_first_commit repo git_repo } versionTracker { enabled true author mod_author projectName mod_name } webhook { enabled true curseId curse_project_id avatarUrl mod_avatar } } sourceSets.main.resources.srcDir 'src/generated/resources' dependencies { minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" compileOnly project(":Common") annotationProcessor 'org.spongepowered:mixin:0.8.4-SNAPSHOT:processor' } tasks.withType(JavaCompile) { source(project(":Common").sourceSets.main.allSource) } processResources { from project(":Common").sourceSets.main.resources } jar { manifest { attributes([ "Specification-Title" : mod_name, "Specification-Vendor" : mod_author, "Specification-Version" : "1", "Implementation-Title" : project.name, "Implementation-Version" : project.jar.archiveVersion, "Implementation-Vendor" : mod_author, "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), "MixinConfigs" : "controlling.mixins.json" ]) } } jar.finalizedBy('reobfJar') publishing { publications { mavenJava(MavenPublication) { artifact jar } } repositories { maven { url "file://${project.projectDir}/mcmodsrepo" } } } curseforge { apiKey = findProperty('curseforge_api_token') ?: 0 project { id = curse_project_id releaseType = 'release' changelog = file("changelog.md") changelogType = 'markdown' addGameVersion "Forge" addGameVersion minecraft_version } }