Skip to content
Original file line number Diff line number Diff line change
@@ -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<ItemStack, ItemStack> smeltingList = Maps.newHashMap();
private final Map<ItemStack, Float> experienceList = Maps.newHashMap();
+ private final Map<ItemStack, Integer> 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)
{
Expand All @@ -18,3 +51,22 @@
for (Entry<ItemStack, Float> entry : this.experienceList.entrySet())
{
if (this.compareItemStacks(stack, entry.getKey()))
@@ -160,5 +181,18 @@
}

return 0.0F;
+ }
+
+ public int getCookTime(ItemStack stack)
+ {
+ for (Entry<ItemStack, Integer> entry : this.cookTimeList.entrySet())
+ {
+ if (this.compareItemStacks(stack, entry.getKey()))
+ {
+ return entry.getValue();
+ }
+ }
+
+ return 200;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<? extends TileEntity> tileEntityClass, String key)
{
Expand Down