42 lines
1.7 KiB
Kotlin
42 lines
1.7 KiB
Kotlin
package fr.username404.snowygui.fabric
|
|
|
|
import com.mojang.blaze3d.vertex.PoseStack
|
|
import fr.username404.snowygui.EventSnowy
|
|
import fr.username404.snowygui.Snowy
|
|
import fr.username404.snowygui.gui.feature.ButtonImpl
|
|
import net.fabricmc.api.ClientModInitializer
|
|
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback
|
|
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback.EVENT
|
|
import net.fabricmc.loader.api.FabricLoader
|
|
import net.fabricmc.loader.launch.common.FabricLauncherBase
|
|
import kotlin.io.path.exists
|
|
import kotlin.io.path.isDirectory
|
|
import kotlin.io.path.listDirectoryEntries
|
|
import kotlin.io.path.pathString
|
|
|
|
class FabricInit: Snowy(), ClientModInitializer {
|
|
override fun onInitializeClient() {
|
|
atInit()
|
|
EVENT.register(
|
|
object: HudRenderCallback, EventSnowy {
|
|
override val type: String = "HudRender"
|
|
override fun onHudRender(matrixStack: PoseStack?, tickDelta: Float) = fire(matrixStack)
|
|
}
|
|
)
|
|
}
|
|
init {
|
|
val modsPaths = FabricLoader.getInstance().allMods.map {
|
|
it.getPath(FeaturePackage.replace('.', '/'))
|
|
}.filter { it.exists() && it.isDirectory() }
|
|
annotatedButtons = modsPaths.flatMap { buttonsDirectory ->
|
|
val classSet = mutableSetOf<Class<out ButtonImpl>>()
|
|
buttonsDirectory.run {
|
|
listDirectoryEntries("*.class").forEach { file ->
|
|
val foundClass = FabricLauncherBase.getClass(file.pathString.drop(1).replace('/', '.').removeSuffix(".class"))
|
|
if (foundClass.isValidForButtonCollection()) classSet.add(foundClass.asSubclass(ButtonImpl::class.java))
|
|
}
|
|
}
|
|
classSet
|
|
}.toSet()
|
|
}
|
|
} |