Register from construction and handle companion objects

This commit is contained in:
gegy1000 2018-04-16 20:43:26 +02:00
parent 0b51dc4a64
commit 0acdb6db36
2 changed files with 11 additions and 7 deletions

View File

@ -4,7 +4,7 @@ import net.minecraftforge.fml.common.FMLCommonHandler
import net.minecraftforge.fml.common.Loader
import net.minecraftforge.fml.common.Mod
import net.minecraftforge.fml.common.Mod.EventHandler
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent
import net.minecraftforge.fml.common.event.FMLConstructionEvent
/**
* @author shadowfacts
@ -17,9 +17,9 @@ object Forgelin {
const val VERSION = "@VERSION@"
@EventHandler
fun onPreInit(event: FMLPreInitializationEvent) {
fun onPreInit(event: FMLConstructionEvent) {
Loader.instance().modList.forEach {
ForgelinAutomaticEventSubscriber.subscribeAutomatic(it, event.asmData, FMLCommonHandler.instance().side)
ForgelinAutomaticEventSubscriber.subscribeAutomatic(it, event.asmHarvestedData, FMLCommonHandler.instance().side)
}
}
}

View File

@ -11,6 +11,7 @@ import net.minecraftforge.fml.common.discovery.asm.ModAnnotation.EnumHolder
import net.minecraftforge.fml.relauncher.Side
import org.apache.logging.log4j.LogManager
import java.util.EnumSet
import kotlin.reflect.full.companionObjectInstance
object ForgelinAutomaticEventSubscriber {
private val DEFAULT_SUBSCRIPTION_SIDES = EnumSet.allOf(Side::class.java)
@ -40,10 +41,13 @@ object ForgelinAutomaticEventSubscriber {
LOGGER.debug("Registering @EventBusSubscriber object for {} for mod {}", subscriber.className, mod.modId)
val subscriberInstance = Class.forName(subscriber.className, false, loader)?.kotlin?.objectInstance
if (subscriberInstance != null) {
MinecraftForge.EVENT_BUS.register(subscriberInstance)
LOGGER.debug("Registered @EventBusSubscriber object {}", subscriber.className)
val subscriberClass = Class.forName(subscriber.className, false, loader)?.kotlin
if (subscriberClass != null) {
val subscriberInstance = subscriberClass.objectInstance ?: subscriberClass.companionObjectInstance
if (subscriberInstance != null) {
MinecraftForge.EVENT_BUS.register(subscriberInstance)
LOGGER.debug("Registered @EventBusSubscriber object {}", subscriber.className)
}
}
} catch (e: Throwable) {
LOGGER.error("An error occurred trying to load an @EventBusSubscriber object {} for modid {}", mod.modId, e)