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.server.MinecraftServer; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.AddReloadListenerEvent; import net.minecraftforge.event.server.ServerStartedEvent; import net.minecraftforge.event.server.ServerStoppingEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.event.lifecycle.*; 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(ServerStartedEvent event) { server = event.getServer(); } private static void serverStopping(ServerStoppingEvent event) { server = null; } @Override public MinecraftServer getServer() { return server; } @Override public Player getClientPlayer() { return null; } @Override public Level 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 @OnlyIn(Dist.CLIENT) public Player getClientPlayer() { return Minecraft.getInstance().player; } @Override @OnlyIn(Dist.CLIENT) public Level 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) {} } }