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;
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);
}
}

View File

@@ -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<Category>
public Category(Content... contents)
{
this.contents = Arrays.asList(contents);
this.contents = Lists.newArrayList(contents);
}
public Category add(Content content)