buildscript { repositories { // These repositories are only for Gradle plugins, put any other repositories in the repository block further below maven { url = 'https://maven.minecraftforge.net' } maven { url = 'https://repo.spongepowered.org/repository/maven-public/' } maven { url = 'https://maven.parchmentmc.org' } mavenCentral() } dependencies { classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT' classpath 'org.parchmentmc:librarian:1.+' } } plugins { id "io.freefair.lombok" version "6.5.0.3" } apply plugin: 'net.minecraftforge.gradle' apply plugin: 'org.spongepowered.mixin' apply plugin: 'org.parchmentmc.librarian.forgegradle' apply plugin: 'java' apply plugin: 'maven-publish' group = 'tt432' version = '1.18.2-3-1' java { archivesBaseName = 'millennium' toolchain.languageVersion = JavaLanguageVersion.of(17) } minecraft { mappings channel: 'parchment', version: '2022.08.07-1.18.2' accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') runs { client { workingDirectory project.file('run') property 'forge.logging.markers', 'REGISTRIES' property 'forge.logging.console.level', 'debug' property 'forge.enabledGameTestNamespaces', 'millennium' mods { millennium { source sourceSets.main } } } server { workingDirectory project.file('run') property 'forge.logging.markers', 'REGISTRIES' property 'forge.logging.console.level', 'debug' property 'forge.enabledGameTestNamespaces', 'millennium' mods { millennium { source sourceSets.main } } } gameTestServer { workingDirectory project.file('run') property 'forge.logging.markers', 'REGISTRIES' property 'forge.logging.console.level', 'debug' property 'forge.enabledGameTestNamespaces', 'millennium' mods { millennium { source sourceSets.main } } } data { workingDirectory project.file('run') property 'forge.logging.markers', 'REGISTRIES' property 'forge.logging.console.level', 'debug' args '--mod', 'millennium', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') mods { millennium { source sourceSets.main } } } } } mixin { add sourceSets.main, "millennium.refmap.json" config "millennium.mixins.json" } sourceSets.main.resources { srcDir 'src/generated/resources' } project.ext.lwjglVersion = "3.2.2" project.ext.lwjglNatives = "natives-windows" configurations { library implementation.extendsFrom library } minecraft.runs.all { lazyToken('minecraft_classpath') { configurations.library.copyRecursive().resolve().collect { it.absolutePath }.join(File.pathSeparator) } } repositories { maven { // location of the maven that hosts JEI files name = "Progwml6 maven" url = "https://dvs1.progwml6.com/files/maven/" } maven { // Modern UI name 'IzzelAliz Maven' url 'https://maven.izzel.io/releases/' } maven { // JEI, Mekanism name 'ModMaven' url 'https://modmaven.dev/' } maven { url "https://cursemaven.com" content { includeGroup "curse.maven" } } mavenCentral() } jarJar.enable() dependencies { minecraft 'net.minecraftforge:forge:1.18.2-40.1.73' annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}-forge-api:${jei_version}") implementation fg.deobf("mezz.jei:jei-${minecraft_version}-forge:${jei_version}") library "icyllis.modernui:ModernUI-Core:${modernui_version}" implementation fg.deobf("icyllis.modernui:ModernUI-Forge:${minecraft_version}-${modernui_version}") library "org.lwjgl:lwjgl-assimp:$lwjglVersion" runtimeOnly "org.lwjgl:lwjgl-assimp:$lwjglVersion:$lwjglNatives" jarJar(group: 'org.lwjgl', name: 'lwjgl-assimp', version: '[' + lwjglVersion + ',)') { jarJar.pin(it, lwjglVersion) } library "org.lwjgl:lwjgl-nanovg:$lwjglVersion" runtimeOnly "org.lwjgl:lwjgl-nanovg:$lwjglVersion:$lwjglNatives" jarJar(group: 'org.lwjgl', name: 'lwjgl-nanovg', version: '[' + lwjglVersion + ',)') { jarJar.pin(it, lwjglVersion) } library('com.vladsch.flexmark:flexmark-all:0.64.0') { exclude(group: "org.jetbrains", module: "annotations") } jarJar(group: 'com.vladsch.flexmark', name: 'flexmark-all', version: "[0.64.0,)") { exclude(group: "org.jetbrains", module: "annotations") jarJar.pin(it, '0.64.0') } library 'com.github.stephengold:Minie:6.0.1' jarJar(group: 'com.github.stephengold', name: 'Minie', version: '[6.0.1,)') { jarJar.pin(it, '6.0.1') } } // Example for how to get properties into the manifest for reading at runtime. jar { manifest { attributes([ "Specification-Title" : "millennium", "Specification-Vendor" : "DustW", "Specification-Version" : "1", // We are version 1 of ourselves "Implementation-Title" : project.name, "Implementation-Version" : project.jar.archiveVersion, "Implementation-Vendor" : "DustW", "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") ]) } } tasks.jarJar { archiveClassifier.set('') } tasks.jar { archiveClassifier.set('noShadow') } task sourcesJar(type: Jar, dependsOn: classes) { classifier = 'sources' from sourceSets.main.allSource } artifacts { archives sourcesJar } publishing { publications { normal(MavenPublication) { artifactId = archivesBaseName from components.java fg.component(it) jarJar.component(it) } } repositories { maven { url "file://${project.projectDir}/mcmodsrepo" } } } jar.finalizedBy('reobfJar') reobf.create('jarJar') build { dependsOn 'jarJar' } tasks.withType(JavaCompile).configureEach { options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation }