Skip to content

Commit 099e801

Browse files
committed
More loader-specific stuff
1 parent 8f5e2a8 commit 099e801

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+691
-583
lines changed

build.gradle.kts

Lines changed: 5 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -6,143 +6,18 @@ plugins {
66
}
77

88
val minecraftVersion = stonecutter.current.version
9-
val loader = try { project.property("loom.platform") as? String? } catch (_: Throwable) { null } ?: "unknown"
10-
11-
version = "${mod.version}+$minecraftVersion-$loader"
12-
group = mod.group
13-
14-
base {
15-
archivesName.set(mod.name)
16-
}
179

1810
dependencies {
19-
minecraft("com.mojang:minecraft:$minecraftVersion")
20-
mappings(loom.officialMojangMappings())
21-
}
22-
23-
stonecutter {
24-
constants.match(
25-
loader,
26-
"fabric", "forge", "neoforge", "unknown"
27-
)
11+
modCompileOnly("net.fabricmc:fabric-loader:${mod.dep("fabric_loader")}")
12+
modCompileOnly("net.fabricmc:fabric-language-kotlin:${mod.dep("fabric_kotlin")}")
2813

29-
constants["forge_like"] = loader == "forge" || loader == "neoforge"
14+
implementation("de.maxhenkel.voicechat:voicechat-api:${mod.dep("voicechat_api")}")
15+
compileOnly("su.plo.voice.api:server:${mod.dep("plasmo_api")}")
16+
compileOnly("su.plo.voice.api:client:${mod.dep("plasmo_api")}")
3017
}
3118

3219
/*
33-
version = "${project.property("mod.version")}+mc${mcData.version}-${mcData.loader.friendlyString}"
34-
35-
val architecturyVersion = when (mcData.version) {
36-
MinecraftVersions.VERSION_1_20_1 -> "9.2.14"
37-
MinecraftVersions.VERSION_1_20_4 -> "11.1.17"
38-
MinecraftVersions.VERSION_1_20_6 -> "12.1.4"
39-
MinecraftVersions.VERSION_1_21_1 -> "13.0.6"
40-
MinecraftVersions.VERSION_1_21_4 -> "15.0.3"
41-
MinecraftVersions.VERSION_1_21_5 -> "16.1.4"
42-
MinecraftVersions.VERSION_1_21_8 -> "17.0.8"
43-
MinecraftVersions.VERSION_1_21_10 -> "18.0.6"
44-
45-
else -> throw IllegalStateException()
46-
}
47-
48-
val klfVersion = when (mcData.version) {
49-
MinecraftVersions.VERSION_1_20_1, MinecraftVersions.VERSION_1_20_4 -> "2.0"
50-
MinecraftVersions.VERSION_1_21_1, MinecraftVersions.VERSION_1_21_4, MinecraftVersions.VERSION_1_21_5, MinecraftVersions.VERSION_1_21_8 -> "3.0"
51-
MinecraftVersions.VERSION_1_21_10 -> "3.1"
52-
53-
else -> throw IllegalStateException()
54-
}
55-
56-
val fabricPermissionsApiVersion = when (mcData.version) {
57-
MinecraftVersions.VERSION_1_20_1 -> "0.3.1"
58-
MinecraftVersions.VERSION_1_21_1, MinecraftVersions.VERSION_1_21_4, MinecraftVersions.VERSION_1_21_5 -> "0.3.3"
59-
MinecraftVersions.VERSION_1_21_8 -> "0.4.1"
60-
MinecraftVersions.VERSION_1_21_10 -> "0.5.0"
61-
62-
else -> throw IllegalStateException()
63-
}
64-
6520
dependencies {
66-
implementation("de.maxhenkel.voicechat:voicechat-api:${project.property("voicechat_api_version")}")
67-
compileOnly("su.plo.voice.api:server:${project.property("plasmo_api_version")}")
68-
compileOnly("su.plo.voice.api:client:${project.property("plasmo_api_version")}")
69-
70-
modApi("dev.architectury:architectury-${mcData.loader.friendlyString}:$architecturyVersion")
71-
72-
if (mcData.isFabric) {
73-
val modMenuVersion = when (mcData.version) {
74-
MinecraftVersions.VERSION_1_20_1 -> "7.2.2"
75-
MinecraftVersions.VERSION_1_21_1 -> "11.0.2"
76-
MinecraftVersions.VERSION_1_21_4 -> "13.0.3"
77-
MinecraftVersions.VERSION_1_21_5 -> "14.0.0"
78-
MinecraftVersions.VERSION_1_21_8 -> "15.0.0"
79-
MinecraftVersions.VERSION_1_21_10 -> "16.0.0-rc.1"
80-
81-
else -> throw IllegalStateException()
82-
}
83-
84-
modImplementation("com.terraformersmc:modmenu:$modMenuVersion")
85-
}
86-
87-
if (mcData.isFabric) {
88-
includeOrShade(modImplementation("me.lucko:fabric-permissions-api:$fabricPermissionsApiVersion")!!)
89-
}
90-
91-
val useSVC = true
92-
93-
if (useSVC)
94-
modRuntimeOnly("maven.modrinth:simple-voice-chat:${mcData.loader.friendlyString}-${mcData.version}-${project.property("voicechat_version")}")
95-
else if (!mcData.isNeoForge) {
96-
modRuntimeOnly("maven.modrinth:plasmo-voice:${mcData.loader.friendlyString}-${leastCommonMcVersion}-${project.property("plasmo_version")}")
97-
runtimeOnly("su.plo.voice.api:server:${project.property("plasmo_api_version")}")
98-
runtimeOnly("su.plo.voice.api:client:${project.property("plasmo_api_version")}")
99-
}
100-
101-
val clothConfigVersion = when(mcData.version) {
102-
MinecraftVersions.VERSION_1_20_1 -> "11.1.118"
103-
MinecraftVersions.VERSION_1_21_1 -> "15.0.128"
104-
MinecraftVersions.VERSION_1_21_4 -> "17.0.144"
105-
MinecraftVersions.VERSION_1_21_5 -> "18.0.145"
106-
MinecraftVersions.VERSION_1_21_8 -> "19.0.147"
107-
MinecraftVersions.VERSION_1_21_10 -> "20.0.149"
108-
109-
else -> throw IllegalStateException()
110-
}
111-
112-
modImplementation("maven.modrinth:cloth-config:${clothConfigVersion}+${mcData.loader.friendlyString}")
113-
modImplementation("maven.modrinth:talk-balloons:${project.property("talk_balloons_version")}+${if (mcData.version == MinecraftVersions.VERSION_1_21_1) "1.21.1" else leastCommonMcVersion}-${mcData.loader.friendlyString}")
114-
115-
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:${project.property("kotlin_serialization_version")}")
116-
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:${project.property("kotlin_serialization_version")}")
117-
118-
if (mcData.isFabric) {
119-
modImplementation("net.fabricmc.fabric-api:fabric-api:${mcData.dependencies.fabric.fabricApiVersion}")
120-
modImplementation("net.fabricmc:fabric-language-kotlin:${mcData.dependencies.fabric.fabricLanguageKotlinVersion}")
121-
} else {
122-
modImplementation("dev.nyon:KotlinLangForge:${property("kotlinlangforge_version")}-k${property("kotlin_version")}-${klfVersion}+${mcData.loader.friendlyString}")
123-
}
124-
125-
val jws = includeOrShade("org.java-websocket:Java-WebSocket:1.5.7")!!
126-
127-
implementation(jws)
128-
if (mcData.isForgeLike) {
129-
minecraftRuntimeLibraries(jws)
130-
}
131-
132-
val okhttp = shade(implementation("com.squareup.okhttp3:okhttp:${project.property("okhttp_version")}") {
133-
exclude("kotlin")
134-
exclude("org.jetbrains")
135-
})
136-
if (mcData.isForgeLike) {
137-
minecraftRuntimeLibraries(okhttp!!)
138-
}
139-
140-
// UnityTranslateLib
141-
shade(implementation("xyz.bluspring.unitytranslate:UnityTranslateLib:${rootProject.property("unitytranslatelib_version")}")!!)
142-
shade(implementation("xyz.bluspring.unitytranslate:UnityTranslateLib-natives-windows-amd64:${rootProject.property("unitytranslatelib_version")}")!!)
143-
shade(implementation("xyz.bluspring.unitytranslate:UnityTranslateLib-natives-linux-amd64:${rootProject.property("unitytranslatelib_version")}")!!)
144-
145-
includeOrShade(api("com.github.jnr:jnr-ffi:${rootProject.property("jnr_version")}")!!)
14621
}
14722
14823
toolkitReleases {

buildSrc/src/main/kotlin/build-extensions.kt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import org.gradle.api.Project
2+
import org.gradle.api.artifacts.dsl.DependencyHandler
23
import org.gradle.api.artifacts.dsl.RepositoryHandler
34
import org.gradle.kotlin.dsl.maven
45
import org.gradle.language.jvm.tasks.ProcessResources
@@ -12,6 +13,16 @@ fun RepositoryHandler.strictMaven(url: String, alias: String, vararg groups: Str
1213
filter { groups.forEach(::includeGroup) }
1314
}
1415

16+
fun DependencyHandler.modOptional(notation: String, version: String, enabled: Boolean = true) {
17+
if (version != "[UNSUPPORTED]") {
18+
if (enabled) {
19+
add("modImplementation", "$notation:$version")
20+
} else {
21+
add("modCompileOnly", "$notation:$version")
22+
}
23+
}
24+
}
25+
1526
fun ProcessResources.properties(files: Iterable<String>, vararg properties: Pair<String, Any>) {
1627
for ((name, value) in properties) inputs.property(name, value)
1728
filesMatching(files) {
@@ -29,4 +40,20 @@ value class ModData(private val project: Project) {
2940
fun prop(key: String) = requireNotNull(project.prop("mod.$key")) { "Missing 'mod.$key'" }
3041
fun prop(key: String, orElse: Any) = project.prop("mod.$key") ?: orElse
3142
fun dep(key: String) = requireNotNull(project.prop("deps.$key")) { "Missing 'deps.$key'" }
43+
fun dep(key: String, orElse: Any) = project.prop("deps.$key") ?: orElse
44+
45+
fun commonDep(key: String, common: ModData? = null, default: String = "[UNSUPPORTED]"): Any {
46+
val commonDep = common?.dep(key, default) ?: "[UNSUPPORTED]"
47+
val loaderDep = this.dep(key, commonDep)
48+
49+
if (loaderDep == "[VERSIONED]" || loaderDep == "[DEFAULT]") {
50+
if (commonDep == "[DEFAULT]") {
51+
return default
52+
}
53+
54+
return commonDep
55+
}
56+
57+
return loaderDep
58+
}
3259
}

fabric/build.gradle.kts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ dependencies {
4646

4747
modImplementation("com.terraformersmc:modmenu:${common.mod.dep("modmenu")}")
4848

49+
include(modImplementation("me.lucko:fabric-permissions-api:${common.mod.dep("fabric_permissions")}")!!)
50+
4951
modImplementation("maven.modrinth:talk-balloons:${common.mod.dep("talk_balloons")}+${common.mod.dep("talk_balloons_mc")}-fabric")
5052
modImplementation("me.shedaniel.cloth:cloth-config-fabric:${common.mod.dep("cloth_config")}")
5153

@@ -54,6 +56,17 @@ dependencies {
5456

5557
modImplementation("xyz.bluspring.modernnetworking:modernnetworking-fabric:${common.mod.dep("modernnetworking")}+${common.mod.dep("modernnetworking_mc")}")!!
5658
modImplementation("net.fabricmc:fabric-language-kotlin:${common.mod.dep("fabric_kotlin")}")
59+
60+
modOptional("maven.modrinth:plasmo-voice", "fabric-${mod.commonDep("plasmo_mc", common.mod, minecraftVersion)}-${mod.commonDep("plasmo", common.mod)}", common.mod.prop("proximity_chat") == "plasmo")
61+
modOptional("maven.modrinth:simple-voice-chat", "fabric-$minecraftVersion-${mod.commonDep("voicechat", common.mod)}", common.mod.prop("proximity_chat") == "svc")
62+
63+
include("org.java-websocket:Java-WebSocket:${mod.commonDep("java_websocket", common.mod)}")
64+
include("com.squareup.okhttp3:okhttp:${mod.commonDep("okhttp", common.mod)}")
65+
include("com.github.jnr:jnr-ffi:${mod.commonDep("jnr", common.mod)}")
66+
67+
shadowBundle("xyz.bluspring.unitytranslate:UnityTranslateLib:${mod.commonDep("unitytranslatelib", common.mod)}")
68+
shadowBundle("xyz.bluspring.unitytranslate:UnityTranslateLib-natives-windows-amd64:${mod.commonDep("unitytranslatelib", common.mod)}")
69+
shadowBundle("xyz.bluspring.unitytranslate:UnityTranslateLib-natives-linux-amd64:${mod.commonDep("unitytranslatelib", common.mod)}")
5770
}
5871

5972
tasks.shadowJar {
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package xyz.bluspring.unitytranslate.fabric
2+
3+
import me.lucko.fabric.api.permissions.v0.Permissions
4+
import net.fabricmc.api.EnvType
5+
import net.fabricmc.loader.api.FabricLoader
6+
import net.fabricmc.loader.api.ModContainer
7+
import net.minecraft.world.entity.player.Player
8+
import xyz.bluspring.unitytranslate.PlatformProxy
9+
import xyz.bluspring.unitytranslate.UnityTranslate
10+
import java.nio.file.Path
11+
12+
class FabricPlatformProxy : PlatformProxy {
13+
val loader: FabricLoader = FabricLoader.getInstance()
14+
val container: ModContainer = loader.getModContainer(UnityTranslate.MOD_ID).orElseThrow()
15+
16+
override fun isModLoaded(id: String): Boolean {
17+
return this.loader.isModLoaded(id)
18+
}
19+
20+
override fun isClient(): Boolean {
21+
return this.loader.environmentType == EnvType.CLIENT
22+
}
23+
24+
override val modVersion: String
25+
get() = this.container.metadata.version.friendlyString
26+
27+
override val configDir: Path
28+
get() = this.loader.configDir
29+
30+
override val gameDir: Path
31+
get() = this.loader.gameDir
32+
33+
override val isDev: Boolean
34+
get() = this.loader.isDevelopmentEnvironment
35+
36+
override fun hasTranscriptPermission(player: Player): Boolean {
37+
return Permissions.check(player, "${UnityTranslate.MOD_ID}.request_translations")
38+
}
39+
}

src/main/kotlin/xyz/bluspring/unitytranslate/fabric/UnityTranslateFabric.kt renamed to fabric/src/main/kotlin/xyz/bluspring/unitytranslate/fabric/UnityTranslateFabric.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package xyz.bluspring.unitytranslate.fabric
22

3-
//? if fabric {
43
import net.fabricmc.api.ModInitializer
54
import xyz.bluspring.unitytranslate.UnityTranslate
65

@@ -13,4 +12,3 @@ class UnityTranslateFabric : ModInitializer {
1312
lateinit var instance: UnityTranslate
1413
}
1514
}
16-
//? }
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package xyz.bluspring.unitytranslate.fabric.client
2+
3+
import net.fabricmc.api.ClientModInitializer
4+
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents
5+
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents
6+
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper
7+
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents
8+
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback
9+
import xyz.bluspring.unitytranslate.client.UnityTranslateClient
10+
11+
class UnityTranslateFabricClient : ClientModInitializer {
12+
override fun onInitializeClient() {
13+
val instance = UnityTranslateClient()
14+
15+
for (key in UnityTranslateClient.keys) {
16+
KeyBindingHelper.registerKeyBinding(key)
17+
}
18+
19+
ClientTickEvents.END_CLIENT_TICK.register { client ->
20+
instance.clientTick(client)
21+
}
22+
23+
ClientLifecycleEvents.CLIENT_STOPPING.register { client ->
24+
instance.clientStopping()
25+
}
26+
27+
ClientPlayConnectionEvents.JOIN.register { _, _, _ ->
28+
instance.clientJoinWorld()
29+
}
30+
31+
HudRenderCallback.EVENT.register { guiGraphics, delta ->
32+
instance.clientRenderHud(guiGraphics, delta)
33+
}
34+
}
35+
}

src/main/kotlin/xyz/bluspring/unitytranslate/fabric/compat/modmenu/UTModMenuIntegration.kt renamed to fabric/src/main/kotlin/xyz/bluspring/unitytranslate/fabric/compat/modmenu/UTModMenuIntegration.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package xyz.bluspring.unitytranslate.fabric.compat.modmenu
22

3-
//? if fabric {
43
import com.terraformersmc.modmenu.api.ConfigScreenFactory
54
import com.terraformersmc.modmenu.api.ModMenuApi
65
import xyz.bluspring.unitytranslate.client.gui.UTConfigScreen
@@ -12,4 +11,3 @@ class UTModMenuIntegration : ModMenuApi {
1211
}
1312
}
1413
}
15-
//? }
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
xyz.bluspring.unitytranslate.fabric.FabricPlatformProxy

forge/build.gradle.kts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,20 @@ dependencies {
4747

4848
modImplementation("dev.nyon:KotlinLangForge:${common.mod.dep("kotlinlangforge")}-${common.mod.dep("kotlinlangforge_loader")}+forge")
4949
modImplementation("xyz.bluspring.modernnetworking:modernnetworking-forge:${common.mod.dep("modernnetworking")}+${common.mod.dep("modernnetworking_mc")}")!!
50+
51+
modOptional("maven.modrinth:plasmo-voice", "forge-${mod.commonDep("plasmo_mc", common.mod, minecraftVersion)}-${mod.commonDep("plasmo", common.mod)}", common.mod.prop("proximity_chat") == "plasmo")
52+
modOptional("maven.modrinth:simple-voice-chat", "forge-$minecraftVersion-${mod.commonDep("voicechat", common.mod)}", common.mod.prop("proximity_chat") == "svc")
53+
54+
minecraftRuntimeLibraries(shadowBundle("org.java-websocket:Java-WebSocket:${mod.commonDep("java_websocket", common.mod)}")!!)
55+
minecraftRuntimeLibraries(shadowBundle("com.squareup.okhttp3:okhttp:${mod.commonDep("okhttp", common.mod)}") {
56+
exclude("org.jetbrains")
57+
exclude("kotlin")
58+
})
59+
minecraftRuntimeLibraries(shadowBundle("com.github.jnr:jnr-ffi:${mod.commonDep("jnr", common.mod)}")!!)
60+
61+
shadowBundle("xyz.bluspring.unitytranslate:UnityTranslateLib:${mod.commonDep("unitytranslatelib", common.mod)}")
62+
shadowBundle("xyz.bluspring.unitytranslate:UnityTranslateLib-natives-windows-amd64:${mod.commonDep("unitytranslatelib", common.mod)}")
63+
shadowBundle("xyz.bluspring.unitytranslate:UnityTranslateLib-natives-linux-amd64:${mod.commonDep("unitytranslatelib", common.mod)}")
5064
}
5165

5266
loom {
@@ -71,7 +85,7 @@ tasks.processResources {
7185
"mod_description" to mod.prop("description"),
7286
"mod_authors" to mod.prop("authors"),
7387
"minecraft_version_range" to common.mod.prop("mc_dep_forgelike"),
74-
"neoforge_version" to common.mod.dep("neoforge"),
88+
"forge_version" to common.mod.dep("forge"),
7589
"cloth_config_version" to common.mod.dep("cloth_config"),
7690
"modernnetworking_version" to common.mod.dep("modernnetworking"),
7791
"kotlinlangforge_loader" to common.mod.dep("kotlinlangforge_loader"),

0 commit comments

Comments
 (0)