Register from construction and handle companion objects
This commit is contained in:
parent
0b51dc4a64
commit
0acdb6db36
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue