34 lines
1.4 KiB
Kotlin
34 lines
1.4 KiB
Kotlin
package net.shadowfacts.forgelin
|
|
|
|
import net.minecraftforge.fml.Logging.SCAN
|
|
import net.minecraftforge.fml.javafmlmod.FMLJavaModLanguageProvider
|
|
import net.minecraftforge.forgespi.language.ILifecycleEvent
|
|
import net.minecraftforge.forgespi.language.IModLanguageProvider
|
|
import net.minecraftforge.forgespi.language.ModFileScanData
|
|
import org.apache.logging.log4j.LogManager
|
|
import java.util.function.Consumer
|
|
import java.util.function.Supplier
|
|
import java.util.stream.Collectors
|
|
|
|
class FMLKotlinModLanguageProvider : IModLanguageProvider {
|
|
private val logger = LogManager.getLogger()
|
|
|
|
init {
|
|
logger.debug("Init FMLKotlinModLanguageProvider")
|
|
}
|
|
|
|
override fun name(): String = "kotlinfml"
|
|
|
|
override fun getFileVisitor(): Consumer<ModFileScanData> {
|
|
return Consumer { scanResult ->
|
|
val modTargetMap = scanResult.annotations.stream()
|
|
.filter { ad -> ad.annotationType == FMLJavaModLanguageProvider.MODANNOTATION }
|
|
.peek { ad -> logger.debug(SCAN, "Found @Mod class {} with id {}", ad.classType.className, ad.annotationData["value"]) }
|
|
.map { ad -> FMLKotlinModTarget(ad.classType.className, ad.annotationData["value"] as String) }
|
|
.collect(Collectors.toMap(java.util.function.Function<FMLKotlinModTarget, String> { it.modId }, java.util.function.Function.identity<FMLKotlinModTarget>()))
|
|
scanResult.addLanguageLoader(modTargetMap)
|
|
}
|
|
}
|
|
|
|
override fun <R : ILifecycleEvent<R>?> consumeLifecycleEvent(consumeEvent: Supplier<R>?) {}
|
|
} |