246 lines
9.5 KiB
Groovy
246 lines
9.5 KiB
Groovy
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/**'
|
||
// 放开此前被排除的 mixin 源码,便于完整移植功能;是否实际注入由 mixins.json 决定
|
||
// 注意:可选联动(如 ae2WTlib)未在 mixins.json 注册时不会注入,避免运行期崩溃
|
||
}
|
||
|
||
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
|
||
}
|
||
}
|