diff --git a/src/main/java/dev/micle/xptools/XpTools.java b/src/main/java/dev/micle/xptools/XpTools.java index 119c91b..257d91c 100644 --- a/src/main/java/dev/micle/xptools/XpTools.java +++ b/src/main/java/dev/micle/xptools/XpTools.java @@ -1,28 +1,30 @@ package dev.micle.xptools; import com.mojang.logging.LogUtils; -import net.minecraft.client.Minecraft; -import net.minecraft.world.item.CreativeModeTabs; -import net.minecraft.world.level.block.Blocks; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; -import net.minecraftforge.event.server.ServerStartingEvent; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.ModLoadingContext; +import dev.micle.xptools.proxy.IProxy; +import dev.micle.xptools.proxy.Proxy; +import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.config.ModConfig; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.registries.ForgeRegistries; import org.slf4j.Logger; @Mod(XpTools.MOD_ID) public class XpTools { public static final String MOD_ID = "xp_tools"; private static final Logger LOGGER = LogUtils.getLogger(); + private static FMLJavaModLoadingContext fmlJavaModLoadingContext; + private static IProxy proxy; - public XpTools() {} + public XpTools(FMLJavaModLoadingContext context) { + fmlJavaModLoadingContext = context; + + proxy = DistExecutor.safeRunForDist( + () -> Proxy.Client::new, + () -> Proxy.Server::new + ); + } + + public static FMLJavaModLoadingContext getFMLJavaModLoadingContext() { + return fmlJavaModLoadingContext; + } } diff --git a/src/main/java/dev/micle/xptools/proxy/IProxy.java b/src/main/java/dev/micle/xptools/proxy/IProxy.java new file mode 100644 index 0000000..c2e06bf --- /dev/null +++ b/src/main/java/dev/micle/xptools/proxy/IProxy.java @@ -0,0 +1,11 @@ +package dev.micle.xptools.proxy; + +import net.minecraft.server.MinecraftServer; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; + +public interface IProxy { + MinecraftServer getServer(); + Player getClientPlayer(); + Level getClientLevel(); +} diff --git a/src/main/java/dev/micle/xptools/proxy/Proxy.java b/src/main/java/dev/micle/xptools/proxy/Proxy.java new file mode 100644 index 0000000..1339e17 --- /dev/null +++ b/src/main/java/dev/micle/xptools/proxy/Proxy.java @@ -0,0 +1,97 @@ +package dev.micle.xptools.proxy; + +import dev.micle.xptools.XpTools; +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() { + // 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); + } + + 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) {} + } +}