From 0acdb6db36a350fea8fda7b5b8679e5a8d4e627c Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Mon, 16 Apr 2018 20:43:26 +0200 Subject: [PATCH] Register from construction and handle companion objects --- src/main/kotlin/net/shadowfacts/forgelin/Forgelin.kt | 6 +++--- .../forgelin/ForgelinAutomaticEventSubscriber.kt | 12 ++++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/net/shadowfacts/forgelin/Forgelin.kt b/src/main/kotlin/net/shadowfacts/forgelin/Forgelin.kt index bd0b201..72ceb1d 100644 --- a/src/main/kotlin/net/shadowfacts/forgelin/Forgelin.kt +++ b/src/main/kotlin/net/shadowfacts/forgelin/Forgelin.kt @@ -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) } } } diff --git a/src/main/kotlin/net/shadowfacts/forgelin/ForgelinAutomaticEventSubscriber.kt b/src/main/kotlin/net/shadowfacts/forgelin/ForgelinAutomaticEventSubscriber.kt index 8aa1551..d616f26 100644 --- a/src/main/kotlin/net/shadowfacts/forgelin/ForgelinAutomaticEventSubscriber.kt +++ b/src/main/kotlin/net/shadowfacts/forgelin/ForgelinAutomaticEventSubscriber.kt @@ -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)