aboutsummaryrefslogtreecommitdiff
path: root/build.gradle.kts
blob: 45bdb499e29110cb6490bf1c23e56b1f667c76d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    kotlin("jvm") version "1.9.22"
    `maven-publish`
    id("xyz.wagyourtail.unimined") version "1.2.0-SNAPSHOT"
}

group = "moe.nea"
version = "1.0-SNAPSHOT"

repositories {
    maven("https://jitpack.io")
    maven("https://repo.polyfrost.cc/releases")
    mavenCentral()
}

unimined.minecraft {
    version("1.8.9")
    mappings {
        searge()
        mcp("stable", "22-1.8.9")
    }
    minecraftForge {
        loader("11.15.1.2318-1.8.9")
        mixinConfig("veloxcaelo.mixins.json")
    }
    runs {
        this.config("client") {
            this.args.addAll(listOf("--tweakClass", "org.spongepowered.asm.launch.MixinTweaker"))
            this.env.put(
                "LD_LIBRARY_PATH",
                ":/nix/store/agp6lqznayysqvqkx4k1ggr8n1rsyi8c-gcc-13.2.0-lib/lib:/nix/store/ldi0rb00gmbdg6915lhch3k3b3ib460z-libXcursor-1.2.2/lib:/nix/store/8xbbv82pabjcbj30vrna4gcz4g9q97z4-libXrandr-1.5.4/lib:/nix/store/smrb2g0addhgahkfjjl3k8rfd30gdc29-libXxf86vm-1.1.5/lib:/nix/store/lpqy1z1h8li6h3cp9ax6vifl71dks1ff-libglvnd-1.7.0/lib"
            )
        }
    }
}


val downloadOptifine by tasks.creating {
    val outputFile = layout.buildDirectory.file("download/optifine.jar")
    outputs.file(outputFile)
    doLast {
        outputFile.get().asFile.parentFile.mkdirs()
        uri("https://optifine.net/download?f=preview_OptiFine_1.8.9_HD_U_M6_pre2.jar")
            .toURL()
            .openStream().use { input ->
                outputFile.get().asFile.outputStream().use { output ->
                    input.copyTo(output)
                }
            }
    }
}

dependencies {
    testImplementation("org.jetbrains.kotlin:kotlin-test")
    implementation("org.spongepowered:mixin:0.7.11-SNAPSHOT")
    compileOnly(project.files(downloadOptifine))
    compileOnly("org.jetbrains:annotations:24.1.0")
}

tasks.test {
    useJUnitPlatform()
}

sourceSets.main {
    output.setResourcesDir(sourceSets.main.flatMap { it.java.classesDirectory })
    kotlin.destinationDirectory.set(java.destinationDirectory)
}
tasks.processResources {
    filesMatching("*.mixins.json") {
        this.filter(
            mapOf("sourceRoots" to sourceSets.main.get().allSource.srcDirs
                .filter { it.exists() }.joinToString(":") { it.absolutePath }),
            MixinFilterReader::class.java
        )//TODO: keep old existing class names in mixins array
    }
}

tasks.compileJava {
    dependsOn(tasks.processResources)
}
java {
    targetCompatibility = JavaVersion.VERSION_1_8
    sourceCompatibility = JavaVersion.VERSION_1_8
}
tasks.withType(JavaCompile::class) {
    this.options.encoding = "UTF-8"
}
tasks.withType(KotlinCompile::class) {
    this.compilerOptions {
        this.jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8)
    }
}

tasks.withType(Jar::class) {
    destinationDirectory.set(project.layout.buildDirectory.dir("badjars"))
    archiveBaseName.set("VeloxCaelo")
    manifest.attributes.run {
        this["FMLCorePluginContainsFMLMod"] = "true"
        this["ForceLoadAsMod"] = "true"

        // If you don't want mixins, remove these lines
        this["TweakClass"] = "org.spongepowered.asm.launch.MixinTweaker"
        this["MixinConfigs"] = "veloxcaelo.mixins.json"
    }
}