ActuallyAdditions/build.gradle

296 lines
8.4 KiB
Groovy
Raw Normal View History

2024-03-03 01:20:53 +01:00
plugins {
2024-03-04 20:21:48 +01:00
id 'java-library'
2024-03-03 01:20:53 +01:00
id 'maven-publish'
2024-10-27 12:31:14 +01:00
id 'net.neoforged.moddev' version '1.0.21'
id "me.modmuss50.mod-publish-plugin" version "0.7.4"
2014-11-07 14:19:05 +01:00
}
2016-05-19 20:05:12 +02:00
2024-10-27 12:31:14 +01:00
tasks.named('wrapper', Wrapper).configure {
distributionType = Wrapper.DistributionType.BIN
}
version = "$mod_version+mc${game_version}"
group = "de.ellpeck"
2024-03-07 01:24:42 +01:00
2024-03-03 01:20:53 +01:00
base {
2024-10-27 12:31:14 +01:00
archivesName = "actuallyadditions"
2016-07-31 16:30:37 +02:00
}
2024-07-08 13:17:57 +02:00
java.toolchain.languageVersion = JavaLanguageVersion.of(21)
2021-02-26 22:15:48 +01:00
2024-10-27 12:31:14 +01:00
neoForge {
version = project.neo_version
2021-02-26 22:15:48 +01:00
2024-10-27 12:31:14 +01:00
parchment {
mappingsVersion = project.parchment_mappings_version
minecraftVersion = project.hasProperty("parchment_minecraft_version") ? project.parchment_minecraft_version : project.game_version
}
2024-03-04 20:21:48 +01:00
2024-10-27 12:31:14 +01:00
runs {
client {
client()
systemProperty 'neoforge.enabledGameTestNamespaces', "actuallyadditions"
2024-10-29 22:14:32 +01:00
programArguments.addAll '--width=1280', '--height=720'
2021-02-26 22:15:48 +01:00
}
2024-10-27 12:31:14 +01:00
client2 {
client()
2024-10-27 12:31:14 +01:00
programArguments.addAll '--username', 'Dev2'
// Comma-separated list of namespaces to load gametests from. Empty = all namespaces.
systemProperty 'neoforge.enabledGameTestNamespaces', "actuallyadditions"
}
2024-03-13 22:35:11 +01:00
2024-10-27 12:31:14 +01:00
server {
server()
programArgument '--nogui'
systemProperty 'neoforge.enabledGameTestNamespaces', "actuallyadditions"
}
2024-03-13 22:35:11 +01:00
2024-10-27 12:31:14 +01:00
gameTestServer {
type = "gameTestServer"
systemProperty 'neoforge.enabledGameTestNamespaces', "actuallyadditions"
}
2024-03-04 20:21:48 +01:00
2024-10-27 12:31:14 +01:00
data {
data()
programArguments.addAll '--mod', "actuallyadditions", '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath()
}
configureEach { run ->
2024-10-30 20:55:44 +01:00
logLevel = org.slf4j.event.Level.DEBUG
2024-10-27 12:31:14 +01:00
jvmArgument '-Xmx4G'
2024-03-04 20:21:48 +01:00
2024-10-27 12:31:14 +01:00
if (run.project.javaToolchains.launcherFor(java.toolchain).map { it.metadata.vendor }.getOrElse("").contains("JetBrains")) {
run.jvmArgument("-XX:+AllowEnhancedClassRedefinition")
}
}
}
mods {
"actuallyadditions" {
sourceSet(sourceSets.main)
}
2021-02-26 22:15:48 +01:00
}
2014-11-07 14:19:05 +01:00
}
sourceSets.main.resources { srcDir 'src/generated/resources' }
2024-08-11 20:30:35 +02:00
configurations {
runtimeClasspath.extendsFrom localRuntime
}
2015-04-26 20:07:57 +02:00
repositories {
2024-10-27 12:31:14 +01:00
maven {
url = "https://maven.neoforged.net/releases"
}
2016-01-16 20:06:25 +01:00
maven {
2024-03-03 01:20:53 +01:00
url = "https://maven.blamejared.com"
2020-11-20 18:55:16 +01:00
}
maven {
2024-03-04 20:21:48 +01:00
url "https://cursemaven.com"
content {
includeGroup "curse.maven"
}
}
maven { url = 'https://maven.octo-studios.com/releases' }
2015-04-26 20:07:57 +02:00
}
dependencies {
2024-08-11 20:30:35 +02:00
compileOnly "mezz.jei:jei-${jei_minecraft}-common-api:${jei_version}"
compileOnly "mezz.jei:jei-${jei_minecraft}-neoforge-api:${jei_version}"
2024-03-03 01:20:53 +01:00
2024-08-11 20:30:35 +02:00
localRuntime "mezz.jei:jei-${jei_minecraft}-neoforge:${jei_version}"
2024-03-06 00:10:42 +01:00
compileOnly "vazkii.patchouli:Patchouli:${patchouli_version}"
2024-10-14 19:56:18 +02:00
localRuntime "vazkii.patchouli:Patchouli:${patchouli_version}"
2024-03-06 00:10:42 +01:00
compileOnly "xyz.brassgoggledcoders:PatchouliProvider:${patchouli_provider_version}"
2024-10-14 19:56:18 +02:00
localRuntime "xyz.brassgoggledcoders:PatchouliProvider:${patchouli_provider_version}"
2024-03-06 00:10:42 +01:00
2024-10-14 19:56:18 +02:00
localRuntime "curse.maven:jade-324717:5803666"
localRuntime "curse.maven:mekanism-268560:5680395"
2024-10-24 23:06:42 +02:00
// Immersive Engineering, mainly for compat datagen
2024-10-25 00:35:33 +02:00
localRuntime "curse.maven:ie-231951:5828000"
compileOnly "curse.maven:ie-231951:5828000"
localRuntime "blusunrize.immersiveengineering:ImmersiveEngineering:1.21.1-12.0.0-182.77:datagen"
compileOnly "blusunrize.immersiveengineering:ImmersiveEngineering:1.21.1-12.0.0-182.77:datagen"
localRuntime "blusunrize.immersiveengineering:ImmersiveEngineering:1.21.1-12.0.0-182.77:api"
compileOnly "blusunrize.immersiveengineering:ImmersiveEngineering:1.21.1-12.0.0-182.77:api"
2024-10-24 23:06:42 +02:00
implementation "top.theillusivec4.curios:curios-neoforge:${curios_version}"
2014-11-07 14:19:05 +01:00
}
2020-11-20 18:55:16 +01:00
jar {
2021-02-26 22:15:48 +01:00
group = 'artifact'
manifest {
attributes(["Specification-Title" : "Actually Additions",
2021-02-26 22:15:48 +01:00
"Specification-Version" : "1",
"Implementation-Title" : project.archivesBaseName,
"Implementation-Version" : project.version,
2024-03-07 01:24:42 +01:00
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
"Modloader": "Neoforge",
"Modloader-Version": project.neo_version,
])
2021-02-26 22:15:48 +01:00
}
2020-11-20 18:55:16 +01:00
2021-02-26 22:15:48 +01:00
from sourceSets.main.output
2020-11-20 18:55:16 +01:00
}
2016-05-19 20:05:12 +02:00
2024-10-27 12:31:14 +01:00
var generateModMetadata = tasks.register("generateModMetadata", ProcessResources) {
var replaceProperties = [
minecraft_version : game_version,
minecraft_version_range: game_version_range,
neo_version : neo_version,
neo_version_range : neo_version_range,
loader_version_range : loader_version_range,
mod_id : "actuallyadditions",
mod_name : "Actually Additions",
mod_version : mod_version,
]
inputs.properties replaceProperties
expand replaceProperties
from "src/main/templates"
into "build/generated/sources/modMetadata"
}
sourceSets.main.resources.srcDir generateModMetadata
neoForge.ideSyncTask generateModMetadata
tasks.register('apiJar', Jar) {
2020-11-20 18:46:34 +01:00
from sourceSets.main.output
from sourceSets.main.java
2024-03-03 01:20:53 +01:00
archiveClassifier.set('api')
2020-11-20 18:46:34 +01:00
include 'de/ellpeck/actuallyadditions/api/**'
2016-07-31 16:30:37 +02:00
}
javadoc {
include 'de/ellpeck/actuallyadditions/api/**'
}
2024-10-27 12:31:14 +01:00
tasks.register('javadocJar', Jar) {
dependsOn javadoc
2016-07-31 16:30:37 +02:00
from 'build/docs/javadoc'
2024-03-03 01:20:53 +01:00
archiveClassifier.set('javadoc')
2016-07-31 16:30:37 +02:00
}
2024-10-27 12:31:14 +01:00
tasks.register('sourcesJar', Jar) {
2020-11-20 18:46:34 +01:00
from sourceSets.main.java
2024-03-03 01:20:53 +01:00
archiveClassifier.set('sources')
2020-11-20 18:46:34 +01:00
}
2020-11-21 19:08:07 +01:00
artifacts {
2024-03-04 20:21:48 +01:00
archives sourcesJar, apiJar, javadocJar
2020-11-21 19:08:07 +01:00
}
2024-10-27 12:31:14 +01:00
2016-07-31 16:30:37 +02:00
publishing {
publications {
2024-10-27 12:31:14 +01:00
register('mavenJava', MavenPublication) {
2020-11-21 19:08:07 +01:00
from components.java
2024-10-27 12:31:14 +01:00
// Add sources and javadoc to the publication
2020-11-21 19:08:07 +01:00
artifact sourcesJar
2020-11-20 19:02:53 +01:00
artifact apiJar
artifact javadocJar
2016-07-31 16:30:37 +02:00
}
}
2024-10-27 12:31:14 +01:00
2016-07-31 16:30:37 +02:00
repositories {
2024-10-27 12:31:14 +01:00
def token = providers.environmentVariable("MAVEN_TOKEN")
if (token.isPresent()) {
maven {
url "https://maven.saps.dev/releases"
credentials {
username = "ell"
password = token.get()
}
}
2016-07-31 16:30:37 +02:00
}
}
2021-02-26 22:15:48 +01:00
}
2024-03-03 01:20:53 +01:00
2024-10-27 12:31:14 +01:00
tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8'
}
2024-07-08 13:17:57 +02:00
idea {
module {
downloadSources = true
downloadJavadoc = true
}
2024-03-03 01:20:53 +01:00
}
2024-10-27 12:31:14 +01:00
/**
* Seek out the changelog for the current version and return it as a string.
*/
def createChangelog = () -> {
def changelogText = new File("CHANGELOG.md").text
def changelog = ""
def lines = changelogText.split("\n")
def inChangelog = false
for (int i = 0; i < lines.size(); i++) {
def line = lines[i]
if (line.startsWith("# ")) {
if (inChangelog) {
break
} else {
if (line.contains(mod_version)) {
inChangelog = true
}
}
}
if (inChangelog) {
changelog += line + "\n"
}
}
def output = changelog.trim()
return output.empty ? "No changelog found" : output
}
def cfToken = providers.environmentVariable("CF_TOKEN")
def mrToken = providers.environmentVariable("MR_TOKEN")
def ghToken = providers.environmentVariable("GITHUB_TOKEN")
publishMods {
dryRun = !cfToken.isPresent() || !mrToken.isPresent() || !ghToken.isPresent()
changelog = createChangelog().trim()
version = mod_version
displayName = "Actually Additions ${mod_version}"
type = STABLE
file = jar.archiveFile
additionalFiles.from apiJar.archiveFile
additionalFiles.from javadocJar.archiveFile
additionalFiles.from sourcesJar.archiveFile
modLoaders.add("neoforge")
curseforge {
accessToken = cfToken
projectId = "228404"
minecraftVersions.add(game_version)
javaVersions.add(JavaVersion.VERSION_21)
}
modrinth {
accessToken = mrToken
projectId = "4K7Q3nqd"
minecraftVersions.add(game_version)
}
github {
repository = "Ellpeck/ActuallyAdditions"
accessToken = ghToken
commitish = providers.environmentVariable("GITHUB_SHA").orElse("dryRun")
tagName = providers.environmentVariable("GITHUB_REF_NAME").orElse("dryRun")
}
}