package dev.micle.xptools.proxy; import dev.micle.xptools.XpTools; import dev.micle.xptools.config.Config; import dev.micle.xptools.events.common.OnBlockBreakEventHandler; 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.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.*; public class Proxy implements IProxy { private static MinecraftServer server = null; // Common setup public Proxy() { Config.register(); // Register mod event bus listeners IEventBus modEventBus = XpTools.getFMLJavaModLoadingContext().getModEventBus(); modEventBus.addListener(Proxy::setup); modEventBus.addListener(Proxy::imcEnqueue); modEventBus.addListener(Proxy::imcProcess); // Register event bus listeners MinecraftForge.EVENT_BUS.addListener(Proxy::onAddReloadListeners); MinecraftForge.EVENT_BUS.addListener(Proxy::serverStarted); MinecraftForge.EVENT_BUS.addListener(Proxy::serverStopping); // Register event handlers MinecraftForge.EVENT_BUS.register(new OnBlockBreakEventHandler()); } 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 getClientLevel() { return null; } // Client setup public static class Client extends Proxy { public Client() { // Register mod event bus listeners IEventBus modEventBus = XpTools.getFMLJavaModLoadingContext().getModEventBus(); modEventBus.addListener(Client::setup); modEventBus.addListener(Client::postSetup); } private static void setup(FMLClientSetupEvent event) {} private static void postSetup(FMLLoadCompleteEvent event) {} @Override public Player getClientPlayer() { return Minecraft.getInstance().player; } @Override public Level getClientLevel() { return Minecraft.getInstance().level; } } // Server setup public static class Server extends Proxy { public Server() { // Register mod event bus listeners IEventBus modEventBus = XpTools.getFMLJavaModLoadingContext().getModEventBus(); modEventBus.addListener(Server::setup); } private static void setup(FMLDedicatedServerSetupEvent event) {} } }