Skip to content

Commit 99e2a9c

Browse files
committed
EntryPoint.kt order loading things changed.
Signed-off-by: Pavel Erokhin (MairwunNx) <MairwunNx@gmail.com>
1 parent 4fc8464 commit 99e2a9c

File tree

1 file changed

+45
-28
lines changed
  • src/main/kotlin/com/mairwunnx/projectessentials/core

1 file changed

+45
-28
lines changed
Lines changed: 45 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,63 @@
1+
@file:Suppress("UNUSED_PARAMETER")
2+
13
package com.mairwunnx.projectessentials.core
24

35
import 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
68
import com.mairwunnx.projectessentials.core.api.v1.events.ModuleEventAPI.subscribeOn
7-
import com.mairwunnx.projectessentials.core.api.v1.events.forge.FMLCommonSetupEventData
89
import com.mairwunnx.projectessentials.core.api.v1.events.forge.ForgeEventType
910
import com.mairwunnx.projectessentials.core.api.v1.events.forge.InterModEnqueueEventData
1011
import com.mairwunnx.projectessentials.core.api.v1.events.forge.InterModProcessEventData
1112
import com.mairwunnx.projectessentials.core.api.v1.localization.LocalizationAPI
1213
import 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
1515
import com.mairwunnx.projectessentials.core.api.v1.providers.ProviderAPI
16+
import com.mairwunnx.projectessentials.core.api.v1.providersMarker
1617
import com.mairwunnx.projectessentials.core.impl.ModuleObject
1718
import com.mairwunnx.projectessentials.core.impl.commands.BackLocationCommand
1819
import com.mairwunnx.projectessentials.core.impl.commands.ConfigureEssentialsCommand
1920
import com.mairwunnx.projectessentials.core.impl.configurations.GeneralConfiguration
2021
import com.mairwunnx.projectessentials.core.impl.configurations.NativeAliasesConfiguration
2122
import com.mairwunnx.projectessentials.core.impl.events.EventBridge
2223
import net.minecraftforge.common.MinecraftForge.EVENT_BUS
24+
import net.minecraftforge.eventbus.api.SubscribeEvent
2325
import net.minecraftforge.fml.InterModComms
2426
import net.minecraftforge.fml.ModList
2527
import net.minecraftforge.fml.common.Mod
28+
import net.minecraftforge.fml.event.server.FMLServerAboutToStartEvent
2629
import org.apache.logging.log4j.LogManager
2730

2831
@Suppress("unused")
2932
@Mod("project_essentials_core")
3033
internal 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

Comments
 (0)