-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle.kts
98 lines (87 loc) · 3.18 KB
/
build.gradle.kts
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
import org.jetbrains.gradle.ext.settings
import org.gradle.plugins.ide.idea.model.IdeaLanguageLevel
import org.jetbrains.gradle.ext.Gradle
import org.jetbrains.gradle.ext.runConfigurations
plugins {
id("org.jetbrains.kotlin.jvm") version embeddedKotlinVersion
id("org.jetbrains.gradle.plugin.idea-ext") version "1.1.8"
id("io.freefair.lombok") version "8.10"
id("maven-publish")
id("java-library")
}
allprojects {
apply(plugin = "org.jetbrains.gradle.plugin.idea-ext")
apply(plugin = "io.freefair.lombok")
apply(plugin = "java-library")
apply(plugin = "maven-publish")
group = "dev.redstudio"
version = "0.6-Dev-7" // Versioning must follow Ragnarök versioning convention: https://github.com/Red-Studio-Ragnarok/Commons/blob/main/Ragnar%C3%B6k%20Versioning%20Convention.md
repositories {
gradlePluginPortal()
}
idea {
module {
excludeDirs = setOf(
file(".github"), file(".gradle"), file(".idea"), file("build"), file("gradle"), file("run")
)
}
}
// Set the toolchain version to decouple the Java we run Gradle with from the Java used to compile and run the mod
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(8))
vendor.set(JvmVendorSpec.ADOPTIUM)
}
// Generate sources jar when building
withSourcesJar()
}
tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8"
options.isFork = true
options.forkOptions.jvmArgs = listOf("-Xmx4G")
}
// Define embedded dependencies configuration
val embed = configurations.create("embed") {
description = "Embedded dependencies"
isTransitive = true
}
configurations.named("implementation").configure {
extendsFrom(embed)
}
// Include embedded dependencies into the jar
tasks.named<Jar>("jar").configure {
dependsOn(configurations.getByName("embed"))
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
from({
configurations.getByName("embed").map { if (it.isDirectory) it else zipTree(it) }
})
}
}
idea {
project {
settings {
jdkName = "1.8"
languageLevel = IdeaLanguageLevel("JDK_1_8")
runConfigurations {
create("MC 1.8-1.12 Client", Gradle::class.java) {
taskNames = setOf("runClient")
}
create("MC 1.8-1.12 Server", Gradle::class.java) {
taskNames = setOf("runServer")
}
create("MC 1.8-1.12 Obfuscated Client", Gradle::class.java) {
taskNames = setOf("runObfClient")
}
create("MC 1.8-1.12 Obfuscated Server", Gradle::class.java) {
taskNames = setOf("runObfServer")
}
create("MC 1.8-1.12 Vanilla Client", Gradle::class.java) {
taskNames = setOf("runVanillaClient")
}
create("MC 1.8-1.12 Vanilla Server", Gradle::class.java) {
taskNames = setOf("runVanillaServer")
}
}
}
}
}