-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle.kts
99 lines (80 loc) · 3.05 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
99
import com.google.gson.GsonBuilder
import com.google.gson.annotations.SerializedName
import net.labymod.labygradle.common.extension.model.GameVersion
import net.labymod.labygradle.common.extension.model.labymod.ReleaseChannels
import java.nio.file.Files
plugins {
id("net.labymod.labygradle")
id("net.labymod.labygradle.addon")
id("org.cadixdev.licenser") version ("0.6.1")
}
val versions = providers.gradleProperty("net.labymod.minecraft-versions").get().split(";")
group = "org.example"
version = providers.environmentVariable("VERSION").getOrElse("1.0.0")
labyMod {
defaultPackageName = "net.labymod.addons.optifine" //change this to your main package name (used by all modules)
minecraft {
registerVersion(versions.toTypedArray()) {
useOptiFine(true)
mixin {
val versionMappings = file("./game-runner/mappings/").resolve("$versionId.tsrg")
if (versionMappings.exists()) {
extraMappings.add(versionMappings)
}
extraMappings.add(file("./game-runner/mappings/shared.tsrg"))
}
val file = file("./game-runner/src/${this.sourceSetName}/resources/optifine-${versionId}.accesswidener");
accessWidener.set(file)
}
}
addonInfo {
namespace = "optifine"
displayName = "OptiFine"
author = "sp614x"
version = rootProject.version.toString()
releaseChannel = ReleaseChannels.PRODUCTION
}
}
fun GameVersion.useOptiFine(enabled: Boolean) {
if (!enabled) {
return
}
val extra = project.extra
val versionManifest: OptiVersionManifest
val gson = GsonBuilder().create()
if (!extra.has("of-cache")) {
val file = rootProject.file("./core/src/main/resources/assets/optifine/versions.json")
if (!file.exists()) {
println("Failed to find versions.json")
return
}
versionManifest = Files.newBufferedReader(file.toPath()).use { gson.fromJson(it, OptiVersionManifest::class.java) }
extra["of-cache"] = gson.toJson(versionManifest)
} else {
versionManifest = gson.fromJson(extra.get("of-cache") as String, OptiVersionManifest::class.java)
}
versionManifest.findVersion(versionId)?.apply {
optiFineVersion.set(this.ofVersion.trim())
}
}
subprojects {
plugins.apply("net.labymod.labygradle")
plugins.apply("net.labymod.labygradle.addon")
plugins.apply("org.cadixdev.licenser")
group = rootProject.group
version = rootProject.version
license {
header(rootProject.file("gradle/LICENSE-HEADER.txt"))
newLine.set(true)
}
}
data class OptiVersionManifest(val versions: List<OptiFineVersion>) {
fun findVersion(gameVersion: String): OptiFineVersion? {
return versions.find { it.gameVersion == gameVersion }
}
}
data class OptiFineVersion(
@SerializedName("game_version") val gameVersion: String,
@SerializedName("of_version") val ofVersion: String,
@SerializedName("preview") val preview: Boolean
)