Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
*.bat text eol=crlf
*.patch text eol=lf
*.java text eol=lf
*.gradle text eol=crlf
*.png binary
*.gif binary
*.exe binary
Expand Down
File renamed without changes.
211 changes: 211 additions & 0 deletions build-logic/src/main/groovy/multiloader-common.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
plugins {
id "idea"
id "java-library"
id "maven-publish"
id "net.neoforged.licenser"
}

boolean noTag = !providers.environmentVariable("TAG").getOrNull()
boolean isPreviewBuild = providers.environmentVariable("TAG").getOrNull().with { !it || it.matches(".+-.+") }
def buildTime = providers.environmentVariable("BUILD_TIME").orElse(project.provider { new Date().format('yyyyMMddHHmmss') })
version = providers.environmentVariable("TAG").getOrElse("${minecraft_version}-deveopment") + (
(isPreviewBuild && noTag) ? "+${providers.environmentVariable("BUILD_NUMBER").map { "build.$it" as String }.orElse(buildTime).get()}" : ""
)

java {
toolchain.languageVersion = JavaLanguageVersion.of(java_version)
withSourcesJar()
withJavadocJar()
}

repositories {
mavenCentral()
maven {
name = "Sponge"
url = "https://repo.spongepowered.org/repository/maven-public/"
}

maven {
name = "NeoForge"
url = "https://maven.neoforged.net/releases/"
}

maven {
name = "Team Resourceful Maven"
url = "https://maven.teamresourceful.com/repository/maven-public/"
}

maven {
name = "TerraformersMC"
url = "https://maven.terraformersmc.com/releases/"
}

maven {
name = "uuid.gg Maven Repository"
url = "https://maven.uuid.gg/releases/"
}

maven {
name = "Minecraft Forge (Used for Terrablender)"
url = "https://maven.minecraftforge.net/"
}

maven {
name = "SmartBrainLib (SBL) Maven Repo"
url = "https://dl.cloudsmith.io/public/tslat/sbl/maven/"
}

maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven/"
content {
includeGroup "maven.modrinth"
}
}
}

// Declare capabilities on the outgoing configurations.
// Read more about capabilities here: https://docs.gradle.org/current/userguide/component_capabilities.html#sec:declaring-additional-capabilities-for-a-local-component
["apiElements", "runtimeElements", "sourcesElements", "javadocElements"].each { variant ->
configurations."$variant".outgoing {
capability("$group:${project.name}:$version")
capability("$group:${project.name}-${minecraft_version}:$version")
capability("$group:${rootProject.name}:$version")
}
publishing.publications.configureEach {
suppressPomMetadataWarningsFor(variant)
}
}

sourcesJar {
def mod_id = project.mod_id
from(rootProject.file("LICENSE.md")) {
rename { "LICENSE_${mod_id}.md" }
}
}

jar {
def mod_id = project.mod_id
from(rootProject.file("LICENSE.md")) {
rename { "LICENSE_${mod_id}.md" }
}

manifest {
attributes([
"Specification-Title" : project.mod_name,
"Specification-Vendor" : project.author,
"Specification-Version" : project.provider { project.version },
"Implementation-Title" : project.name,
"Implementation-Version" : project.provider { project.version },
"Implementation-Vendor" : project.author,
"Built-On-Java" : "${System.getProperty("java.vm.version")} (${System.getProperty("java.vm.vendor")})",
"Built-On-Minecraft" : project.minecraft_version
])
}
}

processResources {
var expandProperties = [
"version" : version,
"group" : project.group,
"mod_name" : project.mod_name,
"mod_id" : project.mod_id,
"author" : project.author,
"credits" : project.credits,
"license" : project.license,
"description" : project.description,

"display_url" : project.display_url,
"discord" : project.discord,
"mod_source" : project.mod_source,
"license_url" : project.license_url,
"modrinth_url" : project.modrinth_url,
"curseforge_url" : project.curseforge_url,

"java_version" : project.java_version,
"minecraft_version" : project.minecraft_version,
"curseforge_id" : project.curseforge_id,
"modrinth_id" : project.modrinth_id,

"neoforge_version" : project.neoforge_version,

"fabric_version" : project.fabric_version,
"fabric_loader_version" : project.fabric_loader_version,

"smart_brain_lib_neoforge_version" : project.smart_brain_lib_neoforge_version,
"smart_brain_lib_fabric_version" : project.smart_brain_lib_fabric_version,

"geckolib_neoforge_version" : project.geckolib_neoforge_version,
"geckolib_fabric_version" : project.geckolib_fabric_version,

"resourceful_config_neoforge_version" : project.resourceful_config_neoforge_version,
"resourceful_config_fabric_version" : project.resourceful_config_fabric_version,

"terrablender_neoforge_version" : project.terrablender_neoforge_version,
"terrablender_fabric_version" : project.terrablender_fabric_version
]

var jsonExpandProperties = expandProperties.collectEntries {
key, value -> [(key): value instanceof String ? value.replace("\n", "\\\\n") : value]
}

filesMatching(['META-INF/neoforge.mods.toml']) {
expand expandProperties
}

filesMatching(['pack.mcmeta', 'fabric.mod.json', '*.mixins.json']) {
expand jsonExpandProperties
}

inputs.properties(expandProperties)
}

license {
ignoreFailures = true
header = rootProject.file("LICENSE_HEADER.txt")
newLine = false
include "**/*.java"
include "**/*.kt"
exclude "**/package-info.java"
exclude "**/module-info.java"
properties {
name = "KiriCattus"
year = "2013 - " + Calendar.getInstance().get(Calendar.YEAR)
license_link = project.license_url
project_information = license_description
}
}

tasks.named("assemble").configure{dependsOn "licenseFormat"}

publishing {
publications {
"mavenJava${project.name}"(MavenPublication) {
from components.java
}
}
repositories {
if (providers.environmentVariable("MAVEN_UPLOAD_URL").isPresent()) {
maven {
url = providers.environmentVariable("MAVEN_UPLOAD_URL").get()
credentials {
username = providers.environmentVariable("MAVEN_UPLOAD_USERNAME").get()
password = providers.environmentVariable("MAVEN_UPLOAD_PASSWORD").get()
}
}
}
}
}

tasks.withType(JavaCompile).configureEach {
it.options.encoding = "UTF-8"
it.options.release.set(java_version.toInteger())
}

// IDEA no longer automatically downloads sources/javadoc jars for dependencies, so we need to explicitly enable the behavior.
idea {
module {
downloadSources = true
downloadJavadoc = true
}
}
41 changes: 41 additions & 0 deletions build-logic/src/main/groovy/multiloader-loader.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
plugins {
id "multiloader-common"
}

configurations {
commonJava {
canBeResolved = true
}

commonResources {
canBeResolved = true
}
}

dependencies {
compileOnly(project(":${rootProject.name}-common"))
commonJava project(path: ":${rootProject.name}-common", configuration: "commonJava")
commonResources project(path: ":${rootProject.name}-common", configuration: "commonResources")
}

tasks.named("compileJava", JavaCompile) {
dependsOn(configurations.commonJava)
source(configurations.commonJava)
}

processResources {
dependsOn(configurations.commonResources)
from(configurations.commonResources)
}

tasks.named("javadoc", Javadoc).configure {
dependsOn(configurations.commonJava)
source(configurations.commonJava)
}

tasks.named("sourcesJar", Jar) {
dependsOn(configurations.commonJava)
from(configurations.commonJava)
dependsOn(configurations.commonResources)
from(configurations.commonResources)
}
6 changes: 3 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id "net.neoforged.licenser" version "0.7.5" apply false
id "fabric-loom" version "1.9+" apply false
id "net.neoforged.moddev" version "2.0.66-beta" apply false
id "net.neoforged.licenser" version "${licenser_version}" apply false
id "fabric-loom" version "${fabric_loom}" apply false
id "net.neoforged.moddev" version "${moddev_version}" apply false
}
Loading