EroticDungeonGame/build.gradle
2026-01-13 21:47:04 +08:00

292 lines
9.1 KiB
Groovy
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import proguard.gradle.ProGuardTask
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.guardsquare:proguard-gradle:7.7.0'
}
}
plugins {
id 'java'
id 'idea'
id 'java-library'
id 'maven-publish'
id 'com.github.johnrengelman.shadow' version '8.1.1'
id 'net.neoforged.moddev.legacyforge' version '2.0.103'
}
// ===================== 基础配置 =====================
def enableProguard = project.hasProperty("enableProguard") && project.enableProguard.toBoolean()
tasks.named('wrapper', Wrapper).configure {
distributionType = Wrapper.DistributionType.BIN
}
group = mod_group_id
version = "${minecraft_version}-${mod_version}"
java {
toolchain.languageVersion = JavaLanguageVersion.of(17)
}
base {
archivesName = mod_id
}
println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}"
// ===================== 仓库配置 =====================
repositories {
mavenCentral()
maven { url = "https://libraries.minecraft.net/" }
maven { url = "https://neoforged.forgecdn.net/releases" }
maven { url = "https://neoforged.forgecdn.net/mojang-meta" }
maven {
url "https://cursemaven.com"
content { includeGroup "curse.maven" }
}
maven {
name = "Progwml6"
url = "https://dvs1.progwml6.com/files/maven/"
}
maven {
name = "BlameJared"
url = "https://maven.blamejared.com/"
}
maven {
name = "ModMaven"
url = "https://modmaven.dev"
}
maven {
name = "Lucko"
url = "https://repo.lucko.me/"
content { includeModule 'me.lucko', 'spark-api' }
}
maven {
name = "KosmX"
url = "https://maven.kosmx.dev/"
}
maven {
name = "Curios"
url = "https://maven.theillusivec4.top/"
}
maven {
name = "GeckoLib"
url = "https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/"
content {
includeGroupByRegex("software\\.bernie.*")
includeGroup("com.eliotlash.mclib")
}
}
maven {
name = "LTD Maven"
url = "https://nexus.bot.leisuretimedock.top/repository/maven-public/"
}
flatDir { dir "libs" }
}
// ===================== Forge 配置 =====================
legacyForge {
version = "${minecraft_version}-${forge_version}"
parchment {
minecraftVersion = parchment_minecraft_version
mappingsVersion = parchment_mappings_version
}
validateAccessTransformers = true
accessTransformers = ["src/main/templates/META-INF/accesstransformer.cfg"]
runs {
configureEach {
systemProperty 'forge.logging.console.level', 'debug'
systemProperty 'forge.logging.markers', 'REGISTRIES'
logLevel = org.slf4j.event.Level.DEBUG
}
client {
client()
systemProperty 'forge.enabledGameTestNamespaces', mod_id
}
clientAuth {
devLogin = true
client()
systemProperty 'forge.enabledGameTestNamespaces', mod_id
}
server {
server()
}
data {
data()
programArguments.addAll '--mod', mod_id, '--all',
'--output', file('src/generated/resources/').absolutePath,
'--existing', file('src/main/resources/').absolutePath
}
}
mods {
"${mod_id}" {
sourceSet sourceSets.main
}
}
}
// ===================== 源码与资源 =====================
sourceSets.main.resources {
srcDir 'src/generated/resources'
srcDir 'src/main/resources'
}
// ===================== 编译配置 =====================
tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8'
}
// ===================== 依赖 =====================
configurations {
runtimeClasspath.extendsFrom localRuntime
proguardLibs {
canBeResolved = true
canBeConsumed = false
extendsFrom modCompileOnly
}
}
dependencies {
implementation(jarJar("io.github.llamalad7:mixinextras-forge:[0.4.1,)"))
modRuntimeOnly("curse.maven:debug-utils-forge-783008:5337491")
modRuntimeOnly("curse.maven:powerful-dummy-1276893:6956104")
modImplementation("blank:curtain-1.20.1:1.3.2")
modImplementation("blank:freecam-1.20.1:1.2.1")
modImplementation("blank:carryon-1.20.1:2.1.2.7")
modCompileOnly("mezz.jei:jei-${minecraft_version}-forge-api:${jei_version}")
modCompileOnly("mezz.jei:jei-${minecraft_version}-common-api:${jei_version}")
modRuntimeOnly("mezz.jei:jei-${minecraft_version}-forge:${jei_version}")
modImplementation("dev.kosmx.player-anim:player-animation-lib-forge:${player_anim_version}")
modImplementation("curse.maven:bendy-lib-623373:4550371")
modImplementation("software.bernie.geckolib:geckolib-forge-${minecraft_version}:${geckolib_version}")
implementation(jarJar("com.eliotlash.mclib:mclib:20"))
modCompileOnly("top.theillusivec4.curios:curios-forge:${curios_version}:api")
modImplementation("top.theillusivec4.curios:curios-forge:${curios_version}")
implementation(annotationProcessor("io.github.llamalad7:mixinextras-common:0.4.1"))
modImplementation(jarJar("io.github.llamalad7:mixinextras-forge:0.4.1"))
modRuntimeOnly("curse.maven:spark-361579:4738952")
compileOnly ('me.lucko:spark-api:0.1-SNAPSHOT')
modImplementation("top.r3944realms.lib39:lib39:1.20.1-${lib39_version}")
modImplementation(jarJar("top.leisuiretimedock.animationcore:animcore:${accore_version}"))
}
mixin {
add sourceSets.main, "${mod_id}.refmap.json"
config "${mod_id}.mixins.json"
}
dependencies {
annotationProcessor 'org.spongepowered:mixin:0.8.5:processor'
}
// ===================== 主 Jar 与混淆 =====================
jar {
manifest {
attributes([
'Specification-Title' : mod_id,
'Specification-Vendor' : mod_authors,
'Specification-Version' : '1',
'Implementation-Title' : project.name,
'Implementation-Version' : archiveVersion,
'Implementation-Vendor' : mod_authors,
'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
'MixinConfigs' : "${mod_id}.mixins.json"
])
}
archiveFileName = "${mod_id}-${mod_version}-origin.jar"
// 可选:排除 API 类(如果你不想在主 jar 中包含 API
// exclude "top/r3944realms/superleadrope/api/**/*"
finalizedBy 'proguard'
}
tasks.register('proguard', ProGuardTask) {
onlyIf { enableProguard }
dependsOn tasks.jar
configuration 'proguard.pro'
libraryjars "${System.getProperty('java.home')}/jmods"
configurations.proguardLibs.resolve().each { file ->
libraryjars file.absolutePath
}
def inputJar = tasks.jar.archiveFile.get().asFile
injars inputJar
outjars "${buildDir}/libs/[NOTUSE]${mod_id}-${minecraft_version}-${mod_version}-proguard.jar"
doFirst {
copy {
from inputJar
into "${buildDir}/libs"
rename { "[NOTUSE]${mod_id}-${minecraft_version}-${mod_version}-origin.jar" }
}
}
inputs.files tasks.jar.archiveFile
finalizedBy 'reobfJar'
}
processResources {
def props = [
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_authors,
mod_description : mod_description,
mod_credits : mod_credits,
lib39_version : lib39_version,
player_animation_version: player_anim_version,
accore_version : accore_version,
geckolib_version : geckolib_version,
curios_version : curios_version
]
inputs.properties props
from "src/main/templates"
filesMatching(['META-INF/mods.toml', 'pack.mcmeta']) {
expand props + [project: project]
}
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
into "build/generated/sources/modMetadata"
}
afterEvaluate {
tasks.named('reobfJar') {
if (enableProguard) {
dependsOn 'proguard'
input = file("${buildDir}/libs/[NOTUSE]${mod_id}-${minecraft_version}-${mod_version}-proguard.jar")
} else {
dependsOn 'jar'
input = tasks.jar.archiveFile.get().asFile
}
}
}
tasks.named('clean') {
delete fileTree(dir: "${project.projectDir}/mcmodsrepo")
}
// ===================== IDEA 支持 =====================
idea {
module {
downloadSources = true
downloadJavadoc = true
}
}