Greetings all,
For context, I had previously tried creating a fork of Terra Firma Craft, and wanted to modify the code to add more config options to create a more modular version that would be compatible with more mods, specifically world gen mods. However, I've since scrapped that idea because the features I want from TFC are a lot smaller and much, MUCH less invasive...
What I'm trying to do:
I've created my own version of the Firestarter from TFC. It works, I can load it in game, it has the right texture, I've even successfully coded it to light torches from the Realistic Torches Mod. Now, what I'd like to do is code it so that players must use the Firestarter (or the Flint and Steel, and likely some items from other mods that also start fires, i.e. the matchbox from RTM) to activate a vanilla furnace. In other words, instead of the furnace automatically starting as soon as players fill both slots in the furnace, I want the furnace to remain idle until the player comes along and lights it with a Firestarter or Flint and Steel, etc.
How to go about doing it?
So, there are a few leads I've found, but I'm wondering how many of these are doable, which is best, or if there's a better way that I don't know about.
1) Look for a Forge event that could detect when a furnace is about to start smelting. I looked through Jabelar's list of events on his blog and didn't see one. Someone on a different thread on the Forge forum mentioned something about a BlockUpdateEvent, but I can't find anything in the source code about that. There is a FuelBurnTimeEvent, but that appears to be deprecated.
2) Create a custom event and register it with the proper event bus. I've followed a few tutorials on creating new events, and I think I get the gist of it, but I'm unclear on the full scope of what custom events can do. Can I create an event that listens for when the vanilla furnace block is about to update?
3) Reflection. I haven't looked into this one very much. It's sort of a new concept to me, but while I was digging around through old threads, someone mentioned that this might be worth looking into. Is it viable?
4) Replace the vanilla furnace with a custom furnace. This is my last resort. I'm understand what this would entail - create a custom class that extends the vanilla furnace block, modify it as I desire, register the custom block, remove the crafting recipe for the vanilla furnace, then use one of the Forge events to listen for when a furnace is placed in the world through generation (like when a blacksmith is created in a village) and generate my custom furnace instead. If all else fails, I'm pretty sure I can get this to work, but this seems like the least efficient method, and I'm not sure it would conform with best practices. As MineMaarten pointed out in his video on events, what if another mod tries to do the same thing?
I would greatly appreciate any feedback/pointers that you have, or any uncovered tutorials I might have missed.