diff --git a/patches/minecraft/net/minecraft/item/crafting/FurnaceRecipes.java.patch b/patches/minecraft/net/minecraft/item/crafting/FurnaceRecipes.java.patch index 06a7035ad..70b88b926 100644 --- a/patches/minecraft/net/minecraft/item/crafting/FurnaceRecipes.java.patch +++ b/patches/minecraft/net/minecraft/item/crafting/FurnaceRecipes.java.patch @@ -1,14 +1,47 @@ --- before/net/minecraft/item/crafting/FurnaceRecipes.java +++ after/net/minecraft/item/crafting/FurnaceRecipes.java -@@ -121,6 +121,7 @@ +@@ -17,6 +17,7 @@ + private static final FurnaceRecipes SMELTING_BASE = new FurnaceRecipes(); + private final Map smeltingList = Maps.newHashMap(); + private final Map experienceList = Maps.newHashMap(); ++ private final Map cookTimeList = Maps.newHashMap(); + public static FurnaceRecipes instance() + { +@@ -114,15 +115,32 @@ + this.addSmelting(Item.getItemFromBlock(input), stack, experience); + } + ++ public void addSmeltingRecipeForBlock(Block input, ItemStack stack, float experience, int cookTime) ++ { ++ this.addSmelting(Item.getItemFromBlock(input), stack, experience, cookTime); ++ } ++ + public void addSmelting(Item input, ItemStack stack, float experience) + { + this.addSmeltingRecipe(new ItemStack(input, 1, 32767), stack, experience); + } + ++ public void addSmelting(Item input, ItemStack stack, float experience, int cookTime) ++ { ++ this.addSmeltingRecipe(new ItemStack(input, 1, 32767), stack, experience, cookTime); ++ } ++ public void addSmeltingRecipe(ItemStack input, ItemStack stack, float experience) { ++ this.addSmeltingRecipe(input, stack, experience, 200); ++ } ++ ++ public void addSmeltingRecipe(ItemStack input, ItemStack stack, float experience, int cookTime) ++ { + if (getSmeltingResult(input) != ItemStack.EMPTY) { net.minecraftforge.fml.common.FMLLog.log.info("Ignored smelting recipe with conflicting input: {} = {}", input, stack); return; } this.smeltingList.put(input, stack); this.experienceList.put(stack, experience); ++ this.cookTimeList.put(input, cookTime); } -@@ -151,6 +152,9 @@ + + public ItemStack getSmeltingResult(ItemStack stack) +@@ -151,6 +169,9 @@ public float getSmeltingExperience(ItemStack stack) { @@ -18,3 +51,22 @@ for (Entry entry : this.experienceList.entrySet()) { if (this.compareItemStacks(stack, entry.getKey())) +@@ -160,5 +181,18 @@ + } + + return 0.0F; ++ } ++ ++ public int getCookTime(ItemStack stack) ++ { ++ for (Entry entry : this.cookTimeList.entrySet()) ++ { ++ if (this.compareItemStacks(stack, entry.getKey())) ++ { ++ return entry.getValue(); ++ } ++ } ++ ++ return 200; + } + } diff --git a/patches/minecraft/net/minecraft/tileentity/TileEntityFurnace.java.patch b/patches/minecraft/net/minecraft/tileentity/TileEntityFurnace.java.patch index 545984e1c..65a57453c 100644 --- a/patches/minecraft/net/minecraft/tileentity/TileEntityFurnace.java.patch +++ b/patches/minecraft/net/minecraft/tileentity/TileEntityFurnace.java.patch @@ -37,6 +37,15 @@ } } } +@@ -252,7 +252,7 @@ + + public int getCookTime(ItemStack stack) + { +- return 200; ++ return FurnaceRecipes.instance().getCookTime(stack); + } + + private boolean canSmelt() @@ -281,11 +281,13 @@ { return false; diff --git a/src/main/java/net/minecraftforge/fml/common/registry/GameRegistry.java b/src/main/java/net/minecraftforge/fml/common/registry/GameRegistry.java index c6629aea4..901ad7e26 100644 --- a/src/main/java/net/minecraftforge/fml/common/registry/GameRegistry.java +++ b/src/main/java/net/minecraftforge/fml/common/registry/GameRegistry.java @@ -216,16 +216,31 @@ public static void addSmelting(Block input, @Nonnull ItemStack output, float xp) FurnaceRecipes.instance().addSmeltingRecipeForBlock(input, output, xp); } + public static void addSmelting(Block input, @Nonnull ItemStack output, float xp, int cookTime) + { + FurnaceRecipes.instance().addSmeltingRecipeForBlock(input, output, xp, cookTime); + } + public static void addSmelting(Item input, @Nonnull ItemStack output, float xp) { FurnaceRecipes.instance().addSmelting(input, output, xp); } + public static void addSmelting(Item input, @Nonnull ItemStack output, float xp, int cookTime) + { + FurnaceRecipes.instance().addSmelting(input, output, xp, cookTime); + } + public static void addSmelting(@Nonnull ItemStack input, @Nonnull ItemStack output, float xp) { FurnaceRecipes.instance().addSmeltingRecipe(input, output, xp); } + public static void addSmelting(@Nonnull ItemStack input, @Nonnull ItemStack output, float xp, int cookTime) + { + FurnaceRecipes.instance().addSmeltingRecipe(input, output, xp, cookTime); + } + @Deprecated //TODO: Remove in 1.13, Use ResourceLocation version. public static void registerTileEntity(Class tileEntityClass, String key) {