|
1 | 1 | package org.thinkingstudio.initialization.neoforge; |
2 | 2 |
|
3 | 3 | import com.iafenvoy.integration.entrypoint.EntryPointManager; |
4 | | -import net.neoforged.fml.loading.FMLLoader; |
| 4 | +import net.neoforged.bus.api.IEventBus; |
| 5 | +import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; |
| 6 | +import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; |
| 7 | +import net.neoforged.fml.event.lifecycle.FMLDedicatedServerSetupEvent; |
5 | 8 | import org.thinkingstudio.initialization.Initialization; |
6 | 9 | import net.neoforged.fml.common.Mod; |
7 | 10 | import org.thinkingstudio.initialization.api.ClientModInitializer; |
8 | 11 | import org.thinkingstudio.initialization.api.DedicatedServerModInitializer; |
9 | 12 | import org.thinkingstudio.initialization.EntrypointContexts; |
10 | 13 | import org.thinkingstudio.initialization.api.ModInitializer; |
| 14 | +import org.thinkingstudio.initialization.utils.ModEnv; |
| 15 | +import org.thinkingstudio.initialization.utils.ModEnvExecutor; |
11 | 16 |
|
12 | 17 | @Mod(Initialization.MOD_ID) |
13 | 18 | public final class InitializationNeoForge { |
14 | | - public InitializationNeoForge() { |
15 | | - EntryPointManager.getEntryPoints(EntrypointContexts.MAIN_INITIALIZER_KEY, ModInitializer.class).forEach(ModInitializer::onInitialize); |
16 | | - if (FMLLoader.getDist().isClient()) { |
17 | | - EntryPointManager.getEntryPoints(EntrypointContexts.CLIENT_INITIALIZER_KEY, ClientModInitializer.class).forEach(ClientModInitializer::onInitializeClient); |
18 | | - } else if (FMLLoader.getDist().isDedicatedServer()) { |
19 | | - EntryPointManager.getEntryPoints(EntrypointContexts.SERVER_INITIALIZER_KEY, DedicatedServerModInitializer.class).forEach(DedicatedServerModInitializer::onInitializeServer); |
20 | | - } |
| 19 | + public InitializationNeoForge(IEventBus modEventBus) { |
| 20 | + EntryPointManager.getEntryPoints(EntrypointContexts.MAIN_INITIALIZER_KEY, ModInitializer.class).forEach(modInitializer -> { |
| 21 | + modEventBus.addListener(FMLCommonSetupEvent.class, event -> event.enqueueWork(modInitializer::onInitialize)); |
| 22 | + }); |
| 23 | + ModEnvExecutor.runInEnv(ModEnv.CLIENT, () -> () -> { |
| 24 | + EntryPointManager.getEntryPoints(EntrypointContexts.CLIENT_INITIALIZER_KEY, ClientModInitializer.class).forEach(clientModInitializer -> { |
| 25 | + modEventBus.addListener(FMLClientSetupEvent.class, event -> event.enqueueWork(clientModInitializer::onInitializeClient)); |
| 26 | + }); |
| 27 | + }); |
| 28 | + ModEnvExecutor.runInEnv(ModEnv.SERVER, () -> () -> { |
| 29 | + EntryPointManager.getEntryPoints(EntrypointContexts.SERVER_INITIALIZER_KEY, DedicatedServerModInitializer.class).forEach(dedicatedServerModInitializer -> { |
| 30 | + modEventBus.addListener(FMLDedicatedServerSetupEvent.class, event -> event.enqueueWork(dedicatedServerModInitializer::onInitializeServer)); |
| 31 | + }); |
| 32 | + }); |
21 | 33 | } |
22 | 34 | } |
0 commit comments