From 3a26dbb56709fcd6427f6bb362b443e6198b64fd Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Fri, 26 Aug 2016 19:03:43 -0700 Subject: [PATCH] Move guide recipe registration to Mod mapping The guide's index after loading a world may not be the same as the guide's index at preInit. In the 1.10 version of GuideAPI, there is a `setMappingFunction(Function)` method that will clean this up. --- .../java/WayofTime/bloodmagic/BloodMagic.java | 11 ++++++----- .../bloodmagic/compat/ICompatibility.java | 8 +++++++- .../guideapi/CompatibilityGuideAPI.java | 19 +++++++++++++++++-- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/BloodMagic.java b/src/main/java/WayofTime/bloodmagic/BloodMagic.java index c5515795..2673ec71 100644 --- a/src/main/java/WayofTime/bloodmagic/BloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/BloodMagic.java @@ -11,11 +11,7 @@ import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.SidedProxy; -import net.minecraftforge.fml.common.event.FMLInitializationEvent; -import net.minecraftforge.fml.common.event.FMLInterModComms; -import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; -import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; -import net.minecraftforge.fml.common.event.FMLServerStartingEvent; +import net.minecraftforge.fml.common.event.*; import net.minecraftforge.fml.common.network.NetworkRegistry; import WayofTime.bloodmagic.annot.Handler; import WayofTime.bloodmagic.api.Constants; @@ -141,6 +137,11 @@ public class BloodMagic proxy.postInit(); } + @Mod.EventHandler + public void modMapping(FMLModIdMappingEvent event) { + ModCompatibility.loadCompat(ICompatibility.InitializationPhase.MAPPING); + } + @Mod.EventHandler public void serverStarting(FMLServerStartingEvent event) { diff --git a/src/main/java/WayofTime/bloodmagic/compat/ICompatibility.java b/src/main/java/WayofTime/bloodmagic/compat/ICompatibility.java index a69a052e..c1c75352 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/ICompatibility.java +++ b/src/main/java/WayofTime/bloodmagic/compat/ICompatibility.java @@ -48,6 +48,12 @@ public interface ICompatibility * Represents * {@link net.minecraftforge.fml.common.event.FMLPostInitializationEvent} */ - POST_INIT + POST_INIT, + /** + * Represents + * {@link net.minecraftforge.fml.common.event.FMLModIdMappingEvent} + */ + MAPPING, + ; } } diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/CompatibilityGuideAPI.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/CompatibilityGuideAPI.java index a841b177..138544cf 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/CompatibilityGuideAPI.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/CompatibilityGuideAPI.java @@ -3,14 +3,19 @@ package WayofTime.bloodmagic.compat.guideapi; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.CraftingManager; +import net.minecraft.item.crafting.IRecipe; import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import WayofTime.bloodmagic.compat.ICompatibility; import amerifrance.guideapi.api.GuideAPI; +import net.minecraftforge.oredict.ShapelessOreRecipe; public class CompatibilityGuideAPI implements ICompatibility { + private static IRecipe guideRecipe = null; + private static boolean worldFlag; @Override public void loadCompatibility(InitializationPhase phase) @@ -21,8 +26,6 @@ public class CompatibilityGuideAPI implements ICompatibility { GuideBloodMagic.initBook(); GameRegistry.register(GuideBloodMagic.guideBook); -// AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.BOOK), GuideAPI.getStackFromBook(GuideBloodMagic.guideBook), EnumAltarTier.ONE, 500, 2, 0)); - GameRegistry.addShapelessRecipe(GuideAPI.getStackFromBook(GuideBloodMagic.guideBook), new ItemStack(Items.BOOK), Blocks.GLASS, Items.FEATHER); if (FMLCommonHandler.instance().getSide() == Side.CLIENT) GuideAPI.setModel(GuideBloodMagic.guideBook); @@ -30,6 +33,7 @@ public class CompatibilityGuideAPI implements ICompatibility } case INIT: { + guideRecipe = new ShapelessOreRecipe(GuideAPI.getStackFromBook(GuideBloodMagic.guideBook), new ItemStack(Items.BOOK), Blocks.GLASS, Items.FEATHER); break; } case POST_INIT: @@ -38,6 +42,17 @@ public class CompatibilityGuideAPI implements ICompatibility GuideBloodMagic.initCategories(); break; } + case MAPPING: + { + if (!worldFlag) { + GameRegistry.addRecipe(guideRecipe); + worldFlag = true; + } else { + CraftingManager.getInstance().getRecipeList().remove(guideRecipe); + worldFlag = false; + } + break; + } } }