Skip to content
Draft
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
2 changes: 2 additions & 0 deletions .env.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
MODRINTH_API_KEY=
CURSEFORGE_API_KEY=
64 changes: 44 additions & 20 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,26 +1,50 @@
# eclipse
bin
*.launch
.settings
.metadata
.classpath
.project
.env
.gradle
.kotlin
.cache/
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

# idea
out
*.ipr
run/

### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
.idea
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

# gradle
build
.gradle
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/

# other
eclipse
run
runs
run-data
### Mac OS ###
.DS_Store

repo
### Jetbrains ###
.idea/
143 changes: 143 additions & 0 deletions build.fabric.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
@file:Suppress("UnstableApiUsage")

plugins {
id("net.fabricmc.fabric-loom")
id("dev.kikugie.postprocess.jsonlang")
id("me.modmuss50.mod-publish-plugin")
}

tasks.named<ProcessResources>("processResources") {
fun prop(name: String) = project.property(name) as String

val props = HashMap<String, String>().apply {
this["mod_version"] = prop("mod.version")
this["minecraft"] = prop("deps.minecraft")
this["mod_id"] = prop("mod.id")
this["mod_name"] = prop("mod.name")
this["mod_description"] = prop("mod.description")
this["mod_authors"] = prop("mod.authors")
this["mod_license"] = prop("mod.license")
this["minecraft_version_range"] = prop("deps.minecraft_version_range")
}

filesMatching(listOf("fabric.mod.json", "META-INF/neoforge.mods.toml", "META-INF/mods.toml")) {
expand(props)
}
}

version = "${property("mod.version")}+${property("deps.minecraft")}-fabric"
base.archivesName = property("mod.id") as String

loom {
accessWidenerPath = rootProject.file("src/main/resources/${property("mod.id")}.accesswidener")
}

sourceSets {
main {
resources {
srcDir("src/generated/resources")
}
}
}

jsonlang {
languageDirectories = listOf("assets/${property("mod.id")}/lang")
prettyPrint = true
}

repositories {
mavenLocal()
exclusiveContent {
forRepository {
maven {
name = "Fuzs Mod Resources"
url = uri("https://raw.githubusercontent.com/Fuzss/modresources/main/maven/")
}
}
filter {
includeGroupAndSubgroups("fuzs")
}
}
maven {
// location of the maven that hosts JEI files since January 2023
name = "Jared's maven"
url = uri("https://maven.blamejared.com/")
content {
includeGroupAndSubgroups("mezz.jei")
}
}
maven {
name = "Terraformers (Mod Menu)"
url = uri("https://maven.terraformersmc.com/releases/")
content {
includeGroupAndSubgroups("com.terraformersmc")
}
}
}

dependencies {
minecraft("com.mojang:minecraft:${property("deps.minecraft")}")
implementation("net.fabricmc:fabric-loader:${property("deps.fabric-loader")}")
implementation("net.fabricmc.fabric-api:fabric-api:${property("deps.fabric-api")}")
implementation("fuzs.forgeconfigapiport:forgeconfigapiport-fabric:${property("deps.forge_config_api_port")}")
compileOnly("mezz.jei:jei-${property("deps.minecraft")}-common-api:${property("deps.jei")}")
compileOnly("mezz.jei:jei-${property("deps.minecraft")}-fabric-api:${property("deps.jei")}")
// We add the full version to localRuntime, not runtimeOnly, so that we do not publish a dependency on it
localRuntime("mezz.jei:jei-${property("deps.minecraft")}-fabric:${property("deps.jei")}")
compileOnly("com.terraformersmc:modmenu:${property("deps.modmenu")}")
runtimeOnly("com.terraformersmc:modmenu:${property("deps.modmenu")}")
}

tasks {
processResources {
exclude("**/neoforge.mods.toml", "**/mods.toml")
}

register<Copy>("buildAndCollect") {
group = "build"
from(jar.map { it.archiveFile })
into(rootProject.layout.buildDirectory.file("libs/${project.property("mod.version")}"))
dependsOn("build")
}
}

java {
withSourcesJar()
val javaCompat = JavaVersion.VERSION_25
sourceCompatibility = javaCompat
targetCompatibility = javaCompat
}

val additionalVersionsStr = findProperty("publish.additionalVersions") as String?
val additionalVersions: List<String> = additionalVersionsStr
?.split(",")
?.map { it.trim() }
?.filter { it.isNotEmpty() }
?: emptyList()

publishMods {
file = tasks.jar.map { it.archiveFile.get() }
additionalFiles.from(tasks.named<org.gradle.jvm.tasks.Jar>("sourcesJar").map { it.archiveFile.get() })

type = BETA
displayName = "${property("mod.name")} ${property("mod.version")} for ${stonecutter.current.version} Fabric"
version = "${property("mod.version")}+${property("deps.minecraft")}-fabric"
changelog = provider { rootProject.file("changelog.md").readText() }
modLoaders.add("fabric")

modrinth {
projectId = property("publish.modrinth") as String
accessToken = env.MODRINTH_API_KEY.orNull()
minecraftVersions.add(stonecutter.current.version)
minecraftVersions.addAll(additionalVersions)
requires("fabric-api")
}

curseforge {
projectId = property("publish.curseforge") as String
accessToken = env.CURSEFORGE_API_KEY.orNull()
minecraftVersions.add(stonecutter.current.version)
minecraftVersions.addAll(additionalVersions)
requires("fabric-api")
}
}
Loading