buildscript { repositories { mavenLocal() maven { url = 'https://maven.minecraftforge.net' } mavenCentral() jcenter() } dependencies { classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true } } apply plugin: 'net.minecraftforge.gradle' apply plugin: 'eclipse' apply plugin: 'maven-publish' repositories { maven { name 'DVS1 Maven FS' url 'https://dvs1.progwml6.com/files/maven' } } group = "com.progwml6.ironchest" // Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17. java.toolchain.languageVersion = JavaLanguageVersion.of(17) minecraft { mappings channel: 'official', version: mappings_version accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') runs { client { workingDirectory project.file('run') // Recommended logging data for a userdev environment property 'forge.logging.markers', 'REGISTRIES,REGISTRYDUMP,CORE' // property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP,CORE' enable if you want spam from the scanner. // Recommended logging level for the console property 'forge.logging.console.level', 'debug' mods { ironchest { source sourceSets.main } } //The below if statements are to add args to your gradle.properties file in user home // (DO NOT add them directly to the gradle.properties file for this project) // Setting the below properties allows use of your normal Minecraft account in the // dev environment including having your skin load. Each property also has a comment // explaining what information to set the value to/format it expects // One thing to note is because of the caching that goes on, after changing these // variables, you need to refresh the project and rerun genIntellijRuns/genEclipseRuns if (project.hasProperty('mc_uuid')) { //Your uuid without any dashes in the middle args '--uuid', project.getProperty('mc_uuid') } if (project.hasProperty('mc_username')) { //Your username/display name, this is the name that shows up in chat // Note: This is not your email, even if you have a Mojang account args '--username', project.getProperty('mc_username') } if (project.hasProperty('mc_accessToken')) { //Your access token, you can find it in your '.minecraft/launcher_profiles.json' file args '--accessToken', project.getProperty('mc_accessToken') } } server { workingDirectory project.file('run') // Recommended logging data for a userdev environment property 'forge.logging.markers', 'REGISTRIES,REGISTRYDUMP,CORE' // property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP,CORE' enable if you want spam from the scanner. // Recommended logging level for the console property 'forge.logging.console.level', 'debug' mods { ironchest { source sourceSets.main } } } data { workingDirectory project.file('run') // Recommended logging data for a userdev environment property 'forge.logging.markers', 'REGISTRIES,REGISTRYDUMP,CORE' // property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP,CORE' enable if you want spam from the scanner. // Recommended logging level for the console property 'forge.logging.console.level', 'debug' args '--mod', 'ironchest', '--all', '--output', file('src/generated/resources/') mods { ironchest { source sourceSets.main } } } } } task buildInfo { def cmd = "git rev-parse --short HEAD" def proc = cmd.execute() proc.waitFor() if (proc.exitValue() == 0) { ext.revision = proc.text.trim() } else { ext.revision = "GITBORK" } if (System.getenv().BUILD_NUMBER != null) { ext.buildNum = System.getenv().BUILD_NUMBER } else { ext.buildNum = "DEV.${project.buildInfo.revision}" } } version = "${minecraft_version}-${mod_version}.${project.buildInfo.buildNum}" sourceSets { main { resources { srcDirs "src/generated/resources" //But exclude the cache of the generated data from what gets built exclude '.cache' } } } dependencies { minecraft 'net.minecraftforge:forge:' + minecraft_version + '-' + forge_version // compile against the JEI API but do not include it at runtime //compileOnly fg.deobf("mezz.jei:jei-${jei_version}:api") // at runtime, use the full JEI jar //runtimeOnly fg.deobf("mezz.jei:jei-${jei_version}") } def modsTomlSpec = copySpec{ from(sourceSets.main.resources) { include 'META-INF/mods.toml' expand 'version': project.version, 'loader_range': loader_range, 'minecraft_range': minecraft_range, 'forge_range': forge_range } } // need to copy into each build directory, unfortunately does not seem easy to do this automatically def buildPaths = [ "$rootDir/out/production/resources", // IDEA "$rootDir/bin", // Eclipse ] // task to add mods.toml to all relevant folders task replaceResources { // copy for gradle copy { outputs.upToDateWhen { false } with modsTomlSpec into processResources.destinationDir } // copy for IDEs buildPaths.each { path -> if (new File(path).exists()) { copy { outputs.upToDateWhen { false } with modsTomlSpec into path } } } } processResources { exclude 'META-INF/mods.toml' finalizedBy replaceResources } jar { manifest { attributes([ "Specification-Title" : "Iron Chests", "Specification-Vendor" : "Progwml6", "Specification-Version" : "1", // We are version 1 of ourselves "Implementation-Title" : project.name, "Implementation-Version" : "${version}", "Implementation-Vendor" : "Progwml6", "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") ]) } } jar.finalizedBy('reobfJar') task sourcesJar(type: Jar) { from sourceSets.main.allJava classifier = 'sources' } artifacts { archives sourcesJar } publishing { publications { mavenJava(MavenPublication) { artifact jar artifact sourcesJar } } repositories { if (project.hasProperty('DEPLOY_DIR')) { maven { url DEPLOY_DIR } } } }