Skip to content

Commit b2f11c8

Browse files
committed
Module discover by reflection
1 parent 39c8ee5 commit b2f11c8

File tree

6 files changed

+37
-6
lines changed

6 files changed

+37
-6
lines changed

common/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ dependencies {
2323
modImplementation("net.fabricmc:fabric-loader:$fabricLoaderVersion")
2424
// Add dependencies on the required Kotlin modules.
2525
modImplementation("net.fabricmc:fabric-language-kotlin:$fabricKotlinVersion")
26+
implementation("org.reflections:reflections:0.10.2")
2627
implementation(annotationProcessor("io.github.llamalad7:mixinextras-common:$mixinExtrasVersion")!!)
2728
}
2829

common/src/main/kotlin/com/lambda/Lambda.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.google.gson.Gson
44
import com.google.gson.GsonBuilder
55
import com.lambda.config.serializer.BlockPosSerializer
66
import com.lambda.config.serializer.BlockSerializer
7+
import com.lambda.module.ModuleRegistry
78
import com.lambda.module.modules.BoringModule
89
import net.minecraft.block.Block
910
import net.minecraft.client.MinecraftClient
@@ -26,7 +27,9 @@ object Lambda {
2627
.create()
2728

2829
init {
30+
// ToDo: Why do i have to call these?
2931
BoringModule
32+
ModuleRegistry
3033

3134
// listener<KeyPressEvent> {
3235
// if (it.key != GLFW.GLFW_KEY_Z) {

common/src/main/kotlin/com/lambda/module/Module.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,6 @@ abstract class Module(
2525
private val keybind by keybindSetting
2626

2727
init {
28-
// unsafeListener<ClientEvent.ConfigLoaded>(alwaysListen = true) { event ->
29-
// if (event.configuration != ModuleConfig) return@unsafeListener
30-
//
31-
// isEnabled = isEnabledSetting.value
32-
// }
33-
3428
listener<KeyPressEvent>(alwaysListen = true) { event ->
3529
if (event.key == keybind.key) {
3630
toggle()
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.lambda.module
2+
3+
import com.lambda.event.events.ClientEvent
4+
import com.lambda.event.listener.UnsafeListener.Companion.unsafeListener
5+
import org.reflections.Reflections
6+
import org.reflections.scanners.SubTypesScanner
7+
import org.reflections.util.ClasspathHelper
8+
import org.reflections.util.ConfigurationBuilder
9+
10+
object ModuleRegistry {
11+
private val modules = mutableSetOf<Module>()
12+
13+
init {
14+
unsafeListener<ClientEvent.Startup> {
15+
Reflections(
16+
ConfigurationBuilder()
17+
.setUrls(ClasspathHelper.forPackage("com.lambda.module.modules"))
18+
.setScanners(SubTypesScanner()) // ToDo: Deprecated, use Scanners.SubTypes instead
19+
).getSubTypesOf(Module::class.java).forEach { moduleClass ->
20+
moduleClass.declaredFields.find {
21+
it.name == "INSTANCE"
22+
}?.apply {
23+
isAccessible = true
24+
(get(null) as? Module)?.let { module ->
25+
modules.add(module)
26+
}
27+
}
28+
}
29+
}
30+
}
31+
}

fabric/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ dependencies {
3030
modImplementation("net.fabricmc:fabric-loader:$fabricLoaderVersion")
3131
modImplementation("net.fabricmc.fabric-api:fabric-api:$fabricApiVersion")
3232
modImplementation("net.fabricmc:fabric-language-kotlin:$fabricKotlinVersion")
33+
implementation("org.reflections:reflections:0.10.2")
3334
}
3435

3536
tasks {

forge/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ dependencies {
4444
}
4545
implementation(annotationProcessor("io.github.llamalad7:mixinextras-common:$mixinExtrasVersion")!!)
4646
implementation(include("io.github.llamalad7:mixinextras-forge:$mixinExtrasVersion")!!)
47+
implementation("org.reflections:reflections:0.10.2")
4748
}
4849

4950
tasks {

0 commit comments

Comments
 (0)