From 1c24600bbbe1c3f64dc3fddb1ca65afd029a0b40 Mon Sep 17 00:00:00 2001 From: LexManos Date: Sat, 24 Jun 2017 15:34:09 -0700 Subject: [PATCH] Reload client recipe book after loading modded recipes. --- .../client/util/RecipeBookClient.java.patch | 17 +++++++++++++++++ .../common/crafting/CraftingHelper.java | 2 ++ .../fml/client/FMLClientHandler.java | 7 +++++++ .../fml/common/FMLCommonHandler.java | 3 +++ .../fml/common/IFMLSidedHandler.java | 2 ++ 5 files changed, 31 insertions(+) create mode 100644 patches/minecraft/net/minecraft/client/util/RecipeBookClient.java.patch diff --git a/patches/minecraft/net/minecraft/client/util/RecipeBookClient.java.patch b/patches/minecraft/net/minecraft/client/util/RecipeBookClient.java.patch new file mode 100644 index 0000000000..883654d351 --- /dev/null +++ b/patches/minecraft/net/minecraft/client/util/RecipeBookClient.java.patch @@ -0,0 +1,17 @@ +--- ../src-base/minecraft/net/minecraft/client/util/RecipeBookClient.java ++++ ../src-work/minecraft/net/minecraft/client/util/RecipeBookClient.java +@@ -54,6 +54,14 @@ + + static + { ++ rebuildTable(); ++ } ++ ++ public static void rebuildTable() ++ { ++ field_194086_e.clear(); ++ field_194087_f.clear(); ++ + Table table = HashBasedTable.create(); + + for (IRecipe irecipe : CraftingManager.field_193380_a) diff --git a/src/main/java/net/minecraftforge/common/crafting/CraftingHelper.java b/src/main/java/net/minecraftforge/common/crafting/CraftingHelper.java index 5205eea963..ec00158c73 100644 --- a/src/main/java/net/minecraftforge/common/crafting/CraftingHelper.java +++ b/src/main/java/net/minecraftforge/common/crafting/CraftingHelper.java @@ -67,6 +67,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.JsonUtils; import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.FMLLog; import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.ModContainer; @@ -611,6 +612,7 @@ public class CraftingHelper { Loader.instance().getActiveModList().forEach((mod) -> loadRecipes(mod)); Loader.instance().setActiveModContainer(null); //reg.freeze(); + FMLCommonHandler.instance().resetClientRecipeBook(); } private static void loadFactories(ModContainer mod) diff --git a/src/main/java/net/minecraftforge/fml/client/FMLClientHandler.java b/src/main/java/net/minecraftforge/fml/client/FMLClientHandler.java index 2a2e2e1833..632c1ade3d 100644 --- a/src/main/java/net/minecraftforge/fml/client/FMLClientHandler.java +++ b/src/main/java/net/minecraftforge/fml/client/FMLClientHandler.java @@ -56,6 +56,7 @@ import net.minecraft.client.resources.LegacyV2Adapter; import net.minecraft.client.resources.SimpleReloadableResourceManager; import net.minecraft.client.resources.data.MetadataSerializer; import net.minecraft.client.resources.data.PackMetadataSection; +import net.minecraft.client.util.RecipeBookClient; import net.minecraft.crash.CrashReport; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.launchwrapper.Launch; @@ -1096,4 +1097,10 @@ public class FMLClientHandler implements IFMLSidedHandler { return SplashProgress.isDisplayVSyncForced; } + + @Override + public void resetClientRecipeBook() + { + RecipeBookClient.rebuildTable(); + } } diff --git a/src/main/java/net/minecraftforge/fml/common/FMLCommonHandler.java b/src/main/java/net/minecraftforge/fml/common/FMLCommonHandler.java index db614fd410..a331901ff5 100644 --- a/src/main/java/net/minecraftforge/fml/common/FMLCommonHandler.java +++ b/src/main/java/net/minecraftforge/fml/common/FMLCommonHandler.java @@ -771,4 +771,7 @@ public class FMLCommonHandler } public boolean isDisplayVSyncForced() { return sidedDelegate.isDisplayVSyncForced(); } + public void resetClientRecipeBook() { + this.sidedDelegate.resetClientRecipeBook(); + } } diff --git a/src/main/java/net/minecraftforge/fml/common/IFMLSidedHandler.java b/src/main/java/net/minecraftforge/fml/common/IFMLSidedHandler.java index 28126cf6dd..fa31c65fb9 100644 --- a/src/main/java/net/minecraftforge/fml/common/IFMLSidedHandler.java +++ b/src/main/java/net/minecraftforge/fml/common/IFMLSidedHandler.java @@ -84,4 +84,6 @@ public interface IFMLSidedHandler CompoundDataFixer getDataFixer(); boolean isDisplayVSyncForced(); + + default void resetClientRecipeBook(){} }