Add imc events to allow for other mods to expand the gui

This commit is contained in:
Marcel Konrad
2019-04-26 17:07:13 +02:00
parent 13841429f7
commit 5c013509e3
2 changed files with 33 additions and 12 deletions

View File

@@ -1,9 +1,13 @@
package exopandora.worldhandler; package exopandora.worldhandler;
import java.util.Objects;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFW;
import com.google.common.base.Predicates;
import exopandora.worldhandler.config.Config; import exopandora.worldhandler.config.Config;
import exopandora.worldhandler.gui.category.Category; import exopandora.worldhandler.gui.category.Category;
import exopandora.worldhandler.gui.content.Content; import exopandora.worldhandler.gui.content.Content;
@@ -14,7 +18,10 @@ import exopandora.worldhandler.util.UtilKeyBinding;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.settings.KeyBinding; import net.minecraft.client.settings.KeyBinding;
import net.minecraftforge.common.MinecraftForge; 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.DistExecutor;
import net.minecraftforge.fml.InterModComms;
import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
@@ -41,35 +48,48 @@ public class WorldHandler
public WorldHandler() public WorldHandler()
{ {
SIDEPROXY = DistExecutor.runForDist(() -> ClientProxy::new, () -> CommonProxy::new); SIDEPROXY = DistExecutor.runForDist(() -> ClientProxy::new, () -> CommonProxy::new);
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::commonSetup); IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientSetup); modEventBus.addListener(this::commonSetup);
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::loadComplete); modEventBus.addListener(this::clientSetup);
FMLJavaModLoadingContext.get().getModEventBus().addListener(Config::configLoad); modEventBus.addListener(this::loadComplete);
FMLJavaModLoadingContext.get().getModEventBus().addListener(Config::configReload);
ModLoadingContext.get().registerConfig(Type.CLIENT, Config.CLIENT_SPEC, Main.MODID + ".toml");
MinecraftForge.EVENT_BUS.addListener(this::serverStarting); 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(); SIDEPROXY.setup();
} }
private void clientSetup(FMLClientSetupEvent event) @SubscribeEvent
public void clientSetup(FMLClientSetupEvent event)
{ {
USERNAME = Minecraft.getInstance().getSession().getUsername(); USERNAME = Minecraft.getInstance().getSession().getUsername();
ClientRegistry.registerKeyBinding(KEY_WORLD_HANDLER); ClientRegistry.registerKeyBinding(KEY_WORLD_HANDLER);
UtilKeyBinding.updatePosKeys(); UtilKeyBinding.updatePosKeys();
} }
private void loadComplete(FMLLoadCompleteEvent event) @SubscribeEvent
public void loadComplete(FMLLoadCompleteEvent event)
{ {
Content.registerContents(); Content.registerContents();
Category.registerCategories(); 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()); CommandHelper.registerCommands(event.getCommandDispatcher());
} }
public static void registerIMC(Runnable registrationEvent)
{
Objects.requireNonNull(registrationEvent);
InterModComms.sendTo(Main.MODID, "register", () -> registrationEvent);
}
} }

View File

@@ -1,11 +1,12 @@
package exopandora.worldhandler.gui.category; package exopandora.worldhandler.gui.category;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import com.google.common.collect.Lists;
import exopandora.worldhandler.Main; import exopandora.worldhandler.Main;
import exopandora.worldhandler.gui.content.Content; import exopandora.worldhandler.gui.content.Content;
import exopandora.worldhandler.gui.content.Contents; import exopandora.worldhandler.gui.content.Contents;
@@ -36,7 +37,7 @@ public class Category extends ForgeRegistryEntry<Category>
public Category(Content... contents) public Category(Content... contents)
{ {
this.contents = Arrays.asList(contents); this.contents = Lists.newArrayList(contents);
} }
public Category add(Content content) public Category add(Content content)