diff --git a/patches/minecraft/net/minecraft/tileentity/TileEntityFurnace.java.patch b/patches/minecraft/net/minecraft/tileentity/TileEntityFurnace.java.patch
index 3ff02a2b5a..022d08fdcf 100644
--- a/patches/minecraft/net/minecraft/tileentity/TileEntityFurnace.java.patch
+++ b/patches/minecraft/net/minecraft/tileentity/TileEntityFurnace.java.patch
@@ -32,3 +32,13 @@
}
--this.field_145957_n[0].field_77994_a;
+@@ -301,6 +304,9 @@
+ }
+ else
+ {
++ int moddedBurnTime = net.minecraftforge.event.ForgeEventFactory.getFuelBurnTime(p_145952_0_);
++ if (moddedBurnTime >= 0) return moddedBurnTime;
++
+ Item item = p_145952_0_.func_77973_b();
+
+ if (item instanceof ItemBlock && Block.func_149634_a(item) != Blocks.field_150350_a)
diff --git a/src/main/java/net/minecraftforge/event/ForgeEventFactory.java b/src/main/java/net/minecraftforge/event/ForgeEventFactory.java
index b948d63b37..a824825560 100644
--- a/src/main/java/net/minecraftforge/event/ForgeEventFactory.java
+++ b/src/main/java/net/minecraftforge/event/ForgeEventFactory.java
@@ -135,6 +135,13 @@ public class ForgeEventFactory
return event.list;
}
+ public static int getFuelBurnTime(ItemStack fuel)
+ {
+ FuelBurnTimeEvent event = new FuelBurnTimeEvent(fuel);
+ MinecraftForge.EVENT_BUS.post(event);
+ return event.getResult() == Result.DEFAULT ? -1 : event.burnTime;
+ }
+
public static int getMaxSpawnPackSize(EntityLiving entity)
{
LivingPackSizeEvent maxCanSpawnEvent = new LivingPackSizeEvent(entity);
diff --git a/src/main/java/net/minecraftforge/event/FuelBurnTimeEvent.java b/src/main/java/net/minecraftforge/event/FuelBurnTimeEvent.java
new file mode 100644
index 0000000000..8c253e07d8
--- /dev/null
+++ b/src/main/java/net/minecraftforge/event/FuelBurnTimeEvent.java
@@ -0,0 +1,32 @@
+package net.minecraftforge.event;
+
+import net.minecraft.item.ItemStack;
+import cpw.mods.fml.common.eventhandler.Event;
+import cpw.mods.fml.common.eventhandler.Event.HasResult;
+
+/**
+ * FuelBurnTimeEvent is fired whenever a furnace needs the burn time of a fuel.
+ * Normally, a registered {@link cpw.mods.fml.common.IFuelHandler} is preferred, but
+ * this is useful in the rare situation where IFuelHandler is not effective.
+ *
+ * {@link Result#DEFAULT} allows the normal fuel handling code to proceed.
+ * {@link Result#ALLOW} or {@link Result#DENY} uses the value of {@link #burnTime}
+ * for the given {@link fuel}, bypassing both vanilla and IFuelHandler determinations.
+ *
+ * {@link #fuel} contains the potential fuel.
+ * {@link #burnTime} the results if set by an event handler.
+ *
+ * This event are fired on the {@link MinecraftForge#EVENT_BUS}.
+ **/
+@HasResult
+@Deprecated //Remove in 1.8
+public class FuelBurnTimeEvent extends Event
+{
+ public final ItemStack fuel;
+ public int burnTime;
+
+ public FuelBurnTimeEvent(ItemStack fuel)
+ {
+ this.fuel = fuel;
+ }
+}
\ No newline at end of file