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.Loader
import net.minecraftforge.fml.common.Mod import net.minecraftforge.fml.common.Mod
import net.minecraftforge.fml.common.Mod.EventHandler import net.minecraftforge.fml.common.Mod.EventHandler
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent import net.minecraftforge.fml.common.event.FMLConstructionEvent
/** /**
* @author shadowfacts * @author shadowfacts
@ -17,9 +17,9 @@ object Forgelin {
const val VERSION = "@VERSION@" const val VERSION = "@VERSION@"
@EventHandler @EventHandler
fun onPreInit(event: FMLPreInitializationEvent) { fun onPreInit(event: FMLConstructionEvent) {
Loader.instance().modList.forEach { 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 net.minecraftforge.fml.relauncher.Side
import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.LogManager
import java.util.EnumSet import java.util.EnumSet
import kotlin.reflect.full.companionObjectInstance
object ForgelinAutomaticEventSubscriber { object ForgelinAutomaticEventSubscriber {
private val DEFAULT_SUBSCRIPTION_SIDES = EnumSet.allOf(Side::class.java) 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) LOGGER.debug("Registering @EventBusSubscriber object for {} for mod {}", subscriber.className, mod.modId)
val subscriberInstance = Class.forName(subscriber.className, false, loader)?.kotlin?.objectInstance val subscriberClass = Class.forName(subscriber.className, false, loader)?.kotlin
if (subscriberInstance != null) { if (subscriberClass != null) {
MinecraftForge.EVENT_BUS.register(subscriberInstance) val subscriberInstance = subscriberClass.objectInstance ?: subscriberClass.companionObjectInstance
LOGGER.debug("Registered @EventBusSubscriber object {}", subscriber.className) if (subscriberInstance != null) {
MinecraftForge.EVENT_BUS.register(subscriberInstance)
LOGGER.debug("Registered @EventBusSubscriber object {}", subscriber.className)
}
} }
} catch (e: Throwable) { } catch (e: Throwable) {
LOGGER.error("An error occurred trying to load an @EventBusSubscriber object {} for modid {}", mod.modId, e) LOGGER.error("An error occurred trying to load an @EventBusSubscriber object {} for modid {}", mod.modId, e)