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<Book, Void>)` method that will clean this up.
This commit is contained in:
Nicholas Ignoffo 2016-08-26 19:03:43 -07:00
parent ffeb0309a8
commit 3a26dbb567
3 changed files with 30 additions and 8 deletions

View file

@ -11,11 +11,7 @@ import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.*;
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.network.NetworkRegistry; import net.minecraftforge.fml.common.network.NetworkRegistry;
import WayofTime.bloodmagic.annot.Handler; import WayofTime.bloodmagic.annot.Handler;
import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.Constants;
@ -141,6 +137,11 @@ public class BloodMagic
proxy.postInit(); proxy.postInit();
} }
@Mod.EventHandler
public void modMapping(FMLModIdMappingEvent event) {
ModCompatibility.loadCompat(ICompatibility.InitializationPhase.MAPPING);
}
@Mod.EventHandler @Mod.EventHandler
public void serverStarting(FMLServerStartingEvent event) public void serverStarting(FMLServerStartingEvent event)
{ {

View file

@ -48,6 +48,12 @@ public interface ICompatibility
* Represents * Represents
* {@link net.minecraftforge.fml.common.event.FMLPostInitializationEvent} * {@link net.minecraftforge.fml.common.event.FMLPostInitializationEvent}
*/ */
POST_INIT POST_INIT,
/**
* Represents
* {@link net.minecraftforge.fml.common.event.FMLModIdMappingEvent}
*/
MAPPING,
;
} }
} }

View file

@ -3,14 +3,19 @@ package WayofTime.bloodmagic.compat.guideapi;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
import net.minecraft.init.Items; import net.minecraft.init.Items;
import net.minecraft.item.ItemStack; 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.FMLCommonHandler;
import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import WayofTime.bloodmagic.compat.ICompatibility; import WayofTime.bloodmagic.compat.ICompatibility;
import amerifrance.guideapi.api.GuideAPI; import amerifrance.guideapi.api.GuideAPI;
import net.minecraftforge.oredict.ShapelessOreRecipe;
public class CompatibilityGuideAPI implements ICompatibility public class CompatibilityGuideAPI implements ICompatibility
{ {
private static IRecipe guideRecipe = null;
private static boolean worldFlag;
@Override @Override
public void loadCompatibility(InitializationPhase phase) public void loadCompatibility(InitializationPhase phase)
@ -21,8 +26,6 @@ public class CompatibilityGuideAPI implements ICompatibility
{ {
GuideBloodMagic.initBook(); GuideBloodMagic.initBook();
GameRegistry.register(GuideBloodMagic.guideBook); 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) if (FMLCommonHandler.instance().getSide() == Side.CLIENT)
GuideAPI.setModel(GuideBloodMagic.guideBook); GuideAPI.setModel(GuideBloodMagic.guideBook);
@ -30,6 +33,7 @@ public class CompatibilityGuideAPI implements ICompatibility
} }
case INIT: case INIT:
{ {
guideRecipe = new ShapelessOreRecipe(GuideAPI.getStackFromBook(GuideBloodMagic.guideBook), new ItemStack(Items.BOOK), Blocks.GLASS, Items.FEATHER);
break; break;
} }
case POST_INIT: case POST_INIT:
@ -38,6 +42,17 @@ public class CompatibilityGuideAPI implements ICompatibility
GuideBloodMagic.initCategories(); GuideBloodMagic.initCategories();
break; break;
} }
case MAPPING:
{
if (!worldFlag) {
GameRegistry.addRecipe(guideRecipe);
worldFlag = true;
} else {
CraftingManager.getInstance().getRecipeList().remove(guideRecipe);
worldFlag = false;
}
break;
}
} }
} }