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
}