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.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)
{

View file

@ -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,
;
}
}

View file

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