From 254d9bec80a7b008403cfc061016873bfeacf16b Mon Sep 17 00:00:00 2001 From: Nick Date: Sat, 9 Jan 2016 20:41:01 -0800 Subject: [PATCH] Prepare ICompatibility for phase based loading Some compat will need to be done at different loading phases. This should allow that to be handled fairly easily. --- .../java/WayofTime/bloodmagic/BloodMagic.java | 6 ++++- .../bloodmagic/compat/ICompatibility.java | 26 +++++++++++++++++-- .../jei/CompatibilityJustEnoughItems.java | 2 +- .../compat/waila/CompatibilityWaila.java | 5 ++-- .../bloodmagic/registry/ModCompatibility.java | 11 ++++---- 5 files changed, 39 insertions(+), 11 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/BloodMagic.java b/src/main/java/WayofTime/bloodmagic/BloodMagic.java index 6819c51a..b485d2d1 100644 --- a/src/main/java/WayofTime/bloodmagic/BloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/BloodMagic.java @@ -2,6 +2,7 @@ package WayofTime.bloodmagic; import java.io.File; +import WayofTime.bloodmagic.compat.ICompatibility; import lombok.Getter; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; @@ -66,6 +67,8 @@ public class BloodMagic ModItems.init(); ModPotions.init(); ModEntities.init(); + ModCompatibility.registerModCompat(); + ModCompatibility.loadCompat(ICompatibility.InitializationPhase.PRE_INIT); proxy.preInit(); } @@ -78,8 +81,8 @@ public class BloodMagic ModRecipes.init(); ModRituals.initRituals(); ModRituals.initImperfectRituals(); - ModCompatibility.registerModCompat(); ModArmourTrackers.init(); + ModCompatibility.loadCompat(ICompatibility.InitializationPhase.INIT); ConfigHandler.checkRituals(); NetworkRegistry.INSTANCE.registerGuiHandler(BloodMagic.instance, new GuiHandler()); @@ -90,6 +93,7 @@ public class BloodMagic public void postInit(FMLPostInitializationEvent event) { ModRecipes.addCompressionHandlers(); + ModCompatibility.loadCompat(ICompatibility.InitializationPhase.POST_INIT); proxy.postInit(); } diff --git a/src/main/java/WayofTime/bloodmagic/compat/ICompatibility.java b/src/main/java/WayofTime/bloodmagic/compat/ICompatibility.java index 1e6377de..e3c68aeb 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/ICompatibility.java +++ b/src/main/java/WayofTime/bloodmagic/compat/ICompatibility.java @@ -6,9 +6,13 @@ package WayofTime.bloodmagic.compat; public interface ICompatibility { /** - * Called after the given {@code modid} has been verified as loaded. + * Called during each initialization phase after the given {@link #getModId()} + * has been verified as loaded. + * + * @param phase + * - The load phase at which this method is being called. */ - void loadCompatibility(); + void loadCompatibility(InitializationPhase phase); /** * @return The {@code modid} of the mod we are adding compatibility for. @@ -24,4 +28,22 @@ public interface ICompatibility * @return If Compatibility should load. */ boolean enableCompat(); + + /** + * Represents a given mod initialization state. + */ + enum InitializationPhase { + /** + * Represents {@link net.minecraftforge.fml.common.event.FMLPreInitializationEvent} + */ + PRE_INIT, + /** + * Represents {@link net.minecraftforge.fml.common.event.FMLInitializationEvent} + */ + INIT, + /** + * Represents {@link net.minecraftforge.fml.common.event.FMLPostInitializationEvent} + */ + POST_INIT + } } diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/CompatibilityJustEnoughItems.java b/src/main/java/WayofTime/bloodmagic/compat/jei/CompatibilityJustEnoughItems.java index 5bfe66ee..dc95a10d 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/CompatibilityJustEnoughItems.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/CompatibilityJustEnoughItems.java @@ -5,7 +5,7 @@ import WayofTime.bloodmagic.compat.ICompatibility; public class CompatibilityJustEnoughItems implements ICompatibility { @Override - public void loadCompatibility() + public void loadCompatibility(InitializationPhase phase) { } diff --git a/src/main/java/WayofTime/bloodmagic/compat/waila/CompatibilityWaila.java b/src/main/java/WayofTime/bloodmagic/compat/waila/CompatibilityWaila.java index 1cf15f59..e517bb09 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/waila/CompatibilityWaila.java +++ b/src/main/java/WayofTime/bloodmagic/compat/waila/CompatibilityWaila.java @@ -6,9 +6,10 @@ import net.minecraftforge.fml.common.event.FMLInterModComms; public class CompatibilityWaila implements ICompatibility { @Override - public void loadCompatibility() + public void loadCompatibility(InitializationPhase phase) { - FMLInterModComms.sendMessage(getModId(), "register", "WayofTime.bloodmagic.compat.waila.WailaCallbackHandler.callbackRegister"); + if (phase == InitializationPhase.INIT) + FMLInterModComms.sendMessage(getModId(), "register", "WayofTime.bloodmagic.compat.waila.WailaCallbackHandler.callbackRegister"); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModCompatibility.java b/src/main/java/WayofTime/bloodmagic/registry/ModCompatibility.java index 857715bf..dd8d5a76 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModCompatibility.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModCompatibility.java @@ -15,11 +15,12 @@ public class ModCompatibility { compatibilities.add(new CompatibilityJustEnoughItems()); compatibilities.add(new CompatibilityWaila()); + } - for (ICompatibility compat : compatibilities) - { - if (compat.enableCompat() && Loader.isModLoaded(compat.getModId())) - compat.loadCompatibility(); - } + public static void loadCompat(ICompatibility.InitializationPhase phase) + { + for (ICompatibility compatibility : compatibilities) + if (Loader.isModLoaded(compatibility.getModId()) && compatibility.enableCompat()) + compatibility.loadCompatibility(phase); } }