mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-10-30 06:10:51 +01:00
294 lines
8.4 KiB
Groovy
294 lines
8.4 KiB
Groovy
plugins {
|
|
id 'java-library'
|
|
id 'maven-publish'
|
|
id 'net.neoforged.moddev' version '1.0.21'
|
|
id "me.modmuss50.mod-publish-plugin" version "0.7.4"
|
|
}
|
|
|
|
tasks.named('wrapper', Wrapper).configure {
|
|
distributionType = Wrapper.DistributionType.BIN
|
|
}
|
|
|
|
version = "$mod_version+mc${game_version}"
|
|
group = "de.ellpeck"
|
|
|
|
base {
|
|
archivesName = "actuallyadditions"
|
|
}
|
|
|
|
java.toolchain.languageVersion = JavaLanguageVersion.of(21)
|
|
|
|
neoForge {
|
|
version = project.neo_version
|
|
|
|
parchment {
|
|
mappingsVersion = project.parchment_mappings_version
|
|
minecraftVersion = project.hasProperty("parchment_minecraft_version") ? project.parchment_minecraft_version : project.game_version
|
|
}
|
|
|
|
runs {
|
|
client {
|
|
client()
|
|
systemProperty 'neoforge.enabledGameTestNamespaces', "actuallyadditions"
|
|
programArguments.addAll '--width=1280', '--height=720'
|
|
}
|
|
|
|
client2 {
|
|
client()
|
|
|
|
programArguments.addAll '--username', 'Dev2'
|
|
|
|
// Comma-separated list of namespaces to load gametests from. Empty = all namespaces.
|
|
systemProperty 'neoforge.enabledGameTestNamespaces', "actuallyadditions"
|
|
}
|
|
|
|
server {
|
|
server()
|
|
programArgument '--nogui'
|
|
systemProperty 'neoforge.enabledGameTestNamespaces', "actuallyadditions"
|
|
}
|
|
|
|
gameTestServer {
|
|
type = "gameTestServer"
|
|
systemProperty 'neoforge.enabledGameTestNamespaces', "actuallyadditions"
|
|
}
|
|
|
|
data {
|
|
data()
|
|
programArguments.addAll '--mod', "actuallyadditions", '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath()
|
|
}
|
|
|
|
configureEach { run ->
|
|
jvmArgument '-Xmx4G'
|
|
|
|
if (run.project.javaToolchains.launcherFor(java.toolchain).map { it.metadata.vendor }.getOrElse("").contains("JetBrains")) {
|
|
run.jvmArgument("-XX:+AllowEnhancedClassRedefinition")
|
|
}
|
|
}
|
|
}
|
|
|
|
mods {
|
|
"actuallyadditions" {
|
|
sourceSet(sourceSets.main)
|
|
}
|
|
}
|
|
}
|
|
|
|
sourceSets.main.resources { srcDir 'src/generated/resources' }
|
|
|
|
configurations {
|
|
runtimeClasspath.extendsFrom localRuntime
|
|
}
|
|
|
|
repositories {
|
|
maven {
|
|
url = "https://maven.neoforged.net/releases"
|
|
}
|
|
maven {
|
|
url = "https://maven.blamejared.com"
|
|
}
|
|
maven {
|
|
url "https://cursemaven.com"
|
|
content {
|
|
includeGroup "curse.maven"
|
|
}
|
|
}
|
|
maven { url = 'https://maven.octo-studios.com/releases' }
|
|
}
|
|
|
|
dependencies {
|
|
compileOnly "mezz.jei:jei-${jei_minecraft}-common-api:${jei_version}"
|
|
compileOnly "mezz.jei:jei-${jei_minecraft}-neoforge-api:${jei_version}"
|
|
|
|
localRuntime "mezz.jei:jei-${jei_minecraft}-neoforge:${jei_version}"
|
|
|
|
compileOnly "vazkii.patchouli:Patchouli:${patchouli_version}"
|
|
localRuntime "vazkii.patchouli:Patchouli:${patchouli_version}"
|
|
compileOnly "xyz.brassgoggledcoders:PatchouliProvider:${patchouli_provider_version}"
|
|
localRuntime "xyz.brassgoggledcoders:PatchouliProvider:${patchouli_provider_version}"
|
|
|
|
localRuntime "curse.maven:jade-324717:5803666"
|
|
localRuntime "curse.maven:mekanism-268560:5680395"
|
|
|
|
// Immersive Engineering, mainly for compat datagen
|
|
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"
|
|
|
|
implementation "top.theillusivec4.curios:curios-neoforge:${curios_version}"
|
|
}
|
|
|
|
jar {
|
|
group = 'artifact'
|
|
manifest {
|
|
attributes(["Specification-Title" : "Actually Additions",
|
|
"Specification-Version" : "1",
|
|
"Implementation-Title" : project.archivesBaseName,
|
|
"Implementation-Version" : project.version,
|
|
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
|
|
"Modloader": "Neoforge",
|
|
"Modloader-Version": project.neo_version,
|
|
])
|
|
}
|
|
|
|
from sourceSets.main.output
|
|
}
|
|
|
|
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) {
|
|
from sourceSets.main.output
|
|
from sourceSets.main.java
|
|
archiveClassifier.set('api')
|
|
include 'de/ellpeck/actuallyadditions/api/**'
|
|
}
|
|
|
|
javadoc {
|
|
include 'de/ellpeck/actuallyadditions/api/**'
|
|
}
|
|
|
|
tasks.register('javadocJar', Jar) {
|
|
dependsOn javadoc
|
|
from 'build/docs/javadoc'
|
|
archiveClassifier.set('javadoc')
|
|
}
|
|
|
|
tasks.register('sourcesJar', Jar) {
|
|
from sourceSets.main.java
|
|
archiveClassifier.set('sources')
|
|
}
|
|
|
|
artifacts {
|
|
archives sourcesJar, apiJar, javadocJar
|
|
}
|
|
|
|
|
|
publishing {
|
|
publications {
|
|
register('mavenJava', MavenPublication) {
|
|
from components.java
|
|
|
|
// Add sources and javadoc to the publication
|
|
artifact sourcesJar
|
|
artifact apiJar
|
|
artifact javadocJar
|
|
}
|
|
}
|
|
|
|
repositories {
|
|
def token = providers.environmentVariable("MAVEN_TOKEN")
|
|
if (token.isPresent()) {
|
|
maven {
|
|
url "https://maven.saps.dev/releases"
|
|
credentials {
|
|
username = "ell"
|
|
password = token.get()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
tasks.withType(JavaCompile).configureEach {
|
|
options.encoding = 'UTF-8'
|
|
}
|
|
|
|
idea {
|
|
module {
|
|
downloadSources = true
|
|
downloadJavadoc = true
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 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")
|
|
}
|
|
}
|