From d1598763853a1b87854ecfb647639c59c5183aea Mon Sep 17 00:00:00 2001 From: Scott Killen Date: Sun, 15 Nov 2015 17:06:25 -0500 Subject: [PATCH] Add an event hook to allow overriding of fuels recognized by vanilla fuel handling. --- .../tileentity/TileEntityFurnace.java.patch | 10 ++++++ .../event/ForgeEventFactory.java | 7 ++++ .../event/FuelBurnTimeEvent.java | 32 +++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 src/main/java/net/minecraftforge/event/FuelBurnTimeEvent.java 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