2025-07-20 23:08:54 +08:00

156 lines
5.0 KiB
Groovy

plugins {
id 'eclipse'
id 'idea'
id 'maven-publish'
id 'net.minecraftforge.gradle' version '[6.0,6.2)'
id 'org.spongepowered.mixin' version '0.7+'
}
version = "${loader_name}-${minecraft_version}-${mod_version}"
group = maven_group
base {
archivesName = mod_id
}
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'}"
sourceSets {
main {
java { srcDirs = ['src'] }
resources { srcDirs = ['resources', project(":common").sourceSets.main.resources] }
}
}
afterEvaluate {
tasks.withType(JavaCompile) {
options.annotationProcessorPath = files(configurations.annotationProcessor,
project(":common").sourceSets.main.output)
}
}
minecraft {
mappings channel: mapping_channel, version: mapping_version
copyIdeResources = true
runs {
client {
workingDirectory project.file('run')
property 'forge.logging.markers', 'REGISTRIES'
property 'forge.enabledGameTestNamespaces', mod_id
property 'forge.logging.console.level', 'info'
mods {
"${mod_id}" {
source sourceSets.main
}
}
}
server {
workingDirectory project.file('run')
property 'forge.logging.markers', 'REGISTRIES'
property 'forge.enabledGameTestNamespaces', mod_id
property 'forge.logging.console.level', 'info'
mods {
"${mod_id}" {
source sourceSets.main
}
}
}
gameTestServer {
workingDirectory project.file('run')
property 'forge.logging.markers', 'REGISTRIES'
property 'forge.enabledGameTestNamespaces', mod_id
property 'forge.logging.console.level', 'info'
mods {
"${mod_id}" {
source sourceSets.main
}
}
}
data {
workingDirectory project.file('run')
property 'forge.logging.markers', 'REGISTRIES'
property 'forge.logging.console.level', 'debug'
args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
mods {
"${mod_id}" {
source sourceSets.main
}
}
}
}
}
mixin {
add sourceSets.main, "enchantmentdoesnotconflict.forge.mixin.refmap.json"
config "enchantmentdoesnotconflict.forge.mixin.json"
}
repositories {}
dependencies {
minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"
minecraftLibrary(project(":common")) {
exclude group: 'org.jetbrains', module: 'annotations'
}
annotationProcessor 'org.spongepowered:mixin:0.8.5:processor'
}
def resourceTargets = ['META-INF/mods.toml', 'pack.mcmeta']
def replaceProperties = [minecraft_version : minecraft_version,
minecraft_version_range: minecraft_version_range,
forge_version : forge_version,
forge_version_range : forge_version_range,
loader_version_range : loader_version_range,
mod_id : mod_id,
mod_name : mod_name,
mod_license : mod_license,
mod_version : mod_version,
mod_authors : "${mod_author},${mod_contributor},${mod_contributor_2}",
mod_description : mod_description]
processResources {
inputs.properties replaceProperties
replaceProperties.put 'project', project
filesMatching(resourceTargets) {
expand replaceProperties
}
}
jar {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
enabled = true
manifest {
attributes(["Specification-Title" : mod_id,
"Specification-Vendor" : mod_author,
"Specification-Version" : "1", // We are version 1 of ourselves
"Implementation-Title" : project.name,
"Implementation-Version" : project.jar.archiveVersion,
"Implementation-Vendor" : mod_author,
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
"MixinConfigs": "enchantmentdoesnotconflict.forge.mixin.json"])
}
}
jar.finalizedBy('reobfJar')
publishing {
publications {
mavenJava(MavenPublication) {
artifact jar
}
}
repositories {
maven {
url "file://${project.projectDir}/mcmodsrepo"
}
}
}
tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8'
}