buildscript { repositories { maven { url = 'https://maven.minecraftforge.net' } mavenCentral() } dependencies { classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true } } plugins { id 'eclipse' id 'idea' id 'maven-publish' id 'net.minecraftforge.gradle' version '[6.0,6.2)' } version = "${mcversion}-${version_major}.${version_minor}" group = "${author}.${modid}" archivesBaseName = "${modid}" // Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 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'}" minecraft { mappings channel: project.mcp_channel, version: project.mcp_mappings // This property allows configuring Gradle's ProcessResources task(s) to run on IDE output locations before launching the game. // It is REQUIRED to be set to true for this template to function. // See https://docs.gradle.org/current/dsl/org.gradle.language.jvm.tasks.ProcessResources.html copyIdeResources = true runs { client { workingDirectory project.file("run/client").canonicalPath // Recommended logging data for a userdev environment property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' // Recommended logging level for the console property 'forge.logging.console.level', 'debug' // Comma-separated list of namespaces to load gametests from. Empty = all namespaces. // property 'forge.enabledGameTestNamespaces', modid mods { constructionwand { source sourceSets.main } } } server { workingDirectory project.file("run/server").canonicalPath // Recommended logging data for a userdev environment property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' // Recommended logging level for the console property 'forge.logging.console.level', 'debug' // property 'forge.enabledGameTestNamespaces', modid mods { constructionwand { source sourceSets.main } } } // This run config launches GameTestServer and runs all registered gametests, then exits. // By default, the server will crash when no gametests are provided. // The gametest system is also enabled by default for other run configs under the /test command. gameTestServer { workingDirectory project.file('run') property 'forge.logging.markers', 'REGISTRIES' property 'forge.logging.console.level', 'debug' property 'forge.enabledGameTestNamespaces', modid mods { examplemod { source sourceSets.main } } } data { workingDirectory project.file("run/client").canonicalPath // Recommended logging data for a userdev environment property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' // Recommended logging level for the console property 'forge.logging.console.level', 'debug' args '--mod', archivesBaseName, '--all', '--existing', '"' + file('src/main/resources/') + '"', '--existing', '"' + file('src/generated/resources/') + '"', '--output', '"' + file('src/generated/resources/') + '"' mods { constructionwand { source sourceSets.main } } } } } sourceSets.main.resources { srcDir 'src/generated/resources' } repositories { maven { url = "https://maven.blamejared.com" } maven { url = "https://maven.theillusivec4.top/" } } dependencies { minecraft([ group : "net.minecraftforge", name : "forge", version: "${project.mcversion}-${project.forgeversion}" ]) compileOnly fg.deobf("mezz.jei:jei-${mcversion}-common-api:${jei_version}") compileOnly fg.deobf("mezz.jei:jei-${mcversion}-forge-api:${jei_version}") runtimeOnly fg.deobf("mezz.jei:jei-${mcversion}-forge:${jei_version}") compileOnly fg.deobf([ group: "vazkii.botania", name: "Botania", version: "${project.botania}", classifier: "api" ]) } jar { manifest { attributes([ "Specification-Title": archivesBaseName, "Specification-Vendor": "${author}", "Specification-Version": "1", // We are version 1 of ourselves "Implementation-Title": archivesBaseName, "Implementation-Version": "${version}", "Implementation-Vendor" :"${author}", "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") ]) } } // Example configuration to allow publishing using the maven-publish task // This is the preferred method to reobfuscate your jar file jar.finalizedBy('reobfJar') // However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing //publish.dependsOn('reobfJar') publishing { publications { mavenJava(MavenPublication) { artifact jar } } repositories { maven { url "file:///${project.projectDir}/mcmodsrepo" } } } tasks.withType(JavaCompile).configureEach { options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation }