1+ @file:Suppress(" UNUSED_PARAMETER" )
2+
13package com.mairwunnx.projectessentials.core
24
35import com.mairwunnx.projectessentials.core.api.v1.IMCLocalizationMessage
4- import com.mairwunnx.projectessentials.core.api.v1.commands.CommandProcessor
5- import com.mairwunnx.projectessentials.core.api.v1.configuration.ConfigurationProcessor
6+ import com.mairwunnx.projectessentials.core.api.v1.IMCProvidersMessage
7+ import com.mairwunnx.projectessentials.core.api.v1.configuration.ConfigurationAPI
68import com.mairwunnx.projectessentials.core.api.v1.events.ModuleEventAPI.subscribeOn
7- import com.mairwunnx.projectessentials.core.api.v1.events.forge.FMLCommonSetupEventData
89import com.mairwunnx.projectessentials.core.api.v1.events.forge.ForgeEventType
910import com.mairwunnx.projectessentials.core.api.v1.events.forge.InterModEnqueueEventData
1011import com.mairwunnx.projectessentials.core.api.v1.events.forge.InterModProcessEventData
1112import com.mairwunnx.projectessentials.core.api.v1.localization.LocalizationAPI
1213import com.mairwunnx.projectessentials.core.api.v1.localizationMarker
13- import com.mairwunnx.projectessentials.core.api.v1.module.ModuleProcessor
14- import com.mairwunnx.projectessentials.core.api.v1.processor.ProcessorAPI
14+ import com.mairwunnx.projectessentials.core.api.v1.module.ModuleAPI
1515import com.mairwunnx.projectessentials.core.api.v1.providers.ProviderAPI
16+ import com.mairwunnx.projectessentials.core.api.v1.providersMarker
1617import com.mairwunnx.projectessentials.core.impl.ModuleObject
1718import com.mairwunnx.projectessentials.core.impl.commands.BackLocationCommand
1819import com.mairwunnx.projectessentials.core.impl.commands.ConfigureEssentialsCommand
1920import com.mairwunnx.projectessentials.core.impl.configurations.GeneralConfiguration
2021import com.mairwunnx.projectessentials.core.impl.configurations.NativeAliasesConfiguration
2122import com.mairwunnx.projectessentials.core.impl.events.EventBridge
2223import net.minecraftforge.common.MinecraftForge.EVENT_BUS
24+ import net.minecraftforge.eventbus.api.SubscribeEvent
2325import net.minecraftforge.fml.InterModComms
2426import net.minecraftforge.fml.ModList
2527import net.minecraftforge.fml.common.Mod
28+ import net.minecraftforge.fml.event.server.FMLServerAboutToStartEvent
2629import org.apache.logging.log4j.LogManager
2730
2831@Suppress(" unused" )
2932@Mod(" project_essentials_core" )
3033internal class EntryPoint {
3134 private val logger = LogManager .getLogger()
3235
33- private val providers = listOf (
34- GeneralConfiguration ::class .java,
35- NativeAliasesConfiguration ::class .java,
36- ModuleObject ::class .java,
37- BackLocationCommand ::class .java,
38- ConfigureEssentialsCommand ::class .java
39- )
40-
41- private val processors = listOf (
42- ConfigurationProcessor ,
43- ModuleProcessor ,
44- CommandProcessor
45- )
46-
4736 init {
4837 EventBridge .initialize()
4938 EVENT_BUS .register(this )
5039 subscribeEvents()
51- providers.forEach(ProviderAPI ::addProvider)
5240 }
5341
54- private fun subscribeEvents () {
55- subscribeOn<FMLCommonSetupEventData >(
56- ForgeEventType .SetupEvent
57- ) {
58- processors.forEach(ProcessorAPI ::register)
59- }
42+ @SubscribeEvent
43+ fun onServerPreStart (event : FMLServerAboutToStartEvent ) {
44+ ConfigurationAPI .loadAll()
45+ ModuleAPI .initializeOrdered()
46+ }
6047
48+ private fun subscribeEvents () {
6149 subscribeOn<InterModEnqueueEventData >(
6250 ForgeEventType .EnqueueIMCEvent
6351 ) {
6452 sendLocalizationRequest()
65- ProcessorAPI .processProcessors ()
53+ sendProvidersRequest ()
6654 }
6755
6856 subscribeOn<InterModProcessEventData >(
6957 ForgeEventType .ProcessIMCEvent
7058 ) { event ->
7159 processLocalizationRequest(event)
72- ProcessorAPI .postProcessProcessors( )
60+ processProvidersRequest(event )
7361 }
7462 }
7563
@@ -86,6 +74,21 @@ internal class EntryPoint {
8674 }
8775 }
8876
77+ private fun sendProvidersRequest () {
78+ InterModComms .sendTo(
79+ " project_essentials_core" ,
80+ IMCProvidersMessage
81+ ) {
82+ fun () = listOf (
83+ GeneralConfiguration ::class .java,
84+ NativeAliasesConfiguration ::class .java,
85+ ModuleObject ::class .java,
86+ BackLocationCommand ::class .java,
87+ ConfigureEssentialsCommand ::class .java
88+ )
89+ }
90+ }
91+
8992 private fun processLocalizationRequest (event : InterModProcessEventData ) {
9093 event.event.getIMCStream { method ->
9194 method == IMCLocalizationMessage
@@ -100,4 +103,18 @@ internal class EntryPoint {
100103 }
101104 }
102105 }
106+
107+ private fun processProvidersRequest (event : InterModProcessEventData ) {
108+ event.event.getIMCStream { method ->
109+ method == IMCProvidersMessage
110+ }.also { stream ->
111+ stream.forEach { message ->
112+ message.getMessageSupplier< () -> List <Class <out Any >>>().get().also {
113+ logger.debug(
114+ providersMarker, " Providers got from ${message.senderModId} "
115+ ).run { it().forEach(ProviderAPI ::addProvider) }
116+ }
117+ }
118+ }
119+ }
103120}
0 commit comments