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
58 changes: 58 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Build

on:
push:
branches: [master]
pull_request:
branches: [master]
workflow_dispatch:

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up JDK 25
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "25"

- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4

- name: Cache Fabric Loom project cache
uses: actions/cache@v4
with:
path: .gradle/loom-cache
key: loom-cache-${{ runner.os }}-${{ hashFiles('gradle.properties') }}
restore-keys: |
loom-cache-${{ runner.os }}-

- name: Make ./gradlew executable
run: chmod +x ./gradlew

- name: Check license headers
run: ./gradlew :common:checkLicenses :backend:checkLicenses :26.2-fabric:checkLicenses :26.2-neoforge:checkLicenses

- name: Build
run: ./gradlew :common:build :backend:build :26.2-fabric:build :26.2-neoforge:build

- name: Upload Fabric jar
uses: actions/upload-artifact@v4
with:
name: strand-fabric-26.2
path: versions/26.2-fabric/build/libs/*.jar
if-no-files-found: error

- name: Upload NeoForge jar
uses: actions/upload-artifact@v4
with:
name: strand-neoforge-26.2
path: versions/26.2-neoforge/build/libs/*.jar
if-no-files-found: error
53 changes: 34 additions & 19 deletions build.gradle.kts → build.fabric.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,54 +2,60 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
kotlin("jvm") version "2.4.10"
kotlin("plugin.serialization") version "2.4.10"
id("net.fabricmc.fabric-loom") version "1.17.16"
id("maven-publish")
id("dev.yumi.gradle.licenser") version "4.0.+"
kotlin("jvm")
kotlin("plugin.serialization")
id("net.fabricmc.fabric-loom")
id("dev.yumi.gradle.licenser")
`maven-publish`
}

version = project.property("mod_version") as String
group = project.property("maven_group") as String

repositories {
mavenLocal()
maven("https://maven.cloverclient.com/releases")
maven("https://pkgs.dev.azure.com/djtheredstoner/DevAuth/_packaging/public/maven/v1")
mavenCentral()
}

base {
archivesName.set(project.property("archives_base_name") as String)
}

sourceSets.main {
kotlin.srcDir(rootProject.file("src/fabric/kotlin"))
}

val targetJavaVersion = 25
java {
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
withSourcesJar()
}

repositories {
mavenLocal()
maven("https://maven.cloverclient.com/releases")
maven("https://pkgs.dev.azure.com/djtheredstoner/DevAuth/_packaging/public/maven/v1")
mavenCentral()
}

dependencies {
minecraft("com.mojang:minecraft:${project.property("minecraft_version")}")
minecraft("com.mojang:minecraft:${sc.current.version}")
implementation("net.fabricmc:fabric-loader:${project.property("loader_version")}")
implementation("net.fabricmc:fabric-language-kotlin:${project.property("kotlin_loader_version")}")
implementation("net.fabricmc.fabric-api:fabric-api:${project.property("fabric_version")}")

runtimeOnly("me.djtheredstoner:DevAuth-fabric:1.2.2")

implementation(include("gg.sona:eos:1.1.0")!!)

implementation(project(":common"))
}

tasks.processResources {
inputs.property("version", project.version)
inputs.property("minecraft_version", project.property("minecraft_version"))
inputs.property("minecraft_version", sc.current.version)
inputs.property("loader_version", project.property("loader_version"))
filteringCharset = "UTF-8"

filesMatching("fabric.mod.json") {
expand(
"version" to project.version,
"minecraft_version" to project.property("minecraft_version") as String,
"minecraft_version" to sc.current.version,
"loader_version" to project.property("loader_version") as String,
"kotlin_loader_version" to project.property("kotlin_loader_version") as String
)
Expand All @@ -66,25 +72,34 @@ tasks.withType<KotlinCompile>().configureEach {
}

tasks.jar {
from("LICENSE.md") {
from(rootProject.file("LICENSE.md")) {
rename { "${it}_${project.base.archivesName.get()}" }
}
from("NOTICE.md") {
from(rootProject.file("NOTICE.md")) {
rename { "${it}_${project.base.archivesName.get()}" }
}
from("PRIVACY_POLICY.md") {
from(rootProject.file("PRIVACY_POLICY.md")) {
rename { "${it}_${project.base.archivesName.get()}" }
}
}

license {
rule(file("codeformat/HEADER"))
rule(rootProject.file("codeformat/HEADER"))

include("**/*.java")
include("**/*.kt")
exclude("**/*.properties")
}

loom {
runConfigs.all {
preferGradleTask = true
generateRunConfig = true
runDirectory = rootProject.file("run")
jvmArguments.add("-Ddevauth.enabled=true")
}
}

publishing {
publications {
create<MavenPublication>("mavenJava") {
Expand Down
117 changes: 117 additions & 0 deletions build.neoforge.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
kotlin("jvm")
kotlin("plugin.serialization")
id("net.neoforged.moddev")
id("dev.yumi.gradle.licenser")
`maven-publish`
}

version = project.property("mod_version") as String
group = project.property("maven_group") as String

repositories {
mavenLocal()
maven("https://maven.cloverclient.com/releases")
maven("https://pkgs.dev.azure.com/djtheredstoner/DevAuth/_packaging/public/maven/v1")
mavenCentral()
}

base {
archivesName.set(project.property("archives_base_name") as String)
}

sourceSets.main {
kotlin.srcDir(rootProject.file("src/neoforge/kotlin"))
resources {
srcDir("src/main/resources-neoforge")
}
}

val targetJavaVersion = 25
java {
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
withSourcesJar()
}

neoForge {
version = project.property("neo_version") as String

runs {
create("client") {
gameDirectory = file("../../run/")
client()
jvmArgument("-Ddevauth.enabled=true")
}
}

mods {
create("strand") {
sourceSet(sourceSets.main.get())
}
}
}

dependencies {
implementation("gg.sona:eos:1.1.0")
jarJar("gg.sona:eos:1.1.0")

runtimeOnly("me.djtheredstoner:DevAuth-neoforge:1.2.2")

implementation(project(":common"))
}

tasks.processResources {
inputs.property("version", project.version)
inputs.property("minecraft_version", sc.current.version)
inputs.property("neo_version", project.property("neo_version"))
filteringCharset = "UTF-8"

filesMatching("**/neoforge.mods.toml") {
expand(
"version" to project.version,
"minecraft_version" to sc.current.version,
"neo_version" to project.property("neo_version") as String
)
}
}

tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8"
options.release.set(targetJavaVersion)
}

tasks.withType<KotlinCompile>().configureEach {
compilerOptions.jvmTarget.set(JvmTarget.fromTarget(targetJavaVersion.toString()))
}

tasks.jar {
from(rootProject.file("LICENSE.md")) {
rename { "${it}_${project.base.archivesName.get()}" }
}
from(rootProject.file("NOTICE.md")) {
rename { "${it}_${project.base.archivesName.get()}" }
}
from(rootProject.file("PRIVACY_POLICY.md")) {
rename { "${it}_${project.base.archivesName.get()}" }
}
}

license {
rule(rootProject.file("codeformat/HEADER"))

include("**/*.java")
include("**/*.kt")
exclude("**/*.properties")
}

publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = project.property("archives_base_name") as String
from(components["java"])
}
}
}
39 changes: 39 additions & 0 deletions common/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
kotlin("jvm")
kotlin("plugin.serialization")
id("dev.yumi.gradle.licenser")
}

version = project.property("mod_version") as String
group = project.property("maven_group") as String

val targetJavaVersion = 25
java {
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
withSourcesJar()
}

dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.11.0")
implementation("gg.sona:eos:1.1.0")

compileOnly("org.slf4j:slf4j-api:2.0.18")
}

tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8"
options.release.set(targetJavaVersion)
}

tasks.withType<KotlinCompile>().configureEach {
compilerOptions.jvmTarget.set(JvmTarget.fromTarget(targetJavaVersion.toString()))
}

license {
rule(file("../codeformat/HEADER"))

include("**/*.kt")
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ package re.lilith.strand

import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import net.fabricmc.loader.api.FabricLoader
import java.nio.file.Files
import java.nio.file.Path
import kotlin.io.path.exists

@Serializable
Expand All @@ -34,8 +34,8 @@ data class StrandConfig(
companion object {
private val json = Json { prettyPrint = true; ignoreUnknownKeys = true; encodeDefaults = true }

fun load(): StrandConfig {
val path = FabricLoader.getInstance().configDir.resolve("strand.json")
fun load(configDir: Path): StrandConfig {
val path = configDir.resolve("strand.json")
if (!path.exists()) {
val default = StrandConfig()
runCatching { Files.writeString(path, json.encodeToString(default)) }
Expand Down
4 changes: 3 additions & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ org.gradle.jvmargs=-Xmx2G
org.gradle.parallel=true
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=26.2
yarn_mappings=1.21.11+build.6
loader_version=0.19.3
kotlin_loader_version=1.13.13+kotlin.2.4.10
Expand All @@ -14,3 +13,6 @@ archives_base_name=strand
# Dependencies
# check this on https://modmuss50.me/fabric.html
fabric_version=0.155.2+26.2
# check latest at https://maven.neoforged.net/releases/net/neoforged/neoforge/ -- this is a beta,
# bump it when a stable 26.2 NeoForge build lands
neo_version=26.2.0.8-beta
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
8 changes: 8 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip
networkTimeout=10000
retries=0
retryBackOffMs=500
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading
Loading