ExtendedAE_Plus/build.gradle
2025-09-06 17:35:34 +08:00

252 lines
9.7 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.

plugins {
id 'java-library'
id 'maven-publish'
id 'net.neoforged.moddev' version '2.0.107'
id 'idea'
}
tasks.named('wrapper', Wrapper).configure {
// Define wrapper values here so as to not have to always do so when updating gradlew.properties.
// Switching this to Wrapper.DistributionType.ALL will download the full gradle sources that comes with
// documentation attached on cursor hover of gradle classes and methods. However, this comes with increased
// file size for Gradle. If you do switch this to ALL, run the Gradle wrapper task twice afterwards.
// (Verify by checking gradle/wrapper/gradle-wrapper.properties to see if distributionUrl now points to `-all`)
distributionType = Wrapper.DistributionType.BIN
}
version = mod_version
group = mod_group_id
repositories {
// Add here additional repositories if required by some of the dependencies below.
maven {
name = "TerraformersMC"
url = uri("https://maven.terraformersmc.com/")
}
maven {
name = 'cursemaven'
url = uri("https://www.cursemaven.com")
}
maven {
name = "Modmaven"
url = uri("https://modmaven.dev/")
}
maven {
url = uri("https://maven.shedaniel.me/")
}
maven {
url = uri("https://maven.architectury.dev/")
}
maven {
url = uri("https://maven.latvian.dev/releases/")
}
mavenCentral()
}
base {
archivesName = mod_id
}
// Mojang ships Java 21 to end users in 1.21.1, so mods should target Java 21.
java.toolchain.languageVersion = JavaLanguageVersion.of(21)
neoForge {
// Specify the version of NeoForge to use.
version = project.neo_version
parchment {
mappingsVersion = project.parchment_mappings_version
minecraftVersion = project.parchment_minecraft_version
}
// This line is optional. Access Transformers are automatically detected
// accessTransformers = project.files('src/main/resources/META-INF/accesstransformer.cfg')
// Default run configurations.
// These can be tweaked, removed, or duplicated as needed.
runs {
client {
client()
// Comma-separated list of namespaces to load gametests from. Empty = all namespaces.
systemProperty 'neoforge.enabledGameTestNamespaces', project.mod_id
}
server {
server()
programArgument '--nogui'
systemProperty 'neoforge.enabledGameTestNamespaces', project.mod_id
}
// This run config launches GameTestServer and runs all registered gametests, then exits.
// By default, the server will crash when no gametests are provided.
// The gametest system is also enabled by default for other run configs under the /test command.
gameTestServer {
type = "gameTestServer"
systemProperty 'neoforge.enabledGameTestNamespaces', project.mod_id
}
data {
data()
// example of overriding the workingDirectory set in configureEach above, uncomment if you want to use it
// gameDirectory = project.file('run-data')
// Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources.
programArguments.addAll '--mod', project.mod_id, '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath()
}
// applies to all the run configs above
configureEach {
// Recommended logging data for a userdev environment
// The markers can be added/remove as needed separated by commas.
// "SCAN": For mods scan.
// "REGISTRIES": For firing of registry events.
// "REGISTRYDUMP": For getting the contents of all registries.
systemProperty 'forge.logging.markers', 'REGISTRIES'
// Recommended logging level for the console
// You can set various levels here.
// Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels
logLevel = org.slf4j.event.Level.DEBUG
}
}
mods {
// define mod <-> source bindings
// these are used to tell the game which sources are for which mod
// multi mod projects should define one per mod
"${mod_id}" {
sourceSet(sourceSets.main)
}
}
}
// Include resources generated by data generators.
sourceSets.main.resources { srcDir 'src/generated/resources' }
// 暂时排除缺少依赖的可选联动源码,待补齐依赖后再启用
sourceSets.main.java {
// 编译期引入 ExtendedAE 源码(仅作编译期引用,运行期由依赖提供)
srcDir 'othermods/ExtendedAE-1.21-2.2.21-neoforge/src/main/java'
// 解封本模组全部源码;仅排除非 accessor 的 mixin 实现,放通 accessor 包用于编译期引用
include 'com/extendedae_plus/**'
// 允许 accessor
include 'com/extendedae_plus/mixin/**/accessor/**'
// 排除具体的非 accessor mixin 目录
// AE2 相关非 accessor已启用需要参与编译与运行
// 其他模块的非 accessor mixin
exclude 'com/extendedae_plus/mixin/ae2WTlib/**'
// 保留 mixin/jei/accessor但排除其余
exclude 'com/extendedae_plus/mixin/jei/*.java'
// 排除顶层 mixin 文件
exclude 'com/extendedae_plus/mixin/PickFromWirelessMixin.java'
}
configurations {
runtimeClasspath.extendsFrom localRuntime
}
dependencies {
// --- Added dependencies for target mods ---
implementation "curse.maven:glodium-957920:5821676"
implementation "org.appliedenergistics:appliedenergistics2:19.2.8"
implementation "org.appliedenergistics:guideme:2.5.1"
// jarJar configuration not set in this build; use implementation for API for now
implementation "de.mari_023:ae2wtlib_api:19.2.0"
implementation "curse.maven:curios-309927:6529130"
compileOnly "curse.maven:ex-pattern-provider-892005:6863556"
compileOnly "curse.maven:applied-flux-965012:5614830"
compileOnly "dev.emi:emi-neoforge:1.1.10+1.21"
compileOnly "curse.maven:mega-cells-622112:6005043"
compileOnly "curse.maven:jade-324717:5427817"
compileOnly "me.shedaniel:RoughlyEnoughItems-neoforge:16.0.729"
compileOnly "mekanism:Mekanism:1.21.1-10.7.0.55"
compileOnly "curse.maven:applied-mekanistics-574300:5978711"
compileOnly "dev.latvian.mods:kubejs-neoforge:2101.7.1-build.188"
compileOnly "dev.latvian.mods:rhino:2101.2.5-build.54"
compileOnly "curse.maven:framedblocks-441647:6127891"
compileOnly "curse.maven:advancedae-1084104:6225993"
compileOnly "curse.maven:functional-storage-556861:6467726"
compileOnly "mezz.jei:jei-1.21.1-neoforge:19.21.0.247"
compileOnly "curse.maven:ae2-jei-integration-1074338:5748513"
// runtime test
runtimeOnly "curse.maven:applied-flux-965012:5614830"
runtimeOnly "de.mari_023:ae2wtlib:19.2.1"
runtimeOnly "curse.maven:jade-324717:5427817"
runtimeOnly "curse.maven:mega-cells-622112:6005043"
runtimeOnly "mekanism:Mekanism:1.21.1-10.7.0.55"
runtimeOnly "curse.maven:ex-pattern-provider-892005:6863556"
// setup Xei (EMI/REI/JEI) using project property 'use_Xei'
switch (project.findProperty('use_Xei') ?: 'emi') {
case 'emi':
runtimeOnly "dev.emi:emi-neoforge:1.1.10+1.21"
break
case 'rei':
runtimeOnly "me.shedaniel:RoughlyEnoughItems-neoforge:16.0.729"
runtimeOnly "dev.architectury:architectury-neoforge:13.0.1"
runtimeOnly "curse.maven:cloth-config-348521:5424576"
break
case 'jei':
runtimeOnly "mezz.jei:jei-1.21.1-neoforge:19.21.0.247"
runtimeOnly "curse.maven:ae2-jei-integration-1074338:5748513"
break
}
}
// This block of code expands all declared replace properties in the specified resource targets.
// A missing property will result in an error. Properties are expanded using ${} Groovy notation.
var generateModMetadata = tasks.register("generateModMetadata", ProcessResources) {
var replaceProperties = [
minecraft_version : minecraft_version,
minecraft_version_range: minecraft_version_range,
neo_version : neo_version,
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
]
inputs.properties replaceProperties
expand replaceProperties
from "src/main/templates"
into "build/generated/sources/modMetadata"
}
// Include the output of "generateModMetadata" as an input directory for the build
// this works with both building through Gradle and the IDE.
sourceSets.main.resources.srcDir generateModMetadata
// To avoid having to run "generateModMetadata" manually, make it run on every project reload
neoForge.ideSyncTask generateModMetadata
// Example configuration to allow publishing using the maven-publish plugin
publishing {
publications {
register('mavenJava', MavenPublication) {
from components.java
}
}
repositories {
maven {
url "file://${project.projectDir}/repo"
}
}
}
tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation
}
// IDEA no longer automatically downloads sources/javadoc jars for dependencies, so we need to explicitly enable the behavior.
idea {
module {
downloadSources = true
downloadJavadoc = true
}
}