From 5c013509e39692cd320edc20b2c2301774e5a140 Mon Sep 17 00:00:00 2001 From: Marcel Konrad Date: Fri, 26 Apr 2019 17:07:13 +0200 Subject: [PATCH] Add imc events to allow for other mods to expand the gui --- .../exopandora/worldhandler/WorldHandler.java | 40 ++++++++++++++----- .../worldhandler/gui/category/Category.java | 5 ++- 2 files changed, 33 insertions(+), 12 deletions(-) diff --git a/src/main/java/exopandora/worldhandler/WorldHandler.java b/src/main/java/exopandora/worldhandler/WorldHandler.java index 5df920a..6b6b602 100644 --- a/src/main/java/exopandora/worldhandler/WorldHandler.java +++ b/src/main/java/exopandora/worldhandler/WorldHandler.java @@ -1,9 +1,13 @@ package exopandora.worldhandler; +import java.util.Objects; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.lwjgl.glfw.GLFW; +import com.google.common.base.Predicates; + import exopandora.worldhandler.config.Config; import exopandora.worldhandler.gui.category.Category; import exopandora.worldhandler.gui.content.Content; @@ -14,7 +18,10 @@ import exopandora.worldhandler.util.UtilKeyBinding; import net.minecraft.client.Minecraft; import net.minecraft.client.settings.KeyBinding; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.DistExecutor; +import net.minecraftforge.fml.InterModComms; import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.common.Mod; @@ -41,35 +48,48 @@ public class WorldHandler public WorldHandler() { SIDEPROXY = DistExecutor.runForDist(() -> ClientProxy::new, () -> CommonProxy::new); - FMLJavaModLoadingContext.get().getModEventBus().addListener(this::commonSetup); - FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientSetup); - FMLJavaModLoadingContext.get().getModEventBus().addListener(this::loadComplete); - FMLJavaModLoadingContext.get().getModEventBus().addListener(Config::configLoad); - FMLJavaModLoadingContext.get().getModEventBus().addListener(Config::configReload); - ModLoadingContext.get().registerConfig(Type.CLIENT, Config.CLIENT_SPEC, Main.MODID + ".toml"); + IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); + modEventBus.addListener(this::commonSetup); + modEventBus.addListener(this::clientSetup); + modEventBus.addListener(this::loadComplete); MinecraftForge.EVENT_BUS.addListener(this::serverStarting); + ModLoadingContext.get().registerConfig(Type.CLIENT, Config.CLIENT_SPEC, Main.MODID + ".toml"); + modEventBus.register(Config.class); } - private void commonSetup(FMLCommonSetupEvent event) + @SubscribeEvent + public void commonSetup(FMLCommonSetupEvent event) { SIDEPROXY.setup(); } - private void clientSetup(FMLClientSetupEvent event) + @SubscribeEvent + public void clientSetup(FMLClientSetupEvent event) { USERNAME = Minecraft.getInstance().getSession().getUsername(); ClientRegistry.registerKeyBinding(KEY_WORLD_HANDLER); UtilKeyBinding.updatePosKeys(); } - private void loadComplete(FMLLoadCompleteEvent event) + @SubscribeEvent + public void loadComplete(FMLLoadCompleteEvent event) { Content.registerContents(); Category.registerCategories(); + InterModComms.getMessages(Main.MODID, Predicates.equalTo("register")) + .map(imc -> (Runnable) imc.getMessageSupplier().get()) + .forEach(Runnable::run); } - private void serverStarting(FMLServerStartingEvent event) + @SubscribeEvent + public void serverStarting(FMLServerStartingEvent event) { CommandHelper.registerCommands(event.getCommandDispatcher()); } + + public static void registerIMC(Runnable registrationEvent) + { + Objects.requireNonNull(registrationEvent); + InterModComms.sendTo(Main.MODID, "register", () -> registrationEvent); + } } \ No newline at end of file diff --git a/src/main/java/exopandora/worldhandler/gui/category/Category.java b/src/main/java/exopandora/worldhandler/gui/category/Category.java index 9898854..597c3a5 100644 --- a/src/main/java/exopandora/worldhandler/gui/category/Category.java +++ b/src/main/java/exopandora/worldhandler/gui/category/Category.java @@ -1,11 +1,12 @@ package exopandora.worldhandler.gui.category; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import javax.annotation.Nullable; +import com.google.common.collect.Lists; + import exopandora.worldhandler.Main; import exopandora.worldhandler.gui.content.Content; import exopandora.worldhandler.gui.content.Contents; @@ -36,7 +37,7 @@ public class Category extends ForgeRegistryEntry public Category(Content... contents) { - this.contents = Arrays.asList(contents); + this.contents = Lists.newArrayList(contents); } public Category add(Content content)