first commit
This commit is contained in:
+137
@@ -0,0 +1,137 @@
|
||||
plugins {
|
||||
id 'java-library'
|
||||
id 'net.neoforged.moddev' version '2.0.143'
|
||||
}
|
||||
|
||||
group = mod_group_id
|
||||
version = mod_version
|
||||
base { archivesName = mod_id }
|
||||
|
||||
java.toolchain.languageVersion = JavaLanguageVersion.of(21)
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
neoForge {
|
||||
version = project.neo_version
|
||||
|
||||
// Expose the mojmapped, decompiled Minecraft sources so they can be grepped.
|
||||
// `./gradlew createMinecraftArtifacts` produces them under build/ + the MDG cache.
|
||||
accessTransformers.from('src/main/resources/META-INF/accesstransformer.cfg')
|
||||
|
||||
runs {
|
||||
configureEach {
|
||||
systemProperty 'forge.logging.markers', 'REGISTRIES'
|
||||
logLevel = org.slf4j.event.Level.DEBUG
|
||||
}
|
||||
client {
|
||||
client()
|
||||
}
|
||||
server {
|
||||
server()
|
||||
programArgument '--nogui'
|
||||
}
|
||||
}
|
||||
|
||||
mods {
|
||||
"$mod_id" {
|
||||
sourceSet sourceSets.main
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// The end-to-end suite asserts on reports produced by a real dedicated server, so it is kept out of
|
||||
// `check`: it downloads and installs NeoForge and takes minutes. Run it with `./gradlew e2eTest`.
|
||||
sourceSets {
|
||||
e2e {
|
||||
compileClasspath += sourceSets.main.output
|
||||
runtimeClasspath += sourceSets.main.output
|
||||
}
|
||||
}
|
||||
|
||||
configurations {
|
||||
e2eImplementation.extendsFrom testImplementation
|
||||
e2eRuntimeOnly.extendsFrom testRuntimeOnly
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly 'org.projectlombok:lombok:1.18.34'
|
||||
annotationProcessor 'org.projectlombok:lombok:1.18.34'
|
||||
|
||||
testCompileOnly 'org.projectlombok:lombok:1.18.34'
|
||||
testAnnotationProcessor 'org.projectlombok:lombok:1.18.34'
|
||||
|
||||
testImplementation platform('org.junit:junit-bom:5.11.3')
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter'
|
||||
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
|
||||
testImplementation 'org.assertj:assertj-core:3.26.3'
|
||||
|
||||
// The analysis, report and origin packages are deliberately free of Minecraft types so they can be
|
||||
// unit-tested without a game runtime. These two are the only libraries they touch, at the versions
|
||||
// Minecraft 1.21.1 itself ships.
|
||||
testImplementation 'it.unimi.dsi:fastutil:8.5.12'
|
||||
testImplementation 'com.google.code.gson:gson:2.10.1'
|
||||
}
|
||||
|
||||
// Interpolate mod metadata into neoforge.mods.toml
|
||||
var generateModMetadata = tasks.register('generateModMetadata', ProcessResources) {
|
||||
var replaceProperties = [
|
||||
minecraft_version : minecraft_version,
|
||||
neo_version : neo_version,
|
||||
mod_id : mod_id,
|
||||
mod_name : mod_name,
|
||||
mod_license : mod_license,
|
||||
mod_version : mod_version,
|
||||
mod_authors : mod_authors,
|
||||
mod_description : mod_description,
|
||||
]
|
||||
inputs.properties replaceProperties
|
||||
expand replaceProperties
|
||||
from 'src/main/templates'
|
||||
into "$buildDir/generated/sources/modMetadata"
|
||||
}
|
||||
sourceSets.main.resources.srcDir generateModMetadata
|
||||
neoForge.ideSyncTask generateModMetadata
|
||||
|
||||
tasks.withType(JavaCompile).configureEach {
|
||||
options.encoding = 'UTF-8'
|
||||
options.release = 21
|
||||
options.compilerArgs << '-Xlint:all,-processing,-serial'
|
||||
}
|
||||
|
||||
tasks.named('test', Test) {
|
||||
useJUnitPlatform()
|
||||
testLogging {
|
||||
events 'passed', 'skipped', 'failed'
|
||||
exceptionFormat 'full'
|
||||
showStandardStreams = false
|
||||
}
|
||||
}
|
||||
|
||||
var e2eRoot = layout.buildDirectory.dir('e2e')
|
||||
|
||||
var e2eServers = tasks.register('e2eServers', Exec) {
|
||||
group = 'verification'
|
||||
description = 'Installs a NeoForge dedicated server, runs the mod on it twice and keeps its reports.'
|
||||
dependsOn tasks.named('jar')
|
||||
workingDir projectDir
|
||||
commandLine 'bash', 'e2e/run-servers.sh'
|
||||
environment 'E2E_OUT', e2eRoot.get().asFile.absolutePath
|
||||
outputs.upToDateWhen { false }
|
||||
}
|
||||
|
||||
tasks.register('e2eTest', Test) {
|
||||
group = 'verification'
|
||||
description = 'Asserts on the reports the dedicated servers produced. Not part of `check`: it is slow.'
|
||||
dependsOn e2eServers
|
||||
testClassesDirs = sourceSets.e2e.output.classesDirs
|
||||
classpath = sourceSets.e2e.runtimeClasspath
|
||||
systemProperty 'e2e.root', e2eRoot.get().asFile.absolutePath
|
||||
useJUnitPlatform()
|
||||
testLogging {
|
||||
events 'passed', 'skipped', 'failed'
|
||||
exceptionFormat 'full'
|
||||
}
|
||||
outputs.upToDateWhen { false }
|
||||
}
|
||||
Reference in New Issue
Block a user