package dev.micle.totemofreviving; import dev.micle.totemofreviving.config.Config; import dev.micle.totemofreviving.data.DataGenerators; import dev.micle.totemofreviving.network.Network; import dev.micle.totemofreviving.setup.Registration; import net.minecraft.client.Minecraft; import net.minecraft.client.world.ClientWorld; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.MinecraftServer; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.AddReloadListenerEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.event.lifecycle.*; import net.minecraftforge.fml.event.server.FMLServerStartedEvent; import net.minecraftforge.fml.event.server.FMLServerStoppingEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; class SideProxy implements ISideProxy { private static MinecraftServer server = null; // Common setup SideProxy() { Registration.register(); Config.init(); Network.init(); IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); modEventBus.addListener(DataGenerators::gatherData); modEventBus.addListener(SideProxy::setup); modEventBus.addListener(SideProxy::imcEnqueue); modEventBus.addListener(SideProxy::imcProcess); MinecraftForge.EVENT_BUS.addListener(SideProxy::onAddReloadListeners); MinecraftForge.EVENT_BUS.addListener(SideProxy::serverStarted); MinecraftForge.EVENT_BUS.addListener(SideProxy::serverStopping); } private static void setup(FMLCommonSetupEvent event) {} private static void imcEnqueue(InterModEnqueueEvent event) {} private static void imcProcess(InterModProcessEvent event) {} private static void onAddReloadListeners(AddReloadListenerEvent event) {} private static void serverStarted(FMLServerStartedEvent event) { server = event.getServer(); } private static void serverStopping(FMLServerStoppingEvent event) { server = null; } @Override public MinecraftServer getServer() { return server; } @Override public PlayerEntity getClientPlayer() { return null; } @Override public ClientWorld getClientWorld() { return null; } // Client setup static class Client extends SideProxy { Client() { FMLJavaModLoadingContext.get().getModEventBus().addListener(Client::setup); FMLJavaModLoadingContext.get().getModEventBus().addListener(Client::postSetup); } private static void setup(FMLClientSetupEvent event) {} private static void postSetup(FMLLoadCompleteEvent event) {} @Override public PlayerEntity getClientPlayer() { return Minecraft.getInstance().player; } @Override public ClientWorld getClientWorld() { return Minecraft.getInstance().level; } } // Server setup static class Server extends SideProxy { Server() { FMLJavaModLoadingContext.get().getModEventBus().addListener(Server::setup); } private static void setup(FMLDedicatedServerSetupEvent event) {} } }